Erreur PHP de débutant

Fermé
the.newB - 28 janv. 2008 à 16:30
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 29 janv. 2008 à 11:43
Bonjour,

Je suis débutant en php et j'essaie tant bien que mal de développer un petit script d'espace membre pour m'entrainer. Je bloque sur l'erreur suivante ; Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /inscription.php on line 10

Et voici le code source de la page disponible ici >> http://fr.pastebin.ca/876060

L'erreur se situe à la ligne 10. Si quelqu'un pourrait m'aider sa serait sympa :)

Merci d'avance !

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
28 janv. 2008 à 16:39
Bonjour,

Pour utiliser des variables tableau dans des chaines de caractère, il faut utiliser des {}, ou sortir de la chaine.

Donc quand tu écris

"INSERT INTO ..... ($_POST['adresse'], ...)"

il faut en fait mettre :

"INSERT INTO ..... ({$_POST['adresse']}, ...)"
ou
"INSERT INTO ..... (".$_POST['adresse'].", ...)"

Voilà voilà !

Xavier
0
Merci pour ta réponse éclair :) Mais maintenant j'obtiens des erreurs SQL :/ ( je sais je suis lourd )

Je ne sais pas trop pourquoi il y a une erreur . Revoici donc ma page de traitement des données qui enregistre les données dans ma table http://fr.pastebin.ca/876117 et le formulaire pour saisir les données à enregistrer. http://m2ga.free.fr/sncf/form_inscription.php

Voici donc l'erreur SQL qui s'affiche : 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 '@hotmail.com,passw,18 rue de jack,paris,12,1,chomeur,'')' at line 1

J'ai l'impression que mysql ne supporte pas les "@" ( dans la champs mail ) ainsi que les espaces ( dans le champs adresse ).


Merci !
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
29 janv. 2008 à 11:43
Bonjour,

Dans ce genre de cas, le plus simple est de demander à afficher la requête.
Remplace
mysql_query("INSERT INTO agent VALUES
    ('', $_POST['nom'], $_POST['prenom'], $_POST['mail'], $_POST['pass'], $_POST['adresse'],
    $_POST['ville'], $_POST['departement'], $_POST['formationDemande'], 
    $_POST['metierActuel'], '')")
    or die(mysql_error());
par
$requeteSql = "INSERT INTO agent VALUES
    ('', $_POST['nom'], $_POST['prenom'], $_POST['mail'], $_POST['pass'], $_POST['adresse'],
    $_POST['ville'], $_POST['departement'], $_POST['formationDemande'],
    $_POST['metierActuel'],'')";
mysql_query($requeteSql)
    or die(mysql_error()."<br /><b>Requête :</b><br />$requeteSql");

Tu pourras alors relire ta requête SQL... Et te rendre compte que les champs texte ne sont pas entre guillemets !

Je te laisse corriger en conséquence :)

Xavier

PS : l'affichage de la requête, c'est pour débugger uniquement, hein. C'est dangereux de la laisser une fois ton site en ligne.

PPS : je t'invite également à recherché des informations sur une technique du nom de "injection sql". C'est quelque chose qui permettrait à un utilisateur peu scrupuleux d'effacer ta base de données dans l'état actuel des choses, et qui n'est pas dur à empêcher.
0