Carcleo 4 Denunciar post Postado Agosto 1, 2012 Pessoal. Estou fazendo uma query e guardar o resultado dela dentro de um array assim: $produto_afins_string = "select id_produto_afim from produtos_afins where id_produto=".$_GET["id_produtos"]; $produto_afins=$conexao->query($produto_afins_string); $produto_afins_array = $produto_afins->fetch_array(); Porem, o fetch array esta retornando apenas um resultado e imprimi a consulta e joguei direto no banco(front) e deram 3 resuçtados. Preciso aqui ter esse vetor para usar uma pesquisa com in_array dentro de um while. O que esta errado? Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Agosto 1, 2012 falto um while ae rapaz xD ou um fetch all http://php.net/manual/en/book.pdo.php Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 primeira vez que uso fetch-array. Normalmente uso fetch_row pensei que por ser um array trazia tudo Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Agosto 1, 2012 fetch_row também só trás uma linha por vez. Ao invés de fetch_array, recomendo usar fetch_assoc. fetch_array é fetch_row + fetch_assoc, vai retornar um array numérico e um array associativo. Não me lembro se isso é feito usando referências, se não, só duplica os dados. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 Num ta dando certo error_reporting(E_ALL); $produto_afins_string = "select id_produto_afim from produtos_afins where id_produto=".$_GET["id_produtos"]; $produto_afins=$conexao->query($produto_afins_string); $produto_afins_array = $produto_afins->fetch_all(); print "<pre>"; print_r($produto_afins_array); echo "<select style='width:300px;height:150px;' id='produtos_afins_alt_produtos' name='produtos_afins_alt_produtos[]' multiple='multiple'>"; while(list($id_produtos, $nome_produtos)=$produto->fetch_row()) { if (in_array($id_produtos,$produto_afins_array)) {$selecionado= "selected='selected'";} else {$selecionado= "";} echo "<option value='$id_produtos' $selecionado />$nome_produtos</option>"; } echo "</select>"; Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Agosto 1, 2012 ta usando errado o while.. faz assim while($row == $produto_afins->fetch_all()) $r[] = $row; var_dump($r); mas ae num lembro se é "==" ou "=" Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 O problema agora é outro. O fetch_all retorna isso: Array ( [0] => Array ( [0] => 5 ) [1] => Array ( [0] => 1 ) [2] => Array ( [0] => 2 ) ) Meu while esta sendo feito assim: if (in_array($id_produtos,$produto_afins_array)) {$selecionado= "selected='selected'";} else {$selecionado= "";} o in_arry não esta achando o valor por ser uma array multipla. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Agosto 1, 2012 me lembro se isso é feito usando referências, se não, só duplica os dados. Só duplica mesmo. Um foreach na row e lá se vai seu "sistema" de associação automática de dados/colunas. o in_arry não esta achando o valor por ser uma array multipla. Tente usar array_search() Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 hum? mas como seria? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Agosto 1, 2012 mas ae num lembro se é "==" ou "=" é "=", referente a atribuição. Passe o código final, pois acho que há um erro no código. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 error_reporting(E_ALL); $produto_afins_string = "select id_produto_afim from produtos_afins where id_produto=".$_GET["id_produtos"]; $produto_afins=$conexao->query($produto_afins_string); $produto_afins_array = $produto_afins->fetch_all(); print "<pre>"; print_r($produto_afins_array); echo "<select style='width:300px;height:150px;' id='produtos_afins_alt_produtos' name='produtos_afins_alt_produtos[]' multiple='multiple'>"; while(list($id_produtos, $nome_produtos)=$produto->fetch_row()) { if (in_array($id_produtos,$produto_afins_array)) {$selecionado= "selected='selected'";} else {$selecionado= "";} echo "<option value='$id_produtos' $selecionado />$nome_produtos</option>"; } echo "</select>"; Nem in_array nm array_search acham Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Agosto 1, 2012 De onde vem a variável $produto? Você pode resolver facilmente o problema do nível da matriz, realizando uma iteração sobre ele e criando um novo vetor; foreach($produto_afins_array AS $row) { $produtosSelecionados[] = $row[0]; } Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 $produtos vem do while acima dele que traz as ids de todos sos produtos que há na tabela produtos. mas a ideia é selecionar, na select option apenas as options cujo value é igual a um dos ids guardados no vetor $produto_afins_array Tentei assim: foreach($produto_afins_array as $produto_afim) { if ($produto_afim[0]==$id_produtos) { $selecionado= "selected='selected'"; } else {$selecionado= "";} } Tambem não deu certo. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 1, 2012 Assim deu certo: $produto_afins_string = "select id_produto_afim from produtos_afins where id_produto=".$_GET["id_produtos"]; $produto_afins=$conexao->query($produto_afins_string); $produto_afins_array = $produto_afins->fetch_all(); $array_filtro = array(); foreach($produto_afins_array as $produto_afim=>$value3) { array_push($array_filtro,$value3[0]); } echo "<select style='width:300px;height:150px;' id='produtos_afins_alt_produtos' name='produtos_afins_alt_produtos[]' multiple='multiple'>"; while(list($id_produtos, $nome_produtos)=$produto->fetch_row()) { if (in_array($id_produtos,$array_filtro)) {$selecionado= "selected='selected'";} else {$selecionado= "";} echo "<option value='$id_produtos' $selecionado />$nome_produtos</option>"; } echo "</select>"; Eu criei uma nova array apenas com os indices que me interessava. Dai o array_in funcionou. VALEU Compartilhar este post Link para o post Compartilhar em outros sites