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
Bonjour,

si j'ai un champs et que dedans il y a plusieurs auteurs(tous séparés par un espace), je voudrais avec ma requête faire que en tapant un ou plusieurs auteurs cela me renvoie le résultat.

actuellement avec le code ci-dessous ca marche que si je tape un auteur(voir code ci-dessous), en revanche si dans un même champs il y a plusieurs auteurs cela ne marcher pas ( 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 '%lala%'' at line 1 Requête complète : SELECT * FROM base_physique WHERE sujet LIKE '%' AND auteur LIKE '%lolo%' OR AND auteur LIKE '%lala%')

Comment faire svp?
merci d'avance

$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 '%'";

$mots3 = explode(" ", $_POST['auteur']);

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);
}

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
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.
1
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:07
ben la ce serait si le sujet est lille ou si c'est paris..
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
0
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
Bonjour,

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
0
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
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
0
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
Bonjour,

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
0
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
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
0
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
quelqu'un aurait une idée?
merci
0

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
Regarde avec attention cette partie de ta requête mysql :
WHERE auteur LIKE '%' AND auteur LIKE '%lille%' OR AND auteur LIKE '%paris%' 


Qu'est-ce-qui cloche à ton avis ?
0
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
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?
0
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
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 ?
0
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
porur sujet je voulais dire auteur
par contre pour dire est auteur j'utilise = ou LIKE
mais pour dire contient c'est quelle syntaxe?
0
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
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
0
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
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 !
0
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
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?
0
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
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 :
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 !!!!!!!!!!
0
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
merci croy ca marche très bien!
0
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
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
0
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
quelqu'un a une idée??

merci
0
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
Bonjour,

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
0
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
non car si je fais une recherche par auteur et par motstitre cela ne marchera pas
0
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
Bonjour,

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
0
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
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 ] . "%'";
}
}
0
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
Bonjour,

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
0
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
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
0
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
quelqu'un peut m'aider svp?
merci
0
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
Bonjour,

Peux-tu copier/coller tout ton code stp ?

Merci
0
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
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);

}
}
0
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
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
$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
0
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
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
0
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
Bonjour,

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
0
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
ca y est cela marche
merci
0
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
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);
}

}
0
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
Bonjour,

Peux-tu copier/coller le message d'erreur stp ?

Merci
0
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
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.
0
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
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
0