bruna.s23 Postado Janeiro 26, 2010 Denunciar Share Postado Janeiro 26, 2010 Vamos lá.Tenho um sistema de busca de itinerario nele a pessoa digita o lugar de onde ela estae o lugar para onde ela vai.O banco de dados esta separado da seguinte formaTabela 1ID | tipo | rua | linhaonde o tipo é av., rua rodoviarua possui os nomes das ruase linha a qual rua ela faz parte.Então ele busca no banco de dados o primeiro item, se ele localizou ele guarda as linhas a qual ele faz parteele busca o segundo item sendo que precisa pertencer a mesma linha do da primeira buscafeito isso ele encontra um monte de item iguais que pertencem a mesma linha.ex. ele acha varia av. Brigadeiro Faria lima na linha 9 - então ele deixa que aparece apenas umalinha . ex. ele achou 5 av. faria lima na linha 9 . porem ele irá imprimir apenas uma.até ai tah tudo certinho.o problema é quando ele não acha o segundo itemno caso ele teria que imprimir apenas um "oi"mas o que esta acontecendo é que mesmo se ele acha ele imprime um "OI"no meio do resultado.Vejahttp://neux.com.br/teste/origem av. Brigadeiro Faria limadestino av. tiradentes.no resultado um oi .include("connect.php"); $tipo = $_REQUEST["tipo"]; $busca = $_POST["origem"]; $busca = strtoupper($busca); $sql2 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca . "%'") or die(" erro ".mysql_error()."" ); $printed= array(); if(mysql_num_rows($sql2)>0) { $verifica = ""; while($ver2 = mysql_fetch_array($sql2)) { $linha2 = $ver2['linha']; $tipo2 = $_REQUEST["tipo2"]; $busca2 = $_POST["search_destino"]; $busca2 = strtoupper($busca2); $sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" ); if(mysql_num_rows($sql7)>0) { while($ver7 = mysql_fetch_array($sql7)) { $linha3 = $ver7['linha']; $comando = "select * from linhas where id=$linha3"; $tabela = mysql_query($comando); $registro = mysql_fetch_assoc($tabela); $linhas = $registro['linha']; $id = $registro['id']; if(!in_array($linhas, $printed)) { array_push($printed, $linhas); echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>"; echo $linhas; echo"</a><br><br>"; } } } else if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO"; } } } else { echo "lala"; }Aguardo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jissa Postado Janeiro 26, 2010 Denunciar Share Postado Janeiro 26, 2010 olhando por cima falta a chave depois do else, de uma olhada nesta parte do codigo, acho que deveria ser: else{ if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO"; }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 olhando por cima falta a chave depois do else, de uma olhada nesta parte do codigo, acho que deveria ser: else{ if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO"; }}Jissa,Não funcionou .o que mais pode ser? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 ola´bruna... não entendi muito bem o que você quer... mas eu observei essa linha:else{ echo "lala";}não se esse echo era pra retornar no lugar do "OI"... se for .. retire-o de onde está e coloque-o nessa linha: if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO";}ficando assim: if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO";}else{ echo "lala";}abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 ola´bruna... não entendi muito bem o que você quer... mas eu observei essa linha:else{ echo "lala";}não se esse echo era pra retornar no lugar do "OI"... se for .. retire-o de onde está e coloque-o nessa linha: if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO";}ficando assim: if ($verifica == "") { echo "oi"; $verifica = "VERIFICADO";}else{ echo "lala";}abraçoselse { echo "lala"; }faz parte do while lá de cima da primeira busca. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 entendi... retire-o do while e coloca na condicional if()... veja se funciona....abraçosoutra coisa...até onde meu conhecimento vai.. não se usa else no while... veja: http://www.php.net/manual/pt_BR/control-structures.while.phpabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 entendi... retire-o do while e coloca na condicional if()... veja se funciona....abraçosoutra coisa...até onde meu conhecimento vai.. não se usa else no while... veja: http://www.php.net/manual/pt_BR/control-structures.while.phpabraçosCara, foi malo else realmente faz parte do If o primeiro lá de cima da primeira busca Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jissa Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 coloca este else na estrutura do if não do whileif(mysql_num_rows($sql2)>0) //se localizar vai fazer o while{}else{ echo "Não localizado registros para listar";}assim fica certo.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 hummmm...entendi... :rolleyes: ..... mas observe uma coisa:se você não der uma saída para essa condicional, ela sempre lhe retornará a mesma mensagem... por isso aconselho a você fazer dessa forma para ver se funciona:if ($verifica == ""){echo "oi";$verifica = "VERIFICADO";}else{ echo "lalala";}abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 hummmm...entendi... :rolleyes: ..... mas observe uma coisa:se você não der uma saída para essa condicional, ela sempre lhe retornará a mesma mensagem... por isso aconselho a você fazer dessa forma para ver se funciona:if ($verifica == ""){echo "oi";$verifica = "VERIFICADO";}else{ echo "lalala";}abraçosAnarqista,Não funcionou, preciso que mesmo se le não encontre a segunda busca ele apenas imprima o Oise encotrar ele imprime as linhas q qual ele pertence.no caso se faço o que você sugeriu ele verifica o valor do $verifica é igual a nadase for ele imprime o "oi"se não ele vai imprimir os "lalal"mas mudamos o $verificar de nada para verdadeiro então ele acaba imprimindo lalala varias vezes.colocamos o valor "verdadeiro" para que não passe novamente por este pontoe imprima varias vezes o "oi" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 entendi.... agora entendi.. pensei que caso não encontrasse nada.. não aparecesse o "OI"... acredito que nesse caso a solução do colega Jissa resolva.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jissa Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 Olá Bruna..pelo que vi primeira pesquisa rua, se achar pesquisa a linha, certo?? a variavel $verifica não é necessaria já que voce já ve isto quando coloca o >0 só vai executar se achar..fiz umas mudanças na sua estrutura.. veja se funciona aiinclude("connect.php"); $tipo = $_REQUEST["tipo"]; $busca = $_POST["origem"]; $busca = strtoupper($busca); $sql2 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca . "%'") or die(" erro ".mysql_error()."" ); $printed= array(); if(mysql_num_rows($sql2)>0) { while($ver2 = mysql_fetch_array($sql2)) { $linha2 = $ver2['linha']; $tipo2 = $_REQUEST["tipo2"]; $busca2 = $_POST["search_destino"]; $busca2 = strtoupper($busca2); $sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" ); if(mysql_num_rows($sql7)>0) //Se encontrado registro { while($ver7 = mysql_fetch_array($sql7)) { $linha3 = $ver7['linha']; $comando = "select * from linhas where id=$linha3"; $tabela = mysql_query($comando); $registro = mysql_fetch_assoc($tabela); $linhas = $registro['linha']; $id = $registro['id']; if(!in_array($linhas, $printed)) { array_push($printed, $linhas); echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>"; echo $linhas; echo"</a><br><br>"; } } } else // Se não localizado { echo "<br><b>Linha não localizada</b>"; } } } else { echo "<br><b>Rua Não localizada</b>"; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 hummmm...entendi... :rolleyes: ..... mas observe uma coisa:se você não der uma saída para essa condicional, ela sempre lhe retornará a mesma mensagem... por isso aconselho a você fazer dessa forma para ver se funciona:if ($verifica == ""){echo "oi";$verifica = "VERIFICADO";}else{ echo "lalala";}abraçosAnarqista,Não funcionou, preciso que mesmo se le não encontre a segunda busca ele apenas imprima o Oise encotrar ele imprime as linhas q qual ele pertence.no caso se faço o que você sugeriu ele verifica o valor do $verifica é igual a nadase for ele imprime o "oi"se não ele vai imprimir os "lalal"mas mudamos o $verificar de nada para verdadeiro então ele acaba imprimindo lalala varias vezes.colocamos o valor "verdadeiro" para que não passe novamente por este pontoe imprima varias vezes o "oi"Olá Bruna..pelo que vi primeira pesquisa rua, se achar pesquisa a linha, certo?? a variavel $verifica não é necessaria já que voce já ve isto quando coloca o >0 só vai executar se achar..fiz umas mudanças na sua estrutura.. veja se funciona aiinclude("connect.php"); $tipo = $_REQUEST["tipo"]; $busca = $_POST["origem"]; $busca = strtoupper($busca); $sql2 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca . "%'") or die(" erro ".mysql_error()."" ); $printed= array(); if(mysql_num_rows($sql2)>0) { while($ver2 = mysql_fetch_array($sql2)) { $linha2 = $ver2['linha']; $tipo2 = $_REQUEST["tipo2"]; $busca2 = $_POST["search_destino"]; $busca2 = strtoupper($busca2); $sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" ); if(mysql_num_rows($sql7)>0) //Se encontrado registro { while($ver7 = mysql_fetch_array($sql7)) { $linha3 = $ver7['linha']; $comando = "select * from linhas where id=$linha3"; $tabela = mysql_query($comando); $registro = mysql_fetch_assoc($tabela); $linhas = $registro['linha']; $id = $registro['id']; if(!in_array($linhas, $printed)) { array_push($printed, $linhas); echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>"; echo $linhas; echo"</a><br><br>"; } } } else // Se não localizado { echo "<br><b>Linha não localizada</b>"; } } } else { echo "<br><b>Rua Não localizada</b>"; } Jissa, acho que vou ficar meio louca.. não é possível - não funcionou. no caso tinhamos colocado este if ($verifica =="") { echo "oi"; $verifica = "verdadeiro";porque o oi quando colocamos ele sozinho ele repete varia vezes então colocamos.pois depente da primeira busca, se ele encontrar 20 itens na primeira e buscar na segunda não encontrar eleimprime 20 "oi".colocamos então se ele não encontra nada na segunda busca ele verificar se $verifica é nulo, no caso éentão ele imprime uma vez o "oi" e muda o $verifica para verdadeiro assim ele não passa mais,mas o que esta acontecendo é que ele esta imprimindo um "oi" mesmo que ele ache.vejaVejahttp://neux.com.br/teste/origem av. Brigadeiro Faria limadestino av. tiradentes.no resultado um oi . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 oi bruna... perdoe-me a ignorância... mas ainda não entendi o que você quer.... eu pensei que mesmo a resposta for negativa.. o "OI" ele apareceria.. abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jissa Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 tem um erro na linha 108 , veja se não falta fechar o elseParse error: syntax error, unexpected T_ELSE in /home/httpd/vhosts/neux.com.br/httpdocs/teste/search.php on line 108 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 oi bruna... perdoe-me a ignorância... mas ainda não entendi o que você quer.... eu pensei que mesmo a resposta for negativa.. o "OI" ele apareceria.. abraçosacho que eu não estou sabendo explicar.vamos lá. tipo quando ele faz a segunda busca e não encontra nada ele deveria imprimir um oi - apenas um se ele encontrar ele deve imprimir as linhas a qual ele perntence.mas ele está imprimindo um oi também quando acha algum conteúdo.(muito ilogico.)deu para entender? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jissa Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 o problema é interromper o laço?? escrever o 'oi' e parar para não colcoar mais?? se for isto coloque apenas um exit;após o echo "Oi";{ echo "oi"; exit; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jissa Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 Alterei o codigo, removi o verifica que sempre estava em branco (pode ser isto que não funcionava, não era atribuido nada a variavel), mudei o else e coloquei dois 'exit' para interromper após as mensagensinclude("connect.php"); $tipo = $_REQUEST["tipo"]; $busca = $_POST["origem"]; $busca = strtoupper($busca); $sql2 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca . "%'") or die(" erro ".mysql_error()."" ); $printed= array(); if(mysql_num_rows($sql2)>0) { while($ver2 = mysql_fetch_array($sql2)) { $linha2 = $ver2['linha']; $tipo2 = $_REQUEST["tipo2"]; $busca2 = $_POST["search_destino"]; $busca2 = strtoupper($busca2); $sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" ); if(mysql_num_rows($sql7)>0) { while($ver7 = mysql_fetch_array($sql7)) { $linha3 = $ver7['linha']; $comando = "select * from linhas where id=$linha3"; $tabela = mysql_query($comando); $registro = mysql_fetch_assoc($tabela); $linhas = $registro['linha']; $id = $registro['id']; if(!in_array($linhas, $printed)) { array_push($printed, $linhas); echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>"; echo $linhas; echo"</a><br><br>"; } } } else { echo "<br>Não encontrada linha"; exit; } } } else { echo "<br>Não Encontrada Rua"; exit; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 ou....você pode colocar simplesmente:if(mysql_num_rows($sql2)>0){$verifica = ""; while($ver2 = mysql_fetch_array($sql2)) { $linha2 = $ver2['linha']; $tipo2 = $_REQUEST["tipo2"]; $busca2 = $_POST["search_destino"]; $busca2 = strtoupper($busca2); $sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" ); if(mysql_num_rows($sql7)>0) { while($ver7 = mysql_fetch_array($sql7)) { $linha3 = $ver7['linha']; $comando = "select * from linhas where id=$linha3"; $tabela = mysql_query($comando); $registro = mysql_fetch_assoc($tabela); $linhas = $registro['linha']; $id = $registro['id']; if(!in_array($linhas, $printed)) { array_push($printed, $linhas); echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>"; echo $linhas; echo"</a><br><br>"; } } } else { // observe que retirei o if ($verifica == "") echo "oi"; $verifica = "VERIFICADO";} }}else{ echo "lala";} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruna.s23 Postado Janeiro 27, 2010 Autor Denunciar Share Postado Janeiro 27, 2010 ou....você pode colocar simplesmente:if(mysql_num_rows($sql2)>0){$verifica = ""; while($ver2 = mysql_fetch_array($sql2)) { $linha2 = $ver2['linha']; $tipo2 = $_REQUEST["tipo2"]; $busca2 = $_POST["search_destino"]; $busca2 = strtoupper($busca2); $sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" ); if(mysql_num_rows($sql7)>0) { while($ver7 = mysql_fetch_array($sql7)) { $linha3 = $ver7['linha']; $comando = "select * from linhas where id=$linha3"; $tabela = mysql_query($comando); $registro = mysql_fetch_assoc($tabela); $linhas = $registro['linha']; $id = $registro['id']; if(!in_array($linhas, $printed)) { array_push($printed, $linhas); echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>"; echo $linhas; echo"</a><br><br>"; } } } else { // observe que retirei o if ($verifica == "") echo "oi"; $verifica = "VERIFICADO";} }}else{ echo "lala";}Jissa,Foi quase.está aparecendo apenas uma vez, mas também está aparecendo quando faço a busca e encontra intens iguais.o que não deveria aparecer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 27, 2010 Denunciar Share Postado Janeiro 27, 2010 o bruna...tentou do jeito que te falei? Veja:if(mysql_num_rows($sql2)>0){$verifica = "";while($ver2 = mysql_fetch_array($sql2)){$linha2 = $ver2['linha'];$tipo2 = $_REQUEST["tipo2"];$busca2 = $_POST["search_destino"];$busca2 = strtoupper($busca2);$sql7 = mysql_query("select * from ruas where upper(ruas) like '%" . $busca2 . "%' and linha=$linha2") or die(" erro ".mysql_error()."" );if(mysql_num_rows($sql7)>0){while($ver7 = mysql_fetch_array($sql7)){$linha3 = $ver7['linha'];$comando = "select * from linhas where id=$linha3";$tabela = mysql_query($comando);$registro = mysql_fetch_assoc($tabela);$linhas = $registro['linha'];$id = $registro['id'];if(!in_array($linhas, $printed)){array_push($printed, $linhas);echo "<a href='itinerario.php?cod=".$id."' id='texto'><font id='texto'><li>";echo $linhas;echo"</a><br><br>";}}}else { // observe que retirei o if ($verifica == "")echo "oi";$verifica = "VERIFICADO";}}}else{echo "lala";} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anarquista Postado Janeiro 28, 2010 Denunciar Share Postado Janeiro 28, 2010 então!!!.....funcionou?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
bruna.s23
Vamos lá.
Tenho um sistema de busca de itinerario nele a pessoa digita o lugar de onde ela esta
e o lugar para onde ela vai.
O banco de dados esta separado da seguinte forma
Tabela 1
ID | tipo | rua | linha
onde o tipo é av., rua rodovia
rua possui os nomes das ruas
e linha a qual rua ela faz parte.
Então ele busca no banco de dados o primeiro item, se ele localizou ele guarda as linhas a qual ele faz parte
ele busca o segundo item sendo que precisa pertencer a mesma linha do da primeira busca
feito isso ele encontra um monte de item iguais que pertencem a mesma linha.
ex. ele acha varia av. Brigadeiro Faria lima na linha 9 - então ele deixa que aparece apenas uma
linha . ex. ele achou 5 av. faria lima na linha 9 . porem ele irá imprimir apenas uma.
até ai tah tudo certinho.
o problema é quando ele não acha o segundo item
no caso ele teria que imprimir apenas um "oi"
mas o que esta acontecendo é que mesmo se ele acha ele imprime um "OI"
no meio do resultado.
Veja
http://neux.com.br/teste/
origem av. Brigadeiro Faria lima
destino av. tiradentes.
no resultado um oi .
Aguardo.
Link para o comentário
Compartilhar em outros sites
21 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.