Petit probleme avec MySQL

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

10 mars 2005, 23:45

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\ilsa world\inscription_p2.php on line 11

Quelle est la ligne 11 ?
Et fais un echo $sql;
Et copie nous ici le résultat stp :D
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 859 Messages

11 mars 2005, 00:31

La ligne 11 c'est celle que j'essaye de corriger depuis le début ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

11 mars 2005, 00:57

$sql="INSERT INTO membres(prenom, email, code_postal, ville) VALUES('$_POST['$prenom']', '$_POST['$email']', '$_POST['$code_postal']', '$_POST['$ville']')"; 
As-tu esayé comme ceci ?
Est-ce que ça ne fonctionne tjs pas ?
$sql="INSERT INTO membres (prenom, email, code_postal, ville) VALUES(".$_POST['$prenom'].", ".$_POST['$email'].", ".$_POST['$code_postal'].", ".$_POST['$ville'].")"; 
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1885 Messages

11 mars 2005, 01:11

Je vote pour ceci
$prenom = mysql_escape_string($_POST['prenom']);
$code_postal = mysql_escape_string($_POST['$code_postal']);
$ville = mysql_escape_string($_POST['ville']);
$pays = mysql_escape_string($_POST['pays']);
$email = mysql_escape_string($_POST['email']);

$sql="INSERT INTO membres (prenom, code_postal, ville, pays, email)
      VALUES('$prenom', '$code_postal', '$ville', '$pays', '$email')";
;)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

11 mars 2005, 02:31

Je vote pour ceci
$prenom = mysql_escape_string($_POST['prenom']);
$code_postal = mysql_escape_string($_POST['$code_postal']);
$ville = mysql_escape_string($_POST['ville']);
$pays = mysql_escape_string($_POST['pays']);
$email = mysql_escape_string($_POST['email']);

$sql="INSERT INTO membres (prenom, code_postal, ville, pays, email)
      VALUES('$prenom', '$code_postal', '$ville', '$pays', '$email')";
;)
Pourquoi transférer les variables dans d'autres et les remettre ?
Pourquoi ne pas utiliser directement les bonnes variables ?

Et surtout, pourquoi ne pas faire un print() ou un echo de la requête ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1885 Messages

11 mars 2005, 04:48

On peut évidemment réutiliser les mêmes variables. Cependant, le problème venait peut-être de la non sécurisation des variables injectées dans la requête SQL; ce qui en résulte, lors d'envoi de chaines contenant des single-quote, une requête dans la requête.

Bien sûr, cela dépend de la configuration du php.ini en ce qui a trait au magic_quotes.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 13 Messages

11 mars 2005, 05:52

