Erreur PHP de débutant

the.newB -  
Reivax962 Messages postés 3742 Statut Membre -
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 !
Configuration: Linux
Firefox 2.0.0.11

3 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
  2. the.newB
     
    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
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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