Requetre sql avec explode?
Fermé
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
-
19 mai 2008 à 16:53
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 20 mai 2008 à 21:59
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 20 mai 2008 à 21:59
A voir également:
- Sql explode
- Logiciel sql - Télécharger - Bases de données
- Sql replace plusieurs valeurs - Forum Programmation
- Requete sql pix - Forum PHP
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
- Requête sql date supérieure à ✓ - Forum Programmation
20 réponses
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
19 mai 2008 à 20:58
19 mai 2008 à 20:58
WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
1. que veut dire auteur LIKE '%' ?
2. en supposant que la réponse à la question précédente soit "ça ne sert à rien", ton instruction deviendrait :
WHERE auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
3. en supposant que nous remplacions OR AND par OR tout seul, que veut dire :
WHERE auteur LIKE '%lille%' OR auteur LIKE '%paris%'
Ne te précipite pas sur ton poste de travail mais commence par répondre à ces qqes questions.
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
19 mai 2008 à 17:03
19 mai 2008 à 17:03
Bonjour,
Je pense que le code devrait être le suivant
A plus
Je pense que le code devrait être le suivant
$laRequete = "SELECT * FROM base_physique WHERE sujet LIKE '%'"; $mots3 = explode(" ", $_POST['auteur']); if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" ) for($rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++) { if($rangAuteur = 0) $laRequete .= " AND (auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'"; if($rangAuteur > 0) $laRequete .= " OR auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'"; } $laRequete.= ")";
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
19 mai 2008 à 17:07
19 mai 2008 à 17:07
Il me met l'erreur suivante :
Requête invalide : 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 'AND auteur LIKE '%paris%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
tu vois autre chose?
merci
Requête invalide : 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 'AND auteur LIKE '%paris%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
tu vois autre chose?
merci
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
19 mai 2008 à 17:17
19 mai 2008 à 17:17
Bonjour,
Oui, deux choses:
1°) Remplace
2°) Remplace
A plus
Oui, deux choses:
1°) Remplace
$laRequete = "SELECT * FROM base_physique WHERE sujet LIKE '%'";par
$laRequete = "SELECT * FROM base_physique WHERE sujet ='" .$ajout ."'";
2°) Remplace
if($rangAuteur = 0)par
if($rangAuteur == 0)
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
19 mai 2008 à 17:49
19 mai 2008 à 17:49
il me met encore ca :
Requête invalide : 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 'AND auteur LIKE '%paris%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
snif
quand je tape ma recherche je met juste un espace entre les 2 auteurs que je recherche c'est bien cela?
Tu as une autre idée?
c'est super important pour moi et je galére la dessus depuis pas mal de temps..
merci d'avance
Requête invalide : 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 'AND auteur LIKE '%paris%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
snif
quand je tape ma recherche je met juste un espace entre les 2 auteurs que je recherche c'est bien cela?
Tu as une autre idée?
c'est super important pour moi et je galére la dessus depuis pas mal de temps..
merci d'avance
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
19 mai 2008 à 19:15
19 mai 2008 à 19:15
quelqu'un aurait une idée?
merci
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
19 mai 2008 à 19:20
19 mai 2008 à 19:20
Regarde avec attention cette partie de ta requête mysql :
Qu'est-ce-qui cloche à ton avis ?
WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%'
Qu'est-ce-qui cloche à ton avis ?
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
19 mai 2008 à 20:42
19 mai 2008 à 20:42
ben le OR AND cote cote ca ne va pas mais j'ai essayé plei de trucs et je n'aboutis jamais a rien..
je commence a desespéré
aurais tu une idée?
je commence a desespéré
aurais tu une idée?
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
19 mai 2008 à 21:22
19 mai 2008 à 21:22
Deux remarques sur ton interprétation :
1. ce n'est pas le sujet mais l'auteur (si l'on se réfère aux noms des colonnes mysql)
2. ce n'est pas est lille mais contient lille
Est-ce-que ces précisions te sont utiles ? Est-ce-que la requête s'exécute maintenant ?
1. ce n'est pas le sujet mais l'auteur (si l'on se réfère aux noms des colonnes mysql)
2. ce n'est pas est lille mais contient lille
Est-ce-que ces précisions te sont utiles ? Est-ce-que la requête s'exécute maintenant ?
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
19 mai 2008 à 21:26
19 mai 2008 à 21:26
porur sujet je voulais dire auteur
par contre pour dire est auteur j'utilise = ou LIKE
mais pour dire contient c'est quelle syntaxe?
par contre pour dire est auteur j'utilise = ou LIKE
mais pour dire contient c'est quelle syntaxe?
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
>
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
19 mai 2008 à 22:04
19 mai 2008 à 22:04
je ne comprends pas trop comment je dois faire la requete pour que cela fonctionne correctement...
peux tu me mettre sur la piste stp car je tourne en rond ..
merci d'avance
peux tu me mettre sur la piste stp car je tourne en rond ..
merci d'avance
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
19 mai 2008 à 22:51
19 mai 2008 à 22:51
auteur like '%lille%'
veut dire que la variable auteur est égale à 0 ou n caractères quelconques quivis de lille suivi de 0 ou n caractères quelconques.
Ainsi, un enregistrement de la table dont la variable auteur est égale à 'lille', 'azertylille', 'lilleuiop' ou 'azrtyillleuiop' sera sélectionné
Je ne sais pas que te dire de plus !
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 08:14
20 mai 2008 à 08:14
oui je suis d'acord avec toi mais est-ce que les caractéres espaces sont également pris en compte??
en effet si je tape lille lens cela ne marche pas est-ce normal?
en effet si je tape lille lens cela ne marche pas est-ce normal?
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
20 mai 2008 à 08:27
20 mai 2008 à 08:27
Les blancs sont-ils pris en compte ? Oui : WHERE auteur LIKE '%avec deux blancs%' sélectionnera azertyavec deux blancs et ne sélectionnera pas azertyavecdeuxblancs.
Mais je pense que ton pb n'est pas là : dans un message précédent il t'était proposé d'utiliser explode pour séparer les mots avant de générer la requête.
Voici un code qui devrait marcher :
J'ai supprimé auteur like '%' qui ne sert à rien.
REFLECHIS !!!!!!!!!!
Mais je pense que ton pb n'est pas là : dans un message précédent il t'était proposé d'utiliser explode pour séparer les mots avant de générer la requête.
Voici un code qui devrait marcher :
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" ) { $laRequete = "SELECT * FROM base_physique"; $mots3 = explode(" ", $_POST['auteur']); for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ ) { if( $rangAuteur > 0 ) $laRequete .= " OR"; $laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'"; }
J'ai supprimé auteur like '%' qui ne sert à rien.
REFLECHIS !!!!!!!!!!
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 09:03
20 mai 2008 à 09:03
merci croy ca marche très bien!
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 09:55
20 mai 2008 à 09:55
je viens de voir un petit probléme
en effet quand je fais une recherche par critéres multiples j'ai une erreur dans le code suivant :
<?php
$laRequete = "SELECT * FROM base_physique WHERE ";
$mots2 = explode(" ", $_POST['motstitre']);
$mots3 = explode(" ", $_POST['auteur']);
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
{
for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if( $rangAuteur > 0 )
$laRequete .= " OR";
$laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
}
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
else
{
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " AND motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
}
le seul cas qui ne marche pas et quand je tape plusieurs motstitre
cela me met :
Requête invalide : 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 'AND motstitre LIKE '%atomic%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE auteur LIKE '%blasco%' AND motstitre LIKE '%performance%' OR AND motstitre LIKE '%atomic%'
merci d'avance
en effet quand je fais une recherche par critéres multiples j'ai une erreur dans le code suivant :
<?php
$laRequete = "SELECT * FROM base_physique WHERE ";
$mots2 = explode(" ", $_POST['motstitre']);
$mots3 = explode(" ", $_POST['auteur']);
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
{
for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if( $rangAuteur > 0 )
$laRequete .= " OR";
$laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
}
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
else
{
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " AND motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
}
le seul cas qui ne marche pas et quand je tape plusieurs motstitre
cela me met :
Requête invalide : 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 'AND motstitre LIKE '%atomic%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE auteur LIKE '%blasco%' AND motstitre LIKE '%performance%' OR AND motstitre LIKE '%atomic%'
merci d'avance
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 10:21
20 mai 2008 à 10:21
quelqu'un a une idée??
merci
merci
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 11:23
20 mai 2008 à 11:23
Bonjour,
Dans ton code
A plus
Dans ton code
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "") { for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ ) { if( $rangMotstitre > 0 ) $laRequete .= " OR"; $laRequete .= " AND motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'"; } }remplace " AND motstitre LIKE '%" par " motstitre LIKE '%"
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 11:25
20 mai 2008 à 11:25
non car si je fais une recherche par auteur et par motstitre cela ne marchera pas
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 11:32
20 mai 2008 à 11:32
Bonjour,
Remplace ton code par le suivant alors
A plus
Remplace ton code par le suivant alors
else { if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "") { for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ ) { if ( $rangMotstitre > 0) { $laRequete .= " OR"; } else { $laRequete .= " AND ("; } $laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'"; } $laRequest .= ")"; } }
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 11:38
20 mai 2008 à 11:38
ca marche pour tous les cas sauf quand je coche juste motstitre
il me met :
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
code correspondant (avabt le else) :
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
il me met :
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
code correspondant (avabt le else) :
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 11:58
20 mai 2008 à 11:58
Bonjour,
Rajoute la ligne suivante au début de ton code
ensuite change le code suivant
Cela devrait résoudre ton problème.
A plus
Rajoute la ligne suivante au début de ton code
$aut = False;ensuite rajoute la ligne suivante
$aut = True;juste après if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
ensuite change le code suivant
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")par
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && !$aut)et le code suivant
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "")par
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $aut)
Cela devrait résoudre ton problème.
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 12:34
20 mai 2008 à 12:34
toujours le même probléme cela marche bien pour tout sauf pour quand je recherche juste par motstitre
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
une autre idée?
merci
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
une autre idée?
merci
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 13:31
20 mai 2008 à 13:31
quelqu'un peut m'aider svp?
merci
merci
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 13:41
20 mai 2008 à 13:41
Bonjour,
Peux-tu copier/coller tout ton code stp ?
Merci
Peux-tu copier/coller tout ton code stp ?
Merci
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 13:49
20 mai 2008 à 13:49
ok le probléme ancien est résolu
en revanche j'essaye d'incorporer annee et cela marche pour tous les cas sauf quand je fais une recherche juste par année et il me met :
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
$laRequete = "SELECT * FROM base_physique WHERE ";
$mots2 = explode(" ", $_POST['motstitre']);
$mots3 = explode(" ", $_POST['auteur']);
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
{
for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if( $rangAuteur > 0 )
$laRequete .= " OR";
$laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
else
{
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if ( $rangMotstitre > 0)
{
$laRequete .= " OR";
}
else
{
$laRequete .= " AND";
}
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
if( isset($_POST['annee']) && $_POST['annee'] != "" && $_POST['auteur'] == "" && $_POST['motstitre'] == "" )
{
$laRequete .= " annee='" . $_POST['annee'] . "'";
}
else
{
if(isset($_POST['annee']) && $_POST['annee'] != "" && ($_POST['auteur'] != "" || $_POST['motstitre'] != "" ))
{
$laRequete .= " AND annee='" . $_POST['annee'] . "'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
en revanche j'essaye d'incorporer annee et cela marche pour tous les cas sauf quand je fais une recherche juste par année et il me met :
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
$laRequete = "SELECT * FROM base_physique WHERE ";
$mots2 = explode(" ", $_POST['motstitre']);
$mots3 = explode(" ", $_POST['auteur']);
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
{
for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if( $rangAuteur > 0 )
$laRequete .= " OR";
$laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if( $rangMotstitre > 0 )
$laRequete .= " OR";
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
else
{
if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "")
{
for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ )
{
if ( $rangMotstitre > 0)
{
$laRequete .= " OR";
}
else
{
$laRequete .= " AND";
}
$laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'";
}
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
if( isset($_POST['annee']) && $_POST['annee'] != "" && $_POST['auteur'] == "" && $_POST['motstitre'] == "" )
{
$laRequete .= " annee='" . $_POST['annee'] . "'";
}
else
{
if(isset($_POST['annee']) && $_POST['annee'] != "" && ($_POST['auteur'] != "" || $_POST['motstitre'] != "" ))
{
$laRequete .= " AND annee='" . $_POST['annee'] . "'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 14:08
20 mai 2008 à 14:08
Bonjour,
J'ai utilisé une indentation pour ton code et il me semble qu'il manque un }après$laRequete .= " AND annee='" . $_POST['annee'] . "'";
} ce qui fait que l'instruction suivante n'est faite que dans le cas else
Peux-tu vérifier cela, si ce n'est pas le cas fait le moi savoir
A plus
J'ai utilisé une indentation pour ton code et il me semble qu'il manque un }après$laRequete .= " AND annee='" . $_POST['annee'] . "'";
} ce qui fait que l'instruction suivante n'est faite que dans le cas else
$laRequete = "SELECT * FROM base_physique WHERE "; $mots2 = explode(" ", $_POST['motstitre']); $mots3 = explode(" ", $_POST['auteur']); if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" ) { for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ ) { if( $rangAuteur > 0 ) $laRequete .= " OR"; $laRequete .= " auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'"; } $reponse = mysql_query( $laRequete ); if( !$reponse ) { $message = 'Requête invalide : ' . mysql_error() . "\n"; $message .= 'Requête complète : ' . $laRequete; die($message); } } if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] == "") { for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ ) { if( $rangMotstitre > 0 ) $laRequete .= " OR"; $laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'"; } } else { if( isset( $_POST['motstitre'] ) && $_POST['motstitre'] != "" && $_POST['auteur'] != "") { for( $rangMotstitre = 0 ; $rangMotstitre< sizeof($mots2) ; $rangMotstitre++ ) { if ( $rangMotstitre > 0) { $laRequete .= " OR"; } else { $laRequete .= " AND"; } $laRequete .= " motstitre LIKE '%" . $mots2[ $rangMotstitre ] . "%'"; } } $reponse = mysql_query( $laRequete ); if( !$reponse ) { $message = 'Requête invalide : ' . mysql_error() . "\n"; $message .= 'Requête complète : ' . $laRequete; die($message); } } if( isset($_POST['annee']) && $_POST['annee'] != "" && $_POST['auteur'] == "" && $_POST['motstitre'] == "" ) { $laRequete .= " annee='" . $_POST['annee'] . "'"; } else { if(isset($_POST['annee']) && $_POST['annee'] != "" && ($_POST['auteur'] != "" || $_POST['motstitre'] != "" )) { $laRequete .= " AND annee='" . $_POST['annee'] . "'"; } $reponse = mysql_query( $laRequete ); if( !$reponse ) { $message = 'Requête invalide : ' . mysql_error() . "\n"; $message .= 'Requête complète : ' . $laRequete; die($message); } }
Peux-tu vérifier cela, si ce n'est pas le cas fait le moi savoir
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 14:15
20 mai 2008 à 14:15
il met encore
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
snif
Requête invalide : 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 '' at line 1 Requête complète : SELECT * FROM base_physique WHERE
snif
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 14:50
20 mai 2008 à 14:50
Bonjour,
Peux-tu essayé le code suivant
A plus
Peux-tu essayé le code suivant
if( isset($_POST['annee']) && $_POST['annee'] != "") { if (($_POST['auteur'] != "") || ($_POST['motstitre'] != "")) { $laRequete .= " AND annee='" . $_POST['annee'] . "'"; } else { $laRequete .= " annee='" . $_POST['annee'] . "'"; } $reponse = mysql_query( $laRequete ); if( !$reponse ) { $message = 'Requête invalide : ' . mysql_error() . "\n"; $message .= 'Requête complète : ' . $laRequete; die($message); } }
A plus
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 15:03
20 mai 2008 à 15:03
ca y est cela marche
merci
merci
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
20 mai 2008 à 15:18
20 mai 2008 à 15:18
j'ai un nouveau probléme avec le code ci-dessous
maintenant je peux préselectionner un sujet avant de faire la recherche et aprés faire la recherche par critére mais je ne peux pas taper plus d'un auteur comem tout à l'heure et je tourne en rond
quelqu'un a une idée?
merci
$sql=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet") or die(mysql_error());
while ($ajout = mysql_fetch_array($sql))
{
$laRequete = "SELECT * FROM base_physique WHERE sujet LIKE '".$_SESSION['subject']."'";
$mots = explode(",", $_POST['motscle']);
$mots2 = explode(" ", $_POST['motstitre']);
$mots3 = explode(" ", $_POST['auteur']);
$mots4 = explode(",", $_SESSION['subject']);
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
{
for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if( $rangAuteur > 0 )
$laRequete .= " OR";
$laRequete .= " AND auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
if( isset($_POST['annee']) && $_POST['annee'] != "" )
$laRequete .= " AND annee='" . $_POST['annee'] . "'";
if( isset( $_SESSION['subject'] ) && $_SESSION['subject'] != "" )
for($rangSujet = 0 ; $rangSujet < sizeof($mots4) ; $rangSujet++)
{
if($rangSujet > 0)
$laRequete .= " OR ";
$laRequete .= " AND sujet LIKE '%" . $mots4[ $rangSujet ] . "%'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
maintenant je peux préselectionner un sujet avant de faire la recherche et aprés faire la recherche par critére mais je ne peux pas taper plus d'un auteur comem tout à l'heure et je tourne en rond
quelqu'un a une idée?
merci
$sql=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet") or die(mysql_error());
while ($ajout = mysql_fetch_array($sql))
{
$laRequete = "SELECT * FROM base_physique WHERE sujet LIKE '".$_SESSION['subject']."'";
$mots = explode(",", $_POST['motscle']);
$mots2 = explode(" ", $_POST['motstitre']);
$mots3 = explode(" ", $_POST['auteur']);
$mots4 = explode(",", $_SESSION['subject']);
if( isset( $_POST['auteur'] ) && $_POST['auteur'] != "" )
{
for( $rangAuteur = 0 ; $rangAuteur< sizeof($mots3) ; $rangAuteur++ )
{
if( $rangAuteur > 0 )
$laRequete .= " OR";
$laRequete .= " AND auteur LIKE '%" . $mots3[ $rangAuteur ] . "%'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
if( isset($_POST['annee']) && $_POST['annee'] != "" )
$laRequete .= " AND annee='" . $_POST['annee'] . "'";
if( isset( $_SESSION['subject'] ) && $_SESSION['subject'] != "" )
for($rangSujet = 0 ; $rangSujet < sizeof($mots4) ; $rangSujet++)
{
if($rangSujet > 0)
$laRequete .= " OR ";
$laRequete .= " AND sujet LIKE '%" . $mots4[ $rangSujet ] . "%'";
}
$reponse = mysql_query( $laRequete );
if( !$reponse )
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $laRequete;
die($message);
}
}
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 15:48
20 mai 2008 à 15:48
Bonjour,
Peux-tu copier/coller le message d'erreur stp ?
Merci
Peux-tu copier/coller le message d'erreur stp ?
Merci
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
20 mai 2008 à 18:25
20 mai 2008 à 18:25
De toutes manières tu vas dans une mauvaise direction : il est très mauvais de faire deux niveaux de requêtes imbriquées sur la même table. A la place faire une unique requête.
Ce qui serait bien ce serait que tu nous décrives ce que tu veux faire.
Ensuite, nous construirons la requête mysql nécessaire et unique que tu mettras au point directement avec ton client mysql (duquel dispose-tu ?)
Et enfin tu pourras construire ton script qui génère la requête mysql et exploite les résultats.
Pour ma part, j'attends la description de ce que tu veux faire.
Ce qui serait bien ce serait que tu nous décrives ce que tu veux faire.
Ensuite, nous construirons la requête mysql nécessaire et unique que tu mettras au point directement avec ton client mysql (duquel dispose-tu ?)
Et enfin tu pourras construire ton script qui génère la requête mysql et exploite les résultats.
Pour ma part, j'attends la description de ce que tu veux faire.
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
20 mai 2008 à 21:59
20 mai 2008 à 21:59
Bonsoir Croy,
Je penses que tu as raison, ce serait plus simple de comprendre ce que Lady59 veut obtenir afin de lui proposer une solution finie plutôt que d'avancer pas à pas.
A plus
Je penses que tu as raison, ce serait plus simple de comprendre ce que Lady59 veut obtenir afin de lui proposer une solution finie plutôt que d'avancer pas à pas.
A plus
19 mai 2008 à 21:07
mais le probléme c'est que quand je tape lille paris dans ma recherche ca ne marche pas.. avec le code de départ, cela marchait si je tapais lille ou si je tapais paris
j'avais essayé avec des OR mais le probléme c'est que cela ne marche pas quand il y a plus d'un mot dans ma recherche j'ai l'impression...
Donc je ne vois pas quoi mettre