Ir para conteúdo
Fórum Script Brasil
  • 0

Echo não está imprimindo correto


bruna.s23

Pergunta

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 .

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.

Link para o comentário
Compartilhar em outros sites

21 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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

else
{
    echo "lala";
}

faz parte do while lá de cima da primeira busca.

Link para o comentário
Compartilhar em outros sites

  • 0
entendi... retire-o do while e coloca na condicional if()... veja se funciona....

abraços

outra coisa...até onde meu conhecimento vai.. não se usa else no while... veja: http://www.php.net/manual/pt_BR/control-structures.while.php

abraços

Cara, foi mal

o else realmente faz parte do If o primeiro lá de cima da primeira busca

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Anarqista,

Não funcionou, preciso que mesmo se le não encontre a segunda busca ele apenas imprima o Oi

se 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 nada

se 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 ponto

e imprima varias vezes o "oi"

Link para o comentário
Compartilhar em outros sites

  • 0

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 ai

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)
{
    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>";
}

Link para o comentário
Compartilhar em outros sites

  • 0
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

Anarqista,

Não funcionou, preciso que mesmo se le não encontre a segunda busca ele apenas imprima o Oi

se 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 nada

se 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 ponto

e 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 ai

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)
{
    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 ele

imprime 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.

veja

Veja

http://neux.com.br/teste/

origem av. Brigadeiro Faria lima

destino av. tiradentes.

no resultado um oi .

Link para o comentário
Compartilhar em outros sites

  • 0
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

acho 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?

Link para o comentário
Compartilhar em outros sites

  • 0

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 mensagens

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)
{
    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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

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";

}

Link para o comentário
Compartilhar em outros sites

  • 0
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.

Link para o comentário
Compartilhar em outros sites

  • 0

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";

}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...