spacedb 0 Denunciar post Postado Julho 30, 2010 Seguinte galera, beleza? Então tipo, eu tenho uma ficha técnica e essa ficha técnica está associada a uma categoria. Quero listar todas as fichas técnicas dessa categoria através de um formulário com select à partir do evento onchange... Só que não to conseguindo, alguém poderia me ajudar? Obrigado! Index.php - Aqui eu estou listando todas as categorias dentro do select. <form> <?php require 'config.php'; $result = mysql_query("SELECT * FROM fs_categoria"); echo "<select name=\"categoria\" onchange=\"showUser(this.value)\">"; while($row = mysql_fetch_array($result)) { echo "<option value='" . $row['nomeCategoria'] . "'>" . $row['nomeCategoria'] . "</option>"; } echo "</select>"; ?> </form> Pagina de consulta - PHP - Aqui eu gostaria de listar as fichas técnicas de acordo com a categoria escolhida pelo usuário. <?php $q=$_GET["q"]; require 'config.php'; $sql="SELECT * FROM fs_ficha_tecnica WHERE nomeCategoria = '".$q."'"; $result = mysql_query($sql); echo "<table border='1'> <tr> <th>Nome fantasia</th> <th>Contrato</th> <th>Categoria</th> <th>Segmento</th> <th>Telefone</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['nomeFantasia'] . "</td>"; echo "<td>" . $row['contratoFt'] . "</td>"; echo "<td>" . $row['nomeCategoria'] . "</td>"; echo "<td>" . $row['nomeSegmento'] . "</td>"; echo "<td>" . $row['tel1'] . "</td>"; echo "</tr>"; } echo "</table>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 30, 2010 como ta sua função "showUser" ta usando algum framework de javascript para o ajax? Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 30, 2010 Oi Fabio, desculpe na verdade isso ficou um tanto confuso! A função JS não existe mais, eu usei um script que encontrei no google com essa função mas não deu certo, eu deveria ter mudado! Mas o lance é, eu não sei nada de onchange.. nem quero que seja ajax! Só preciso que funcione, de alguma forma eu preciso que essa variavel $q=$_GET["q"]; Se refira ao Value="" do Select, e eu acho que falta também um query string, mas também sou leigo nisso.. Fiquei até 4h da manhã ontem e não consegui resolver o problema.. :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 30, 2010 Mude aqui para: <form> <?php require 'config.php'; $result = mysql_query("SELECT * FROM fs_categoria"); echo "<select name=\"categoria\" onchange=\"window.location='index.php?categoria='+this.value\">"; while($row = mysql_fetch_array($result)) { echo "<option value='" . $row['idCategoria'] . "'>" . $row['nomeCategoria'] . "</option>"; } echo "</select>"; ?> </form> Mude aqui para: <?php $sSelectedCat=$_GET["categoria"]; require 'config.php'; $sql="SELECT * FROM fs_ficha_tecnica WHERE idCategoria = '".$sSelectedCat."'"; $result = mysql_query($sql); echo "<table border='1'> <tr> <th>Nome fantasia</th> <th>Contrato</th> <th>Categoria</th> <th>Segmento</th> <th>Telefone</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['nomeFantasia'] . "</td>"; echo "<td>" . $row['contratoFt'] . "</td>"; echo "<td>" . $row['nomeCategoria'] . "</td>"; echo "<td>" . $row['nomeSegmento'] . "</td>"; echo "<td>" . $row['tel1'] . "</td>"; echo "</tr>"; } echo "</table>"; ?> Acho que isso já resolve seu problema. Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 30, 2010 Oi Maykonn, solução mais simples que eu imaginava! eheheh aparentemente é isso mesmo! Mas deu o seguinte erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Projeto_final\getft.php on line 19 A linha 19 é essa: while($row = mysql_fetch_array($result)) Código completo já com as modificações: <?php $sSelectedCat=$_GET["categoria"]; require 'config.php'; $sql="SELECT * FROM fs_ficha_tecnica WHERE idCategoria = '".$sSelectedCat."'"; $result = mysql_query($sql); echo "<table border='1'> <tr> <th>Nome fantasia</th> <th>Contrato</th> <th>Categoria</th> <th>Segmento</th> <th>Telefone</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['nomeFantasia'] . "</td>"; echo "<td>" . $row['contratoFt'] . "</td>"; echo "<td>" . $row['nomeCategoria'] . "</td>"; echo "<td>" . $row['nomeSegmento'] . "</td>"; echo "<td>" . $row['tel1'] . "</td>"; echo "</tr>"; } echo "</table>"; ?> Eu mudei o location do primeiro arquivo também pra getft.php? e index.php? e da na mesma.. echo "<select name=\"categoria\" onchange=\"window.location='getft.php?categoria='+this.value\">"; Mudei também nos 2 arquivos a tupla idCategoria para idCat, mas mesmo assim continua o mesmo erro. É possível ver na URL que ele está pegando o idCat, a conexão com o banco está normal! MUITO OBRIGADO! Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 30, 2010 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Projeto_final\getft.php on line 19 Ou a $_GET está indo errada, ou a query não está retornando nenhum resultado. O nome do campo de id é idCategoria mesmo? printa isso: $sql="SELECT * FROM fs_ficha_tecnica WHERE idCategoria = '".$sSelectedCat."'"; Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 30, 2010 Eu já mudei idCategoria para idCat que é o correto, da pra ver no URL que está pegando o id da categoria certinho, porém continua o mesmo erro! Acho que o problema está no $_GET mesmo, acrescentei tbm no method do form tanto get como post e também da na mesma... Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 30, 2010 Isso aqui retorna oque? print $iTotal = mysql_num_rows($result); Faça um if verificando se $iTotal > 0 e então só faça o while caso a condição seja verdadeira. Caso contrário escreva, exemplo: "Nenhum registro encontrado". Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 30, 2010 Muito obrigado pela força, já resolvi o problema!! Faltava a chave estrangeira idCat da tabela fs_categoria na tabela fs_ficha_tecnica, A variavel da consulta tbm tava errada, tava $sql mas deveria ser $result... Valeuuuuuuuuuuuu :clap: Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 30, 2010 :joia: Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 31, 2010 Só mais uma dúvida, deu tudo certo e tal.. Mas quando eu clico por exemplo na categoria "Salão de festas", as fichas dos salões são exibidas. Porém o select retorna para a primeira categoria da lista que é "Cerimonial social". Alguém saberia me dizer um método ou algum eventos simples pra exibir sempre a opção escolhida pelo usuário? Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 31, 2010 Além desse lance de voltar sempre pro primeiro resultado ainda tem um outro problema que acabei de perceber, o primeiro resultado da lista nunca entra mesmo clicando várias vezes. Testei deixar o primeiro espaço em branco mas sei lá, pode ser só uma questão de estética mas não ficou legal pq o select sempre volta a ficar branco! Será que tem alguma solução pra isso? Talvez um elseif no meio do select resolveria? Como eu poderia fazer isso? Brigado! Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 31, 2010 Só mais uma dúvida, deu tudo certo e tal.. Mas quando eu clico por exemplo na categoria "Salão de festas", as fichas dos salões são exibidas. Porém o select retorna para a primeira categoria da lista que é "Cerimonial social". Alguém saberia me dizer um método ou algum eventos simples pra exibir sempre a opção escolhida pelo usuário? Abraços. Boa tarde spacedb, vamos lá: <form> <?php require 'config.php'; $result = mysql_query("SELECT * FROM fs_categoria"); echo "<select name=\"categoria\" onchange=\"window.location='index.php?categoria='+this.value\">"; while($row = mysql_fetch_array($result)) { if($sSelectedCat == $row['idCategoria']) echo "<option value='" . $row['idCategoria'] . "' selected>" . $row['nomeCategoria'] . "</option>"; else echo "<option value='" . $row['idCategoria'] . "'>" . $row['nomeCategoria'] . "</option>"; } echo "</select>"; ?> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 31, 2010 Além desse lance de voltar sempre pro primeiro resultado ainda tem um outro problema que acabei de perceber, o primeiro resultado da lista nunca entra mesmo clicando várias vezes. Testei deixar o primeiro espaço em branco mas sei lá, pode ser só uma questão de estética mas não ficou legal pq o select sempre volta a ficar branco! Será que tem alguma solução pra isso? Talvez um elseif no meio do select resolveria? Como eu poderia fazer isso? Brigado! Isso acontece porque o primeiro resultado já está selecionado, portanto se clicar nele novamente não ocorrerá o evento onChange.Para resolver isso trocar onChange pelo evento onClick. Ou, você pode colocar como primeira option <option>Selecione</option> e então fazer o while. Compartilhar este post Link para o post Compartilhar em outros sites
spacedb 0 Denunciar post Postado Julho 31, 2010 Massa Maykonn, salvou minha vida novamente! :joia: Fiquei confuso aqui no inicio mas foi pq a variavel $sSelectedCat tava declarada no outro arquivo daí ñ tava funcionando, mas daí eu mudei a variavel para este arquivo e funcionou beleza!! Mais uma vez, muito obrigado!! Eu sabia que era só fazer um if-else, só ñ sabia como! ehehehehhe Valeu mesmo!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Julho 31, 2010 Massa Maykonn, salvou minha vida novamente! :joia: Fiquei confuso aqui no inicio mas foi pq a variavel $sSelectedCat tava declarada no outro arquivo daí ñ tava funcionando, mas daí eu mudei a variavel para este arquivo e funcionou beleza!! Mais uma vez, muito obrigado!! Eu sabia que era só fazer um if-else, só ñ sabia como! ehehehehhe Valeu mesmo!!!!! Compartilhar este post Link para o post Compartilhar em outros sites