Recherche sur une table mais sur plusieurs champs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recherche sur une table mais sur plusieurs champs

par Truc » 15 déc. 2005, 19:57

si tu n'as pas de résultat c'est que les champs n'existent pas,orthographe !
Il y aurait un message d'erreur dans ce cas de figure.
je parlais du remplissage des champs => "guendon" et "33200" :wink:
...
WHERE nom
LIKE '%guendon%' AND postal
LIKE '%33200%'

par Cyrano » 15 déc. 2005, 11:16

Tu peux utiliser addslashes() ou encore mysql_escape_string()

par betman » 15 déc. 2005, 11:04

je viens de trouver :

Dans mon formulaire j'ai écris ceci en valeur par defaut :

Nom de l'agent

et le ' fait tout planter !!!

si je le retire avant de valider cela fonctionne...

On peut parer ce genre de chose ? car etant donnée le design il faut vraiment que cela reste sur le champ

par Cyrano » 15 déc. 2005, 11:03

Cette partie de requête semble pourtant correcte, fais donc voir une requête complète retournant cette erreur ...:-k

par betman » 15 déc. 2005, 11:01

celle ci

Erreur SQL !
Erreur de syntaxe près de 'agent%' AND postal LIKE '%35000%' ORDER BY nom' à la ligne 1

Ca me fait encore le bug, ca marche 1 fois sur 2 :/

par Cyrano » 15 déc. 2005, 10:59

Quelle erreur ?

par betman » 15 déc. 2005, 10:59

erf nan elle marche un coup sur 2 :/

et quand j'effectue une recherche sur le code postal ca met mets une erreur sql
<?
include('connection.inc.php');
$query = "SELECT * FROM agent WHERE nom LIKE '%".$_POST['nom']."%' AND postal LIKE '%".$_POST['postal']."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

while ($donnees = mysql_fetch_array($reponse) )
{
// on affiche les informations de l'enregistrement en cours
echo $donnees['nom'];
echo "<br />";
echo $donnees['postal'];
echo "<br />";
}
?>

Cela marchait il y a 2 min je pige rien

par Cyrano » 15 déc. 2005, 10:59

Tout à fait valable :)

par betman » 15 déc. 2005, 10:57

je viens de trouver une requête qui marche :
<?
include('connection.inc.php');
$query = "SELECT * FROM agent WHERE nom LIKE '%".$_POST['nom']."%' AND postal LIKE '%".$_POST['postal']."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

while ($donnees = mysql_fetch_array($reponse) )
{
// on affiche les informations de l'enregistrement en cours
echo $donnees['nom'];
echo "<br />";
echo $donnees['postal'];
echo "<br />";
}
?>
cela vous parait propre?

par betman » 15 déc. 2005, 10:47

autre chose mes données proviennent d'un insertion par fichier txt. Peut etre que cela viens de la aussi nan ?

ma table agent :

id int(11)
portefeuille text
nom text
adresse1 text
adresse2 text
postal text
tel text

etc...

c'est bien ça que tu me demandais?

par pjl » 15 déc. 2005, 10:46

si tu n'as pas de résultat c'est que les champs n'existent pas,orthographe !
Il y aurait un message d'erreur dans ce cas de figure.
Est-ce que meme si je ne rempli qu'un seul champ cela fonctionne avec ce code ?
As tu compris ta requête ?
Tu mets ET dedans.
Si tu vas dans un café et que tu demandes un café ET un thé, le serveur est censé t'apporter les 2.
C'est pareil pour ta base de données.
Si tu veux l'un ou l'autre, c'est OU.

par jeff » 15 déc. 2005, 10:42

si ta requete ne te retourne rien, c'est que ta requete n'est pas adapté
fait voir comment est organiser ta table(quelque lignes seulement)

par betman » 15 déc. 2005, 10:39

bonjour,

cette requête à fonctionné :

SELECT *
FROM agent
WHERE nom
LIKE '%guendon%' AND postal
LIKE '%33200%'
ORDER BY nom

directement dans phpmyadmin

mais je vois pas pourkoi cette requete ne me retourne rien du tout
<?
include('connection.inc.php');
$form_nom = htmlentities($_POST['nom'],ENT_QUOTES);
$form_postal = htmlentities($_POST['postal'],ENT_QUOTES);
$query = "SELECT * FROM agent WHERE nom LIKE '%".$form_nom."%' AND postal LIKE '%".$form_postal."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

while ($donnees = mysql_fetch_array($reponse) )
{
// on affiche les informations de l'enregistrement en cours
echo $donnees['nom'];
echo "<br />";
echo $donnees['postal'];
echo "<br />";
}
?>
Est-ce que meme si je ne rempli qu'un seul champ cela fonctionne avec ce code ?

par Truc » 14 déc. 2005, 22:31

[
requête: SELECT * FROM agent WHERE nom LIKE '%guedon%' AND postal LIKE '%Code postal%' ORDER BY nom
nombre: 0
La requête est correcte ! Pas de code d'erreur ! De plus, cela retourne 0 enregistrements, donc je vise plutôt la correspondance entre la requête et sa table... :roll:
c'est plustot le champ "postal" qui n'est pas trouvé,avec "Code postal" :-k

et donc la requete ne renvoie aucun résultat.

essaie celle-ci, la meme que tu avais donnée sans le champ "nom0"
SELECT *
FROM agent
WHERE nom
LIKE '%guendon%' AND postal
LIKE '%33200%'
ORDER BY nom
directement dans phpmyadmin.

si tu n'as pas de résultat c'est que les champs n'existent pas,orthographe !

par jeff » 14 déc. 2005, 21:31

c'est ce que je suggerai :)