Erreur PHP/SQL [Résolu]

Signaler
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
Salut,

J'ai l'erreur suivante dans mon code, est ce que qq'un a une idée d'ou ca peut bien venir..???

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Ca donne l'erreur sur cette ligne :

$where=" WHERE description, cause_probable, proposition_amelioration LIKE '%$_POST['mot_cle'] %' ";

Merci!!

30 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,
alors ou est le problème ???

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,

$where=' WHERE description, cause_probable, proposition_amelioration LIKE \'%'.$_POST['mot_cle'].'%\' ';

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

D'accord!! Merci!

Par contre, j'ai maintenant l'erreur suivante, on dirait que ca ne tient pas compte des conditions :

Erreur SQL !
SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero FROM recap_observations WHERE description, cause_probable, proposition_amelioration LIKE '%%' AND agence_concernee LIKE '% %' AND processus_concerne LIKE '% %' AND resp LIKE '% %' AND etat_action LIKE '% %' AND numero LIKE '% %' ORDER BY numero
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 ' cause_probable, proposition_amelioration LIKE '%%' AND agence_
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ça vient de ta requête MySQL qui est fausse c'est quoi tous ces doubles % partout ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

SELECT description, cause_probable, proposition_amelioration,
agence_concernee, processus_concerne, resp, etat_action, numero FROM
recap_observations WHERE description, cause_probable,
proposition_amelioration
LIKE '%%' AND agence_concernee LIKE '% %' AND
processus_concerne LIKE '% %' AND resp LIKE '% %' AND etat_action LIKE
'% %' AND numero LIKE '% %' ORDER BY numero

il faut des AND pour séparer les conditions...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

En fait, ma requete SQL est alimentée par les données suivantes :

//Tables
$flag='';
$from='';
if(isset($_POST['recap_ameliorations']))
{
$from=" FROM recap_ameliorations ";
$flag='1';
}

if(isset($_POST['recap_observations']))
{
if($flag=='1') $from.=" ,  recap_observations  ";
else
$from.="  FROM recap_observations  ";
}

//Mot clé
$flag='';
$where='';

if(isset($_POST['mot_cle']))
{
$where=" WHERE description, cause_probable, proposition_amelioration LIKE '%
$_POST['mot_cle']
%' ";
$flag='1';
}

//Agence concernée
if(isset($_POST['agence_concernee']))
{
if($flag=='1') $where.=" AND agence_concernee LIKE
'%$_POST['agence_concernee']
%' ";
else
$where.=" WHERE agence_concernee LIKE
'%$_POST['agence_concernee']
%'
";
$flag='1';
}

//Processus concerné
if(isset($_POST['processus_concerne']))
{
if($flag=='1') $where.=" AND processus_concerne LIKE
'%$_POST['processus_concernee']
%'
";
else
$where.=" WHERE processus_concerne LIKE
'%$_POST['processus_concernee']
%'
";
$flag='1';
}

//Responsable
if(isset($_POST['resp']))
{
if($flag=='1') $where.=" AND resp LIKE
'%$_POST['resp']
%'
";
else
$where.=" WHERE resp LIKE
'%$_POST['resp']
%'
";
$flag='1';
}

//Etat des actions
if(isset($_POST['etat_action']))
{
if($flag=='1') $where.=" AND etat_action LIKE '%
$_POST['etat_action']
%' ";
else
$where.=" WHERE etat_action LIKE
'%
$_POST['etat_action']
%'
";
$flag='1';
}

//Numéro
if(isset($_POST['numero']))
{
if($flag=='1') $where.=" AND numero LIKE '%
$_POST['numero']
%' ";
else
$where.=" WHERE numero LIKE
'%
$_POST['numero']
%'
";
$flag='1';
}
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

$where=" WHERE description, cause_probable, proposition_amelioration LIKE '%
$_POST['mot_cle']
%' ";

tu veux faire quoi ici ???

t'écoutes ce qu'on postes ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Je pense qu'il attend un code tout fait...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

si on ne sait pas ce qu'il veut faire ça va être dur....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah même si je le savais perso, je ferais pas un script tout fait... un peu de recherche ne fait pas de mal, surtout quand on voit comment il se tamponne de ce qu'on lui dit...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

Salut!

Désolé, j'avais bien fait les modifs que vous m'avez indiqué, mais je me suis planté dans le bout de code que j'ai cpoié hier soir...
Je ne recherche pas du tout à ce qu'on me ponde un code tout fait, mais là, je bloque complet...je ne comprends pas pourquoi j'ai cette erreur...

