Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ivan919

[Resolvido] Duvida com str_replace

Mensagens Recomendadas

ivan919

Boas,

Estou a fazer uma aplicação para a escola e agora estou a elaborar o relatório e preciso de tirar uma duvida sobre um bocado de código que ainda não percebi bem para que serve.

Nome do cliente: <select name=nome>
$sqlc = "SELECT * FROM cliente";
$queryc=mysql_query($sqlc);
if ($queryc>0){
echo("<option> </option>");
while($sqlc = mysql_fetch_array($queryc)){
$nome=$sqlc["nome"];
$string = str_replace(' ', '_', $nome);
echo("<option value=$string>$string</option>");}
};
echo("</select> <input type='submit' name='submit' value='Pesquisar'><br></fieldset><form><p>");
if(isset($_POST["submit"])){
$nome=$_POST['nome'];
$string = str_replace('_', ' ', $nome);
$sql= "SELECT * FROM cliente where nome='$string'";

Tenho este codigo, vai criar um select com todos os nomes dos clientes para depois escolhermos um e mostrar todos os dados do cliente escolhido, mas quando tinha o primeiro e ultimo nome dos clientes (ex: Paulo Carvalho) nada acontecia quando escolhia o nome, mas com apenas um nome (ex: Paulo) já apareciam os dados dele. Falaram-me que podia ser por causa dos espaços contidos no nome e que deveria tirados, então, depois de varias tentativas, com o str_replace meti um '_' na parte do select que mostra os nomes e depois para mostrar os dados completos substitui o '_' por um espaço para poder fazer a query correctamente.

O problema é que não percebo o porque de ter que fazer isto. Porque ter que retirar um espaço para depois o voltar a meter?

Espero pela resposta

Obrigado

Editado por ivan919

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

// EXISTE FORM AQUI PARA TRÁS CERTO ?
Nome do cliente: <select name="nome">
$sqlc = "SELECT * FROM cliente";
$queryc=mysql_query($sqlc);
while($row = mysql_fetch_array($queryc)){
extract($row);
echo '<option value="'. $nome . '">'. $nome .'</option>';
}
echo "</select>
<input type='submit' name='submit' value='Pesquisar'>
</form>
</fieldset>";

isset($_POST['nome']) ? $nome= trim($_POST['nome']) : $nome = FALSE;
if($nome) {
$sql= "SELECT * FROM cliente where nome='$nome'";
}

Tenta assim

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ora vamos por partes :

1º - apaga todas as tuas alterações ! isso não faz sentido

2º - o teu query de pesquisa :

$sql= "SELECT * FROM cliente where nome='$string'";

o nome tem de ser exactamente igual ao valor na variável $string

se pretendes pesquisar por partes do nome (como só colocando Paulo) o SQL seria:

$sql= "SELECT * FROM cliente WHERE nome LIKE '%$string%'";

3º - cuidado com os dados que vem por post, conheçes o Bobby Tables, se não conheçes vai ler sobre ele na net ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

HappyHippo eu acho mesmo que o que ele pretende é ver os detalhes todos directamente do form select.

Mas ivan919 segue o conselho do happyhippo (importante) e pesquisa sobre as bobby tables

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ivan919

N3lson segui o codigo que fizeste, ainda tive que pesquisar uma ou outra coisa para ver para que serviam mas faz mesmo aquilo que eu queria

obrigado :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

Estamos aqui para isso mesmo ajudar-nos uns aos outros .


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.