PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 11-04-2010 13:44:29

sarlam
Membre
Inscription : 21-03-2010
Messages : 10

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

bonjour,

depuis mon formulaire:
<input type="radio" name="serie" value="axo" checked > Axolute
<input type="radio" name="serie" value="liv" />Living <br/>

je souhaite extraire tous les lignes contenant axo ou liv.
alors je mets  la variable $_GET['serie'],
$Requete="select * from bticino where lib like '$_GET['serie']'";
affichage Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\inter\traitement.php on line 18
echo $_GET['serie'], affiche axo ou liv

en dur:
si $Requete="select * from bticino where lib like 'axo'";
ça marche!

je dois avoir un pb de variable, un pb d'array ou autre, que faire?

Hors ligne

#2 11-04-2010 17:16:38

sarlam
Membre
Inscription : 21-03-2010
Messages : 10

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

hello,

j'ai trouvé mais si quelqu'un peut expliquer: mysql_real_escape_string

$Requete = "SELECT * FROM bticino WHERE lib LIKE '".mysql_real_escape_string($_GET['serie'])."%'";

Hors ligne

#3 11-04-2010 20:43:11

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

Cette fonction permet d'échapper les caractères spéciaux qui rentrent en compte dans une requête SQL.
C'est comme une balise HTML, si tu mets le > au mauvais endroit tu vas avoir un truc mal interprété. Bah là c'est la même chose avec les simple quote.

Hors ligne

#4 11-04-2010 21:31:37

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

Bonjour,

On va me trouver tatillon, mais bon, il faut bien un peu


$Requete = "SELECT * FROM bticino WHERE lib LIKE '".mysql_real_escape_string($_GET['serie'])."%'";
 

ne me parait pas très optimisé

En effet, l'avantage des " " normalement, c'est que les variables dedans sont interprétées (remplacées par leur valeur quoi).

Or là, la variable est mise pas concaténation en sortant des " ", qui sont donc inutiles. Perso, je mettrais donc :


$Requete = 'SELECT * FROM bticino WHERE lib LIKE "'.mysql_real_escape_string($_GET['serie']).'%"';
 

my 2 cents smile


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#5 16-04-2010 20:48:05

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

Bonjour,

En fait dans ta ligne

$Requete="select * from bticino where lib like '$_GET['serie']'";

la couleur automatique de ton code aurait du te mettre la puce à l'oreille surtout avec le message d'erreur que tu as donné.
je m'explique:
Le problème viens de tes ' dans ta requête. Ici le ' avant le s de serie est considérée comme le ' de fin ouverte par celui avant le $.

Pour corriger le pb, tu peux ecrire par exemple :

 $str_test=$_GET['serie']; $Requete="select * frm bticino where lib like '%$str_test%'";

qui fonctionnera sans aucune erreur.
Ps: J'ai rajouté % de chaque coté de ta variable pour tirer avantage du like sinon si ta variable ne prends pas une valeur exacte de lib enregistré dans ta base de données, ta requete ne retournera aucune ligne et ce malgré ton like.

Dernière modification par Jc (16-04-2010 20:50:25)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 16-04-2010 20:52:17

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

Et pour un peu plus de culture supplémentaire voici une autre façon de l'écrire sans variable intermédiaire sinon :

 
      $Requete="select * from bticino where lib like '{$_GET['serie']}'";
 

Hors ligne

#7 26-04-2010 21:35:39

sarlam
Membre
Inscription : 21-03-2010
Messages : 10

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

merci,

je veux ameliorer mon code au plus simple.

je prends l'option de xTG:


$Requete="select * from bticino where lib like '{$_GET['serie']}'";
 

Mais rien n'est extrait de la base, alors je rajoute % de chaque coté de serie soit:


$Requete="select * from bticino where lib like '{$_GET['%serie%']}'";
 

resultat:
Notice: Undefined index: %serie% in C:\wamp\www\inter\traitement.php on line 18:

je souhaite rajouter des and:


$Requete="select * from bticino where lib like '{$_GET['serie'] AND {$_GET['fonction']}'"; mais où rajouter les %?
 

A+

Hors ligne

#8 27-04-2010 07:47:25

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_N

Les % sont à mettre autour de la variable et non autour de la clé du tableau. ^_-

Hors ligne

Pied de page des forums