Mon code c'est ça :

//Récupération des valeurs des champs:


//Tables
$flag='';
$from='';


if(isset($_POST['recap_ameliorations']))
{
$from=" FROM recap_ameliorations ";
$flag='1';
}


if(isset($_POST['recap_observations']))
{
if($flag=='1') $from.=" ,  recap_observations  ";
else
$from.="  FROM recap_observations  ";
}


//Mot clé
$flag='';
$where='';


if(isset($_POST['mot_cle']))
{
$where=' WHERE description, cause_probable, proposition_amelioration LIKE \'%'.$_POST['mot_cle'].'%\' ';
$flag='1';
}


//Agence concernée
if(isset($_POST['agence_concernee']))
{
if($flag=='1') $where.=' AND agence_concernee LIKE \'%'.$_POST['agence_concernee'].' %\' ';
else
$where.=' WHERE agence_concernee LIKE \'%'.$_POST['agence_concernee'].' %\' ';
$flag='1';
}


//Processus concerné
if(isset($_POST['processus_concerne']))
{
if($flag=='1') $where.=' AND processus_concerne LIKE \'%'.$_POST['processus_concerne'].' %\' ';
else
$where.=' WHERE processus_concerne LIKE \'%'.$_POST['processus_concerne'].' %\' ';
$flag='1';
}


//Responsable
if(isset($_POST['resp']))
{
if($flag=='1') $where.=' AND resp LIKE \'%'.$_POST['resp'].' %\' ';
else
$where.=' WHERE resp LIKE \'%'.$_POST['resp'].' %\' ';
$flag='1';
}


//Etat des actions
if(isset($_POST['etat_action']))
{
if($flag=='1') $where.=' AND etat_action LIKE \'%'.$_POST['etat_action'].' %\' ';
else
$where.=' WHERE etat_action LIKE \'%'.$_POST['etat_action'].' %\' ';
$flag='1';
}


//Numéro
if(isset($_POST['numero']))
{
if($flag=='1') $where.=' AND numero LIKE \'%'.$_POST['numero'].' %\' ';
else
$where.=' WHERE numero LIKE \'%'.$_POST['numero'].' %\' ';
$flag='1';
}


Ensuite, ma requete donne ça :

$sql="SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero ".$from.$where."  ORDER BY numero";

En fait, ce qui est en rouge, ce sont les champs de ma ou mes tables sur lesquels il faut que je recherche, est ce que le problème viendrait de la syntaxe de cette requete..?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

ce que tu as en rouge, si c'est les champs que tu veux récupérer alors pourquoi c'est dèrière un where ? on ne met que les conditions derière un where

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

Je suis pas là...?

Ce qui est en rouge, ce sont les champs ou je recherche mes variables récupérées du formulaire.
Et après le where, j'ai bien des conditions puisque ce sont mes variables si elles sont remplies..
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

Bon, j'ai fait qques modifs, ca a l'air un peu mieux mais c'est pas encore ça...

Si je fais un echo de ma requete j'ai :

SELECT * FROM recap_observations WHERE description OR cause_probable OR proposition_amelioration LIKE '' AND agence_concernee LIKE ' ' AND processus_concerne LIKE ' ' AND resp LIKE ' ' AND etat_action LIKE ' ' AND numero LIKE ' ' ORDER BY numero

Je ne comprends pas ou est le soucis, mes conditions ne fonctionnent pas car dans mon formulaire, je ne sélectionne que la base et sa m'affiche quand meme tous les AND....
Je devrais avoir une requete du style   SELECT * FROM recap_observations ORDER BY numero

La ca a l'air de ne pas tenir compte des mes if(isset... et des flags...
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

le type bool n'existe pas en sql !!

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

Houla ca va se compliquer, est ce que tu pourrais m'orienter vers une solution qu'il faudrait que j'utilise stp..?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

IS_NULL(machin)=0

un truc du genre

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
C'est WHERE tonchamp IS NULL
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

alors avec :

WHERE ( tonchamp IS NULL ) = 0

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
528
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

Bonjour, désolé de ne pas avoir répondu plus tôt, mais je n'étais pas là....
Excusez moi mais je ne vois pas trop ou le mettre ça..? Et ça fait quoi exactement WHERE ( monchamp IS NULL ) = 0 ?

Merci beaucoup