Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde amigos,
Pesquisei mas não encontrei nada que resolvesse e como este fórum é frequentado por bons programadores, solicito mais uma vez uma ajuda:
A tabela: pedidos_orçamento é preenchida por um formulario online por isso o usuario_id só pode ser incluido após a verificação do pedido num front-end local. No formulário online existe o campo usuario mas esse campo é preenchido com Nome completo, o que dificulta a pesquisa posterior numa sql para listar os pedidos de orçamento ao cliente via browser. Dizer dificulta é generosidade pois não consegui uma forma de filtrar os resultados pelo nome completo, já tentei o str_replace (" ","",$variavel) mas continua dando erro na sql.
Algum amigo conhece uma forma de pesquisar por nome completo?
No php eu recebo esse nome completo atravéz da sessão $_SESSION['nome'] mas filtrar por ele é o problema.
Muito obrigado por alguma ajuda,
Um abraço.
Paulinho Cé
Divida o nome com explode
<?php
$nome = "João alguma coisa";
$pi = explode(" ", $nome);
echo $pi[0];
echo "<br />";
echo $pi[1];
echo "<br />";
echo $pi[2];
?>O erro é o seguinte:
**Invalid query:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Rodrigo Cé' at line 1 Whole query:SELECT * FROM pedidos_orcamento WHERE nome =Angelo Rodrigo Cé**
Sou programador Delphi há mais de 15 anos e pela minha experiencia em sql, percebo que a string com o nome completo está sendo truncada, o php lê o nome mas quando chega no espaço entre o primeiro e o segundo nome ele considera a string terminada e os dois ultimos nomes ficam causando erro, como se fosse sintaxe errada. Me perdoem pela ignorancia mas sou iniciante em html e php por isso estou tão perdido assim.
Estive testando a função explode sugerida pelo Cristiano e consegui retirar os espaços entre os nomes que compõe o nome completo passado pela session.
$pi = explode(" ", $_SESSION['nome']);
$usera = $pi[0].$pi[1].$pi[2];
Até aí beleza, mas então surge outro problema: Se a session passa o nome completo com espaços, evidencia que a gravação no mysql tambem é com espaços, fácilmente percebido no formulário de entrada e no próprio PHPMYADMIN, onde se visualiza os dados do banco.
A questão se resume então no formato da string passada passada para a query no PHP.Se eu retirar os espaços, a query não vai encontrar nenhum registro pois no banco o nome completo está com espaços.Usei tambem o like no lugar do = mas sem sucesso.
Ou é alguma configuração no banco ou não tem solução.
Nunca me deparei com um problema de codificação que não pudesse ser resolvido, vamos pensar juntos e tenho certeza que resolveremos mais esse problema.
Após vários testes, finalmente funcionou.
Sem qualquer função, e alterei tanto que nem sei mais onde estava o erro, agora a expressão ficou assim:
**$query = "SELECT * FROM pedidos_orcamento WHERE nome ='{$_SESSION['nome']}'"; **
$result = mysql_query($query);
Um abraço à todos,
Paulinho Cé
qual erro que dá ?