Jump to content


Heero Maxwell's Content

There have been 3 items by Heero Maxwell (Search limited from 29/03/2023)


Ordernar por                Order  

#1000081 [Resolvido] Array Bi-Dimensional

Posted by Heero Maxwell on 07/06/2010, 17:13 in PHP

Erro não da nenhum porém mostrava tudo misturado os valores, consegui achar uma forma de fazer:

$query = "SELECT id_estoque,categoria_estoque,produto_estoque,quantidade_estoque FROM estoque";
$result = mysql_query($query) or die (mysql_error());
while ($record = mysql_fetch_array($result)) {

   $produtos[$record['categoria_estoque']][] = array($record['produto_estoque'],$record['quantidade_estoque']);
   $produtos_busca[] = $record['produto_estoque'];
   }
   print_r($produtos);
   echo "<br>";
   echo "<br>";
   print_r($produtos_busca);
   echo "<br>";
   echo "<br>";
   echo $produtos['Acessórios Para Oxigenoterapia'][0][0].$produtos['Acessórios Para Oxigenoterapia'][0][1];
   echo "<br>";
   echo "<br>";

$bancoDeDados = array("Umidificador", "Cânula Nasal", "Kit P/ Inalação Infantil", "Yellow", "Brown");

$query = "SELECT id_estoque,categoria_estoque,produto_estoque,quantidade_estoque FROM estoque";
$result = mysql_query($query) or die (mysql_error());
while ($record = mysql_fetch_array($result)) {

   $produtos[$record['produto_estoque']][] = $record['produto_estoque'];
   $produtos[$record['produto_estoque']][] = $record['categoria_estoque'];
   $produtos[$record['produto_estoque']][] = $record['quantidade_estoque'];
}

function in_multi_array($needle, $haystack)
 {
  foreach($haystack as $pos => $val)
  {
   if (is_array($val))
   {
    if (in_multi_array($needle, $val))
     return 1;
   } else
    if ($val == $needle)
     return 1;
  }
 }
  foreach ($produtos_busca as $teste) {
 if (in_multi_array($teste, $bancoDeDados))
  echo "<input name=\"colors[]\" type=\"text\" value=\"".$produtos[$teste][2]."\" size=2><input name=\"colors[]\" type=\"checkbox\" value=\"$color\" CHECKED>".$produtos[$teste][0]."<br>";
 else
  echo "<input name=\"colors[]\" type=\"text\" size=2><input name=\"colors[]\" type=\"checkbox\" value=\"$color\">".$produtos[$teste][0]."<br>";

}

Aparentemente está funcionando como eu quero.

$produtos[$record['produto_estoque']][] = $record['produto_estoque'];
$produtos[$record['produto_estoque']][] = $record['categoria_estoque'];



#1000057 [Resolvido] Array Bi-Dimensional

Posted by Heero Maxwell on 07/06/2010, 12:43 in PHP

Pessoal, estou tendo uma certa dúvida e não consigo resolver ela.

$bancoDeDados = array("Red", "Blue", "Green", "Yellow", "Brown");

$valoreGravados = array("Red" => array(
                     "color" => "Red",
                     "qtd" => "2"),
                  "Blue" => array(
                     "qtd" => "Blue"),
                  "Green" => array(
                     "qtd" => "3")
                   );

 function in_multi_array($needle, $haystack)
 {
  foreach($haystack as $pos => $val)
  {
   if (is_array($val))
   {
    if (in_multi_array($needle, $val))
     return 1;
   } else
    if ($val == $needle)
     return 1;
  }
 }
  foreach ($bancoDeDados as $teste) {
 if (in_multi_array($teste, $valoreGravados))
  echo "". $valoreGravados[$teste]['qtd'] ."<br>";
 else
  echo "FALSE <br>\n";

}

O que eu preciso:
No meu sistema, eu terei alguns campos do tipo checkbox, para marcar por exemplo os produtos, porém junto dos produtos, eu preciso colocar a quantidade de cada produto. Desta forma, eu terei um campo de input do tipo text para escrever a quantidade e terei o checkbox para marcar se o produto foi vendido ou não.

Bom, somente com os checkbox é tranquilo, basta fazer produto[] como nome e posso unir todos os valores e criar um array comum, porém o que eu preciso é que os que foram selecionados possam ser mostrados como checked caso precise alterar algo depois. Eu queria fazer um array bi-dimensional da seguinte forma:
Nome do produto -> categoria -> quantidade
Por exemplo: O item é o carro Gol, o qual será o nome de um array, e dentro do array gol, terei a categoria que ele se encontra por exemplo vermelho e a quantidade, 2.
Fazer este array manualmente é sem problemas, porém eu não estou conseguindo fazer de forma dinâmica puxando os valores do banco de dados, pois tenho tudo cadastrado, seria apenas mostrar para o usuário selecionar.

Basicamente, como criar este array direto do banco de dados?

$valoreGravados = array("Red" => array(
                     "color" => "Red",
                     "qtd" => "2"),
                  "Blue" => array(
                     "color" => "Blue",
                     "qtd" => "1"),
                  "Green" => array(
                     "color" => "Green",
                     "qtd" => "3")
                   );

Localizei o seguinte código na internet porém não consegui adaptar o mesmo para o que eu preciso:
$sql = mysql_query("SELECT id, nome FROM cliente");

while( $rs = mysql_fetch_assoc($sql) )
{
        $sql2 = mysql_query("SELECT id_compra, id_cliente, compra FROM compras WHERE id_cliente=" . $rs['id']);
        
        $compras = array();
                                
        while( $rs2 = mysql_fetch_assoc($sql2) )
        {
                $compras[] = $rs2;
        }                                       

        $rs['compras'] = $compras;

        $result[] = $rs;
}

print_r($result);


Grato, tenho uma certa urgência, procurei muito sobre criar arrays mas não achei nada como sendo com mais de 1 valor ou array dentro de array, apenas este acima.



#970411 Dúvida Neste Script

Posted by Heero Maxwell on 10/06/2009, 14:09 in PHP

function primos($x) {
	(int)$flag = 0;
	for((int)$i = 2; $i < $x; $i++) {
		$resultado = $x % $i;

		if($resultado == 0) {
			$a = 'Este número não é primo';
			$flag = 1;
		}
	}

	if($flag == 0) {
		$a = 'Este número é primo';
	}
	return $a;
}


echo primos(2);

Gostaria de saber uma explicação nas seguintes linhas:

$resultado = $x % $i;
e
(int)$flag = 0;

No caso, quero passar isto para uma função no VBA, e achei ela bem limpa e simples, no VBA fiz uma mais "maior", mas queria entender certinho a lógica desta no PHP.




IPB Skin By Virteq