Ce qui intrique, c'est (en rouge et en gras) :
... VALUES('$_POST['$prenom']', ...

Mere Theresa :evil: :D, $sql donne :
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\serveur\www\temp\index.php on line 195

Résolu par :

Code : Tout sélectionner

$sql = "INSERT INTO membres(prenom, email, code_postal, ville) VALUES(".$_POST['prenom'].", ".$_POST['email'].", ".$_POST['code_postal'].", ".$_POST['ville'].")";
Mélange de quote... (Cf. flitox's message :))

Ou le mieu (modèle phpMyAdmin) :

Code : Tout sélectionner

$sql = "INSERT INTO `membres` ( `prenom` , `email` , `code_postal` , `ville` ) VALUES ( `".$_POST['$prenom']."`, `".$_POST['$email']."`, `".$_POST['$code_postal']."`, `".$_POST['$ville']."`)";
Ce qui donne :

Code : Tout sélectionner

INSERT INTO `membres` ( `prenom` , `email` , `code_postal` , `ville` ) VALUES ( ``, ``, ``, ``)
Pas oublier de remettre les $ si toute fois, c'est bien le nom des elements de formulaire :shock:

Xenon, faut savoir ! :lol:
$prenom = mysql_escape_string($_POST['prenom']);
$code_postal = mysql_escape_string($_POST['$code_postal']);
Vincent (nok-I)

Mammouth du PHP | 1885 Messages

11 mars 2005, 06:21

J'avais vu l'erreur et m'étais juré de la corriger.
Pourtant j'ai oublié de le faire.

:lol:
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 859 Messages

11 mars 2005, 10:39

Ca serait bien d'avoir le contenu de connexion.inc.php parce que toutes les solutions essayées n'ont pas marché donc finalement est-ce que le problème vient bien de la page où est lancé la requête.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

11 mars 2005, 12:39

Mere Theresa
Pas de H ! (elle est dans ma signature la hache...)
Ce qui donne :

Code : Tout sélectionner

INSERT INTO `membres` ( `prenom` , `email` , `code_postal` , `ville` ) VALUES ( ``, ``, ``, ``)
Hum, est-ce toi qui a un problème de requête ?
Parce que là, aucune chance de remplir ta base...

Et si PHP dit error line 11, on regarde tous en choeur la ligne 11.

Alors j'aimerais savoir clairement : Quelle est la ligne 11 ?
Si c'est celle de la requête, est-ce que la personne qui pose la question a modifié sa requête comme le propose nok-I ?
Qu'est-ce que cela donne comme message d'erreur ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

netila
Invité n'ayant pas de compte PHPfrance

11 mars 2005, 12:47

MErci beaucoup
merci de l'interet que vous portez a mon probleme
je suis desoler mais je ne pourrait pas essayer aujourd'hui ce que vous m'avez dit (je ne peut pas toucher au pc de la jourée... nous savez ce que c'est les parents...)
mais voici le contenu de connexion.inc.php :

<?
$dbname = 'clubdb';
$hostname = 'localhost';
$username = 'root';
$password = '';
$id_link = mysql_connect($hostname, $username, $password);
echo 'connexion etablie avec succes<BR>'
?>

Mammouth du PHP | 859 Messages

11 mars 2005, 12:57

@mysql_connect($hostname,$username,$password) or die("Impossible de se connecter");
@mysql_select_db("$dbname") or die("Impossible de se connecter à la base de données");
Il n'y a pas de connexion à la base de données...

netila
Invité n'ayant pas de compte PHPfrance

11 mars 2005, 13:27

j'ai rajouté ce que tu ma dit flitox mé tjr meme pb ...
lol

Eléphanteau du PHP | 13 Messages

11 mars 2005, 17:05

Parce que là, aucune chance de remplir ta base...
Pour l'exemple... pas taper, mere-teresa :agenouille:
@mysql_select_db("$dbname") or die("Impossible de se connecter à la base de données");
Netila utilise mysql_db_query,
$resultat = @mysql_db_query('clubdb',$sql,$id_link);
Pour ceci qu'il y a toujours le meme probleme...

Qui d'ailleurs peut-etre remplacer par,
$resultat=@mysql_db_query($dbname,$sql,$id_link);

Ou comme tu le proposes par,
$resultat=@mysql_query($sql,$id_link);

En ajoutant,
@mysql_select_db($dbname) or die("Impossible de se connecter à la base de données");
(Comme le montre flitox) ds connexion.inc.php.

netila, si tu as bien changer ta requete $sql, tout devrais marcher dans l'ordre... et sinon, enleves la proposition de flitox (meme si la façon de proceder n'est pas la plus simple, dans ton script) ... et dans tous les cas, fais un COPIER/COLLER de ton erreur à la ligne 11 pour mère teresa :lol:

MAIS autre chose m'intrigue, la requete INSERT ne contient pas tous les champs de la table ... ? :?:
Vincent (nok-I)

netila
Invité n'ayant pas de compte PHPfrance

12 mars 2005, 19:40

Merci beaucoup tout le monde !! C'est bon ca marche !!!!

Code : Tout sélectionner

$sql = "INSERT INTO membres(prenom, email, code_postal) VALUES(".$_POST['prenom'].", ".$_POST['email'].", ".$_POST['code_postal'].")"; mysql_db_query($dbname,$sql,$id_link);
Merci infiniment de vous etre penché sur mon probleme ! c'est vraiment sympas de votre part !!!!

Mais quelqu'un pourrait pourquoi ca ne marchait pas ?? lol !
Histoire de ne plus faire la meme erreur !