logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
28 visiteur(s) et 1 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 109 438 364

  • Nb. de membres 8 696
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Le coin des codeurs »» [Résolu] - Syntaxe de requete SQL...

[Résolu] - Syntaxe de requete SQL...#15586

4Contributeur(s)
PommeBorisdeveloppeurJireck
3 Modérateur(s)
developpeurjpbJireck
Pomme Pommeicon_post
$req="SELECT * FROM annu_logements_foyers WHERE c04 LIKE \"Bonneuil\" OR c04 LIKE \"bonneuil\" AND c01 LIKE \"%$recherche%\" OR c02 LIKE \"%$recherche%\" OR c03 LIKE \"%$recherche%\" OR c04 LIKE \"%$recherche%\" OR c05 LIKE \"%$recherche%\" OR c06 LIKE \"%$recherche%\" OR c07 LIKE \"%$recherche%\" OR c08 LIKE \"%$recherche%\" OR c09 LIKE \"%$recherche%\" OR c11 LIKE \"%$recherche%\"";

Je fais un moteur de recherche pour un annuaire. Je fais une requete par ville. Ici je veux afficher les établissements concernant Bonneuil mais là il me sort tous les établissement j'ai du m'embrouiller avec les AND et OR... Quelqu'un pourrait me dire ou j'ai bugué ?
Boris Borisicon_post
Je suis pas spécialiste du SQL, mais si c'est comme l'algèbre de boole, le AND est prioritaire sur le OR. Y aurais pas des parenthèses à mettre autour de tes OR ?
(J'dis p't'etre une co***rie. qqn peut confirmer?)

Citation : Pomme

$req="SELECT * FROM annu_logements_foyers WHERE (c04 LIKE \"Bonneuil\" OR c04 LIKE \"bonneuil\") AND (c01 LIKE \"%$recherche%\" OR c02 LIKE \"%$recherche%\" OR c03 LIKE \"%$recherche%\" OR c04 LIKE \"%$recherche%\" OR c05 LIKE \"%$recherche%\" OR c06 LIKE \"%$recherche%\" OR c07 LIKE \"%$recherche%\" OR c08 LIKE \"%$recherche%\" OR c09 LIKE \"%$recherche%\" OR c11 LIKE \"%$recherche%\")";

developpeur developpeuricon_post
c'est dans ce sens boris / la priorité des opérateurs existe aussi en SQL
Pomme Pommeicon_post
Ouais... Ca marche pas :-( (et je dois livrer ce truc pour mercredi)

Le script PHP :

$req="SELECT * FROM annu_logements_foyers WHERE (c04 LIKE Bonneuil) AND (c01 LIKE '$recherche' OR c02 LIKE '$recherche' OR c03 LIKE '$recherche' OR c04 LIKE '$recherche' OR c05 LIKE '$recherche' OR c06 LIKE '$recherche' OR c07 LIKE '$recherche' OR c08 LIKE '$recherche' OR c09 LIKE '$recherche' OR c11 LIKE '$recherche')";
$res=mysql_query($req);
$tab=mysql_fetch_array($res) or die('Erreur SQL : '.mysql_error());
$test=$tab[c00];

if ($test!="") { echo "<ul>Aucune entrée ne correspond aux termes de recherche spécifiés.</ul>"; }
else {
$zzz=0;
while($tab=mysql_fetch_array($res)) { $ttt=1;
echo"<ul><a href=\"modules.php?ModPath=annuaireCLIC/fiche&ModStart=logements_foyers&c00=".$tab[c00]."\">".$tab[c01]."</a></ul>"; $zzz=1;
}
echo "opkokp";
}

La base de données :
CREATE TABLE `annu_logements_foyers` (
`c00` int(10) NOT NULL auto_increment,
`c01` text NOT NULL,
`c02` text,
`c03` text,
`c04` text,
`c05` text,
`c06` text,
`c07` text,
`c08` text,
`c09` text,
`c10` text,
`c11` text,
`c12` text,
`c13` text,
`c14` text,
`c15` text,
`c16` text,
`c17` text,
`c18` text,
`c19` text,
`c20` text,
`c21` text,
`c22` text,
`c23` text,
`c24` text,
`c25` text,
`c26` text,
`c27` text,
`c28` text,
`c29` text,
`c30` text,
`c31` text,
`c32` text,
`c33` text,
`c34` text,
`c35` text,
`c36` text,
`c37` text,
`c38` text,
`c39` text,
`c40` text,
`c41` text,
`c42` text,
`c43` text,
`c44` text,
`c45` text,
`c46` text,
`c47` text,
`c48` text,
`c49` text,
`c50` text,
`c51` text,
`c52` text,
`c53` text,
`c54` text,
`c55` text,
`c56` text,
`c57` text,
`c58` text,
`c59` text,
`active` int(1) NOT NULL default '0',
PRIMARY KEY (`c00`)
) TYPE=MyISAM AUTO_INCREMENT=13 ;

L'entrée avec Bonneuil :
INSERT INTO `annu_logements_foyers` VALUES (9, 'Bonneuil de Merde', NULL, NULL, 'Bonneuil', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);


Normalement il devrait m'afficher l'entrée en question mais il m'affiche "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\site\boulot\clic\modules\annuaireCLIC\resultats-recherche.php on line 36
Erreur SQL : Unknown column 'Bonneuil' in 'where clause'"
:-(
Boris Borisicon_post
Citation : Pomme

Ouais... Ca marche pas :-( (et je dois livrer ce truc pour mercredi)

Le script PHP :

$req="SELECT * FROM `annu_logements_foyers` WHERE (c04 LIKE 'Bonneuil') AND (c01 LIKE '$recherche' OR c02 LIKE '$recherche' OR c03 LIKE '$recherche' OR c04 LIKE '$recherche' OR c05 LIKE '$recherche' OR c06 LIKE '$recherche' OR c07 LIKE '$recherche' OR c08 LIKE '$recherche' OR c09 LIKE '$recherche' OR c11 LIKE '$recherche')";
$res=mysql_query($req);
$tab=mysql_fetch_array($res) or die('Erreur SQL : '.mysql_error());
$test=$tab[c00];

if ($test!="") { echo "
    Aucune entrée ne correspond aux termes de recherche spécifiés.
"; }
else {
$zzz=0;
while($tab=mysql_fetch_array($res)) { $ttt=1;
echo""; $zzz=1;
}
echo "opkokp";
}

La base de données :
CREATE TABLE `annu_logements_foyers` (
`c00` int(10) NOT NULL auto_increment,
`c01` text NOT NULL,
`c02` text,
`c03` text,
`c04` text,
`c05` text,
`c06` text,
`c07` text,
`c08` text,
`c09` text,
`c10` text,
`c11` text,
`c12` text,
`c13` text,
`c14` text,
`c15` text,
`c16` text,
`c17` text,
`c18` text,
`c19` text,
`c20` text,
`c21` text,
`c22` text,
`c23` text,
`c24` text,
`c25` text,
`c26` text,
`c27` text,
`c28` text,
`c29` text,
`c30` text,
`c31` text,
`c32` text,
`c33` text,
`c34` text,
`c35` text,
`c36` text,
`c37` text,
`c38` text,
`c39` text,
`c40` text,
`c41` text,
`c42` text,
`c43` text,
`c44` text,
`c45` text,
`c46` text,
`c47` text,
`c48` text,
`c49` text,
`c50` text,
`c51` text,
`c52` text,
`c53` text,
`c54` text,
`c55` text,
`c56` text,
`c57` text,
`c58` text,
`c59` text,
`active` int(1) NOT NULL default '0',
PRIMARY KEY (`c00`)
) TYPE=MyISAM AUTO_INCREMENT=13 ;

L'entrée avec Bonneuil :
INSERT INTO `annu_logements_foyers` VALUES (9, 'Bonneuil de Merde', NULL, NULL, 'Bonneuil', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);


Normalement il devrait m'afficher l'entrée en question mais il m'affiche "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\site\boulot\clic\modules\annuaireCLIC\resultats-recherche.php on line 36
Erreur SQL : Unknown column 'Bonneuil' in 'where clause'"
:-(


Comme ca, C pas mieux? t'a pas mis les ` autour de ton nom de table (Pas obligatoire, mais C mieux!), ni les ' autour de Bonneuil. Après, comme je l'ai dit, je suis pas expert en SQL, donc faudrais une confirmation...
Pomme Pommeicon_post
Il précise l'erreur maintenant...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\site\boulot\clic\modules\annuaireCLIC\resultats-recherche.php on line 36
Erreur SQL : You have an error in your SQL syntax near ''annu_logements_foyers' WHERE (c04 LIKE 'Bonneuil') AND (c01 LIKE '' OR c02 LIKE' at line 1
Jireck Jireckicon_post
Pomme je t'est filer la bible sql.
lis et tu revera tout..;
Pomme Pommeicon_post
Je l'ai lu mais va falloir queje la relise apperement... J'ai fait autrement entre temps. Je vais mettre résolu meme si ça l'est pas vraiment.