A voir également:
- Sql explode
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
- Sql query download - Télécharger - Gestion de données
20 réponses
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.
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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?
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 ?
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 !
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?
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 !!!!!!!!!!
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
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
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
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 ] . "%'";
}
}
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
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
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);
}
}
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
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
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);
}
}
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.
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