alexsauer 0 Denunciar post Postado Junho 21, 2005 Olá... Estou iniciando em php e gostaria que me ajudassem nesnte problema. Tenho um combo e gostaria que os valores deste correspondessem ao local onde uma consulta será efetuada... só que, como não sei trabalhar com variáveis, estou com um problema... abaixo os códigos dos arquivos: combo <form method="post" action="floridas_consulta.php"> <select name="mes"> <option value="maio">maio</option> <option value="junho">junho</option> </select> <input type="submit" value="buscar" /> </form> PHP [*] [*]<? [*]include("../conecta.php"); [*]$mes = $_POST['mes']; [*]$consulta = mysql_query("SELECT * FROM floridas WHERE '$mes' LIKE 'x' ORDER BY 'familia'"); [*]while($dados = mysql_fetch_array($consulta)){ [*] $campo1 = $dados["familia"]; [*] $campo2 = $dados["nome_cientifico"]; [*] $campo3 = $dados["nome_popular"]; [*] $campo4 = $dados["id"]; [*]$consulta2 = mysql_query("SELECT * FROM lista_especies WHERE id=$campo4"); [*]while($dados2 = mysql_fetch_array($consulta2)){ [*] $campo5 = $dados2["familia"]; [*] $campo6 = $dados2["nome_cientifico"]; [*] $campo7 = $dados2["nome_popular"]; [*]echo " [*]<table class=\"table\"> [*]<tr> [*]<td class=\"td1\">$campo5</td> [*]<td class=\"td2\"><a class=\"spp\" href=\"../exibe/exibe_descricao.php?id=$campo4\">$campo6</a></td> [*]<td class=\"td3\">$campo7</td> [*]</tr> [*]</table> [*]"; }} [*]?> [*] Deve ser fácil, mas não para mim.. hehe Aguardo... Compartilhar este post Link para o post Compartilhar em outros sites
rsddaros 0 Denunciar post Postado Junho 21, 2005 Não entendi sua duvida seja mais especifico!!! você está com duvida em manipular a variavel??? ou oq??? Posta ae que se eu souber te falo! Ate+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Exato.. eu não sei manipular a variável... PHP [*]# $mes = $_POST['mes']; [*]# $consulta = mysql_query("SELECT * FROM floridas WHERE '$mes' LIKE 'x' ORDER BY 'familia'"); Quero que o formulário forneça dados pra variável $mes, para ela ser utilizada em no WHERE da consulta... Só não sei se é o FORM q não está bem estruturado, e não passa os valores corretamente, ou a manipulação da variável que não está certa... Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 21, 2005 Ai amigo tenta assim: PHP [*]<? [*]//====================================================================// [*]//Conecta ao BD [*]include "../conecta.php"; [*] [*]//====================================================================// [*]//Recolhe dados do formulário [*]$mes = $_POST["mes"]; [*] [*]//====================================================================// [*]//Faz primeira consulta [*]$consulta = mysql_query("SELECT * FROM floridas WHERE mes = '$mes' ORDER BY familia"); [*] [*]while($dados = mysql_fetch_array($consulta)){ [*]$familia1 = $dados["familia"]; [*]$cientifico1 = $dados["nome_cientifico"]; [*]$popular1 = $dados["nome_popular"]; [*]$id = $dados["id"]; [*] [*]//====================================================================// [*]//Faz segunda consulta [*]$consulta2 = mysql_query("SELECT * FROM lista_especies WHERE id = '$id'"); [*] [*]$dados2 = mysql_fetch_array($consulta2); [*]$familia2 = $dados2["familia"]; [*]$cientifico2 = $dados2["nome_cientifico"]; [*]$popular2 = $dados2["nome_popular"]; [*] [*]//====================================================================// [*]//Exibe os dados [*]?> [*]<table class="table"> [*]<tr> [*]<td class="td1"><?=$familia2?></td> [*]<td class="td2"><a class="spp" href="../exibe/exibe_descricao.php?id=<?=$id?>"><?=$cientifico2?></a></td> [*]<td class="td3"><?=$popular2?></td> [*]</tr> [*]</table> [*]<? [*]} [*]//====================================================================// [*]//Fecha a conexão [*]mysql_close($conexao); [*]?> Erros: Erro na linha 4: $mes = $_POST['mes']; Tava com apóstrofo na variavel ao invez de aspas duplas PHP [*]$variavel = "Teste"; [*]echo $variavel; // imprime teste [*]echo "$variavel"; // imprime teste [*]echo '$variavel'; // imprime $variavel Ou seja ele estava imprimindo mes não o valor dele. Erro na linha 5:$consulta = mysql_query("SELECT * FROM floridas WHERE '$mes' LIKE 'x' ORDER BY 'familia'"); Ai cara você fez mó gororoba aqui, no WHERE você deve (WHERE campo = '$valordocampo') ou (WHERE campo Like '%$palavra%') Quando você quer buscar algo para trazer o resultado puro, utilize a primeira forma, a segunda é mais para sistema de busca, aonde você digita a palavra e ele traz o resultado. Exemplo: se coloco para buscar a letra "a" PHP [*]$consulta = mysql_query("SELECT * FROM floridas WHERE campo LIKE '%a%' ORDER BY familia"); Ele vai pegar tudo que contenha a letra a nele, sozinha ou incluido na frase. Agora se coloco da outra forma PHP [*]$consulta = mysql_query("SELECT * FROM floridas WHERE campo = 'a' ORDER BY familia"); A frase pode ter 500 as, mas ela não retorna nada, apenas valor absoluto. Se tiver escrito uma frase neste campo, você pode digitar metade dela exatamente como está mas ela não encontra nada, ja do outro jeito se você digita uma letra ele ja retorna. Nesta linha tem um erro tb no order by, ele não precisa de apóstrofo, apóstrofo serão utilizados apenas para valores, e ali não seria um valor e sim um campo. Erro na linha 6 e 12: Dois whiles Afinal, o primeiro vai fazer o loop de todos desejados. Após trazer o resultado do primeiro loop ele ja vai fazer a segunda consulta. Depois ele vai trazer o segundo resultado que também ja vai fazer a segunda consulta. Por isso não tem necessidade, sem falar que eu não sei se isso iria dar algum erro grave no script. Erro na linha 11: $consulta2 = mysql_query("SELECT * FROM lista_especies WHERE id=$campo4"); A mesma coisa que falei, campo sem apóstrofos, valor com apóstrofo. Obs da linha 16 a 25: Resposta minha de um outro tópico Uma dica que sempre dou para quem se mata nos echo como no seu formulário la em cima!!! Não se mata colocando muitos echos assim. PHP [*]echo "<h1>Cadastramento de busca para PortalMasters</h1>"; [*]echo "<form action='inserir_busca.php' method='post'>"; [*]echo "Nome:<input name='nome' type='text' size=20><br>"; [*]echo "Descrição:<br> <textarea type='text' name='dados' rows=10 rols=60></textarea><br>"; [*]echo "<input type='submit' value='Enviar'>"; [*]echo "<hr><br>"; Se for um código html de no mínimo 120 linhas se tá ferrado cara. Sempre que quiser utilizar html no php basta fechar a tag php, e quando quiser utilizar php de novo reabre a tag. ex: PHP [*]<? // abri a tag para inserir o código php [*]$dados = mysql_query("SELECT * FROM usuario"); [*] [*]while ($hp = mysql_fetch_array($dados)){ [*]$nome = $hp["nome"]; [*]$sobrenome = $hp["sobrenome"]; [*] [*]?> // Fechei a tag php para inserir código html [*] [*]<!-- Sempre que quiser inserir uma variavel neste modo tem duas formas de fazer isso: --> [*] [*]<table width="256" border="0"> [*]<tr> [*]<td width="98">Nome:</td> [*]<td width="148"><? echo "$nome";?></td> [*] [*]<!-- 1ª Forma: Repare que aqui eu reabri a tag php, depois coloquei [*]o echo, para imprimir a variavel e fechei de novo, pode repara que é uma [*]variavel completa finalizando com ponto e virgula --> [*] [*]</tr> [*]<tr> [*]<td>Sobrenome</td> [*]<td><?=$sobrenome?></td> [*] [*]<!-- 2ª Forma: Está é na minha opinião a melhor opção, aqui eu reabri a [*]tag php, coloquei o sinal de = que da uma função de echo, ou seja, imprime a [*]variavel e fechei de novo, sem necessidade de aspas, ponto e virgula nem nada [*]do genero --> [*] [*]</tr> [*]</table> [*]<? // Abri novamente para voltar a mecher com php e para fechar a chave do while [*]} [*]?> Pode ver, é bem simples. Sem falar que da para editar direto no dreamweaver, frontpage e etc. Erro sem linha: Faltou o mysql_close Se você não adicionar esta linha no final de cada conexão com o BD os dados vão dar varios loops no server fazendo ele sobrecarregar, até chegar a um ponto que seu script vai atrapalhar a execução do mesmo (Resultado: Vai tomá bronca do dono, que vai pedir para deletar ou modificar o script, isso se ele não apagar o script por conta dele ou deletar sua conta). --------------------------------- Pronto cara flw ai, espero ter ajudado Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Ok... mt legal poder contar com vcs!! Mas tem uma coisa: PHP [*]$consulta = mysql_query("SELECT * FROM floridas WHERE mes = '$mes' ORDER BY id"); O esquema acima não é bem o que eu quero... pelo menos eu acho que não... estrutura do DB Há uma coluna ID, onde está numerado de 1 a 1000. Ao lado, há as colunas com os meses do ano... Por exemplo, quando uma espécie floresce em JANEIRO e FEVEREIRO eu marco um "x" nessas colunas, de acordo com a linha da espécie... Então eu preciso fazer algo como akela gororoba de antes: PHP [*]$consulta = mysql_query("SELECT * FROM floridas WHERE '$mes' LIKE 'x' ORDER BY 'familia'"); Porque a FORM vai me passar o valor pra variável $mes, e ela deve corresponder à coluna a ser pesquisada. Ao mesmo tempo, somente as espécies marcadas com "x" devem ser exibidas... Será que fui claro!??!?! Talvez seja problema na estruturação da tabela, mas não consigo pensar em outra forma de fazer... Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Deixa eu ve se entendi.. você quer o resultado filtrado pelo mes, e as linhas que estajam marcadas com x... se for isto faz assim $consulta = mysql_query("SELECT * FROM floridas WHERE mes='$mes' and CAMPO='x' ORDER BY 'familia' DESC"); O campo vermelho faz a filtragem por mes que recebera o valor... No campo azul você coloca o nome da coluna que recebe o x... Qualquer duvida posta Adailton <{POST_SNAPBACK}> Axo q toh boiando nessa lógica... $consulta = mysql_query("SELECT * FROM floridas WHERE (o que isso respresenta se eu não tenho nenhum campo no data DB igual a mes?)='$mes' and CAMPO='x' ORDER BY 'familia' DESC"); E porque não usar LIKE 'x'... o meu problema é em selecionar a coluna a ser pesquisada.. depois que a variável define a coluna, eu acho que o LIKE 'x' funciona... ESTRUTURA DO BATA BASE id JANEIRO FEVEREIRO MARÇO ABRIL1 x x - - 2 - - x x 3 - x x - A estrutura é essa, e a variável eu quero que detrmine o mes... Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 OK Adailton... não tenke c disculpa nada... afinal, c alguém deve fazê-lo sou eu, por estar tomando o vosso tempo... Mas ainda enfrento problemas: O FORM ESTÁ ASSIM (POR FAVOR VERIFIQUEM SE ELE PASSA OS VALORES CORRETAMENTE) <form method="get" action="floridas_consulta.php"> <select name="mes"> <option value="maio">maio</option> <option value="junho">junho</option> </select> <input type="submit" value="buscar" /> </form> O PHP TAH ASSIM: PHP [*] [*]<? [*]//====================================================================// [*] [*]include "../conecta.php"; [*] [*]//====================================================================// [*] [*]$mes = $_POST["mes"]; [*] [*]//====================================================================// [*] [*]$consulta = mysql_query("SELECT * FROM floridas WHERE '$mes'='x' ORDER BY id"); [*] [*]while($dados = mysql_fetch_array($consulta)){ [*] $id = $dados["id"]; [*] [*]//====================================================================// [*] [*]$consulta2 = mysql_query("SELECT * FROM lista_especies WHERE id = '$id'"); [*]$dados2 = mysql_fetch_array($consulta2); [*] $familia = $dados2["familia"]; [*] $cientifico = $dados2["nome_cientifico"]; [*] $popular = $dados2["nome_popular"]; [*] [*]//====================================================================// [*]?> [*]<table class="table"> [*]<tr> [*]<td class="td1"><?=$familia?></td> [*]<td class="td2"><a class="spp" href="../exibe/exibe_descricao.php?id=<?=$id?>"><?=$cientifico?></a></td> [*]<td class="td3"><?=$popular?></td> [*]</tr> [*]</table> [*]<? [*]} [*] [*]//====================================================================// [*] [*]mysql_close($conexao); [*]?> [*] Bom, creio que algo acima está errado... pq ele me retorna: Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/arvoresdeirati/www/floridas_combox/floridas_consulta.php on line 74 O que seria? Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Adailton... fiz o q tu disse A página agora aparece em branco, sem nenhum erro... mas sem consulta... pode ver aqui... e o arquivo conecta é issu: PHP [*]<?php [*]$hostname_config = "mysql1.arvoresdeirati.com"; [*]$database_config = "arvoresdeirati"; [*]$username_config = "user"; [*]$password_config = "senha"; [*]$config = mysql_pconnect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR); [*]$bd = mysql_select_db("$database_config", $config); [*]?> Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Continua dando erro no mysql_close.... cometa esta linha coloca // na frente e posta o codigo da busca Adailton <{POST_SNAPBACK}> Aqui não dá erro nenhum E nem consulta... Fiz: PHP [*]<? [*]} [*] [*]//mysql_close($conexao); [*]?> Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Diz uma coisa o nome das colunas no banco ta em MAIUSCULA?? Se estiver altera o valor da variavel para maiuscula ou trata antes do SELECT QUERY.. Adailton <{POST_SNAPBACK}> Tá em minúsculo...Todos os campos na tabela é em minúsculo... Tá difícil... Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 21, 2005 O meu deus. Ai cara, você não ta conectando no bd com a variavel $config?? PHP [*]$config = mysql_pconnect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR); No script que postei lá em cima basta você trocar o mysql_close($conexao); por mysql_close($config); Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 To usando issu...<?}mysql_close($config);?> Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 21, 2005 Posta o script pra eu ver como tá Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 VOU MANDAR OS 3 ARQUIVOS CONECTA.PHP PHP [*] [*]<?php [*]$hostname_config = "mysql1.arvoresdeirati.com"; [*]$database_config = "arvoresdeirati"; [*]$username_config = "arvoresdeirati"; [*]$password_config = "313658"; [*]$config = mysql_pconnect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR); [*]$bd = mysql_select_db("$database_config", $config); [*]?> [*] FORM <form method="post" action="floridas_consulta.php"> <select name="mes"> <option value="maio">maio</option> <option value="junho">junho</option> </select> <input name="Enviar" type="submit" value="Enviar"> </form> CONSULTA PHP [*] [*]<? [*]//====================================================================// [*] [*]include "conecta.php"; [*] [*]//====================================================================// [*] [*]$mes = $_POST["mes"]; [*] [*]echo "$_POST[mes]"; [*] [*]//====================================================================// [*] [*]$consulta = mysql_query("SELECT * FROM floridas WHERE '$mes'='x' ORDER BY id"); [*] [*]while($dados = mysql_fetch_array($consulta)){ [*] $id = $dados["id"]; [*] [*] [*]//====================================================================// [*] [*]$consulta2 = mysql_query("SELECT * FROM lista_especies WHERE id = '$id'"); [*]$dados2 = mysql_fetch_array($consulta2); [*] $familia = $dados2["familia"]; [*] $cientifico = $dados2["nome_cientifico"]; [*] $popular = $dados2["nome_popular"]; [*] [*]//====================================================================// [*]?> [*] [*]<table class="table"> [*]<tr> [*]<td class="td1"><?=$familia?></td> [*]<td class="td2"><a class="spp" href="../exibe/exibe_descricao.php?id=<?=$id?>"><?=$cientifico?></a></td> [*]<td class="td3"><?=$popular?></td> [*]</tr> [*]</table> [*] [*]<? [*]} [*]mysql_close($config); [*]?> [*] Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 21, 2005 Tenta trocar o arquivo de configurações de PHP [*]$config = mysql_pconnect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR); para PHP [*]$config = mysql_connect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR); Compartilhar este post Link para o post Compartilhar em outros sites
alexsauer 0 Denunciar post Postado Junho 21, 2005 Nick O problema ta na consulta2.. Adailton <{POST_SNAPBACK}> O Adailton mandou eu fazer isso: receber a variável assim: $mes_bd = $_POST["mes"]; e na query faz assim $consulta = mysql_query("SELECT * FROM floridas WHERE $mes_bd = 'x' ORDER BY id"); E funcionou!!! Mt obrigado a vcs! Issu q eh parceria... C alguém quiser uma mão em tableless é só dar um grito! Valeu mesmo! Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 21, 2005 aff, pode crer, me confundi todo aqui, heheheMas ai, tabless, demorou, passa seu msn para mim por PM que no final de semana nois conversa. :) Compartilhar este post Link para o post Compartilhar em outros sites