1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[php] ajuda com variáveis

Discussão em 'Web Development' iniciada por toblesu, 8 de Janeiro de 2008. (Respostas: 9; Visualizações: 739)

  1. toblesu

    toblesu Power Member

    Boas tardes,

    Esou com um problema, preciso de fazer pesquisas em SQL com base num nome (de uma pessoa) retirado duma List/Menu, acontece que se o nome for composto por mais de uma palavra, não é "sacado" na integra....

    para sacar esse nome estou a utilizar a seguinte linha de código:

    $cliente=mysql_real_escape_string($_POST['nome']);

    também já testei com apenas:
    $cliente=$_POST['nome'];
    mas o resultado é o mesmo.

    quando faço o echo para visualizar esse nome, se por exemplo o nome é "João Maria", aparece apenas "João"... logo a pesquisa com base nesse nome estoira......

    será que me podem ajudar?

    O código da lista é:

    <select name="nome" id="nome" size="1">
    <option value='zero'> </option>
    <?php
    $resultado=mysql_query("select * from users where nivel != '1'");

    while ($linha = mysql_fetch_row($resultado))
    {
    echo "<option value=$linha[1]";
    if ($_GET[c] == $linha[1]) echo " selected ";
    echo "> $linha[1]";
    echo " </option>";
    }

    ?>
    </select>


    Obrigado.
     
  2. Armadillo

    Armadillo Folding Member

    em vez de $_Post, tenta fazer echo a $_GET ['nome'] a ver se te dá o nome completo.
    Nao percebo porque isso te acontece.
     
  3. CrazyBomber

    CrazyBomber Power Member

    Tenta assim:

    echo "<option value='$linha[1]'";

    ou assim:

    echo '<option value="' . $linha[1] . '"';

    ou assim:

    echo "<option value=\"$linha[1]\"";


    Moral da história:
    Meter sempre os valores entre plicas ( ' ) ou aspas ( " ). Senão ele pensa que o valor é apenas a primeira palavra...
     
    Última edição: 8 de Janeiro de 2008
  4. toblesu

    toblesu Power Member

    obrigado...

    vou tentar cada uma das sugestões!
     
  5. toblesu

    toblesu Power Member

    ambas as ajudas não foram viáveis.... contudo agradeço na mesma as dicas!

    com o $_GET nem se quer mostra valores...

    em relação à outra ajuda, não posso colocar a variável entre plicas no echo, porque senão o nome da variável é imprimido em vez do conteúdo da mesma.


    Dentro da lista, é apresentado o nome completo, quando vou sacar no nome seleccionado é que me aparece apenas a primeira palavra!

    este é o código completo que utilizo para esta situação: apresentação de valores na List, "sacar" o nome seleccionado, e a query mostrando consequente resultado.

    <form action="" id="form1" name="form1" method="post" >
    Cliente:
    <select name="nome" id="nome" size="1">
    <option value='zero'> </option>
    <?php
    $resultado=mysql_query("select * from users where nivel != '1'");

    while ($linha = mysql_fetch_row($resultado))
    {
    echo "<option value=$linha[1]";
    if ($_GET[c] == $linha[1]) echo " selected ";
    echo "> $linha[1]";
    echo " </option>";
    }

    ?>
    </select>
    <input name="Escolher" type="Submit" id="Escolher" value="Escolher">
    <?

    if(isset($_POST['nome']))
    {
    $cliente=mysql_real_escape_string($_POST['nome']); //é aqui que ele falha
    $bd=mysql_query("select * from encm where ped_id = (select ped_id from users where ped_nome ='$cliente')");
    $resp=mysql_fetch_array($bd); ?> </form> <?

    $num_result=mysql_num_rows($bd);
    if($num_result < 1)
    {
    echo "<br><span align=center>Nao foram encontrados resultados para o Cliente: ".$cliente."</span>";
    }
    elseif($num_result >= 1)
    {
    $bd2=mysql_query("select u.ped_nome, e.pvp_encomenda, e.data, e.cod_enc, u.ped_id from encm e, users u where e.ped_id = (select ped_id from users where ped_nome ='$cliente') and u.ped_id=e.ped_id order by e.cod_enc desc");
    ?>
    <br><p align="left"><input name="ref" type="text" class="fundo_button" id="ref" value="<?php echo $cliente; ?>" size="70%"/>
    <span class="style1">) <? echo $num_result;?> Resultados)</span></p> <?
    include 'result.php';
    }
    }
     
    Última edição: 8 de Janeiro de 2008
  6. CrazyBomber

    CrazyBomber Power Member

    Se substituires esta linha:
    echo "<option value=$linha[1]";

    Por esta (faz mesmo copy-paste):
    echo '<option value="' . $linha[1] . '"';

    Não dá?
    Podes mostrar o output HTML que está a fazer?

    Dica:

    <option value=João Branco> ---- O valor fica "João"
    <option value="João Branco"> ---- O valor fica "João Branco"
     
  7. toblesu

    toblesu Power Member

    Acontece duas coisas interessantíssimas....

    primeiro a lista deixa de ter valores visíveis.... tipo ficam escondidos...

    Segundo, se seleccionarmos essas linhas, ele dá algum um resultado, mas agora ao contrário.... deixei de ter a query a funcionar para nomes com apenas uma palavra!!
     
  8. CrazyBomber

    CrazyBomber Power Member

    Podes mesmo mostrar o código HTML que está a sair, por favor? Dava jeito para ver o que se passa :)
    E uns screenshots, talvez ajudassem, também :sad:
     
  9. toblesu

    toblesu Power Member

    usando então a linha;

    echo '<option value="' . $linha[1] . '"';

    além de acontecer aquilo que referi no post anterior,
    acontece outra coisa estranha... o nome "João Maria" é repartido e acrescentado à lista, do tipo:

    João -> dá origem a erro na query: resultados 0;
    João Maria -> resolve a query na perfeição;
    Luis -> dá igualmente erro na query: resultados 0;

    em vez de apresentar a lista com apenas os dois nomes que realmente existem: João Maria, Luis.

    e não existe nenhum "João" na BD....

    Os valores já se encontram na base de dados, não sei em que medida poderá ser útil a dica que deste :

    Dica:

    <option value=João Branco> ---- O valor fica "João"
    <option value="João Branco"> ---- O valor fica "João Branco"
     
  10. toblesu

    toblesu Power Member

    já funciona!!

    fiz mal a substituição da linha!!

    ups!!

    obrigadão!
     

Partilhar esta Página