View Full Version : [php] ajuda com variáveis


toblesu
08-01-2008, 15:13
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.

Armadillo
08-01-2008, 15:22
em vez de $_Post, tenta fazer echo a $_GET ['nome'] a ver se te dá o nome completo.
Nao percebo porque isso te acontece.

CrazyBomber
08-01-2008, 15:28
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...

toblesu
08-01-2008, 15:57
obrigado...

vou tentar cada uma das sugestões!

toblesu
08-01-2008, 16:42
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';
}
}

CrazyBomber
08-01-2008, 16:50
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"

toblesu
08-01-2008, 16:58
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!!

CrazyBomber
08-01-2008, 17:06
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:

toblesu
08-01-2008, 17:09
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"

toblesu
08-01-2008, 17:16
já funciona!!

fiz mal a substituição da linha!!

ups!!

obrigadão!