Jump to content


Photo

[Resolvido] Array Bi-Dimensional


  • Faça o login para participar
3 replies to this topic

#1 Heero Maxwell

Heero Maxwell

    Heavy Metal is The Law!

  • Usuários
  • 235 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 07/06/2010, 12:43

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.
Todos aqueles que me virem vão morrer. Estas foram as ordens que recebi. Todos aqueles que no campo de batalha estiverem estão com suas vidas em minhas mãos. Eu sou Heero Maxwell, o "Deus da Morte" em pessoa.
Todos aqueles que me virem vão morrer. Estas foram as ordens que recebi.

#2 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 07/06/2010, 16:53

Qual erro está acontecendo?
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#3 Heero Maxwell

Heero Maxwell

    Heavy Metal is The Law!

  • Usuários
  • 235 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 07/06/2010, 17:13

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'];
Todos aqueles que me virem vão morrer. Estas foram as ordens que recebi. Todos aqueles que no campo de batalha estiverem estão com suas vidas em minhas mãos. Eu sou Heero Maxwell, o "Deus da Morte" em pessoa.
Todos aqueles que me virem vão morrer. Estas foram as ordens que recebi.

#4 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 07/06/2010, 18:14

(y)
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq