Une erreur PHP avec un INSERT

Eléphant du PHP | 137 Messages

29 juin 2005, 13:43

Bonjours, voici un script d'inscription d'un membre. Il vérifie que tous les champs ont bien été rempli et insère les données dans la base. Mais lorsque je l'éxécute, il me donne cette erreur :
Parse error: syntax error, unexpected T_VARIABLE in /inscription.php on line 79

Voici mon script : (les url d'erreurs sont à titre d'exemple)
<?php
/*Inscription d'une personne*/ 
$host="***********";
$user="************";
$mpasse="**********";
$database="***********";

$connexion = mysql_connect("$host", "$user", "$mpasse") 
or die ("Connexion à la base impossible"); 

$db = mysql_select_db($database) 
or die("Sélection de la base impossible"); 

if ($_POST[pseudo] == "")
{ header ("Location: http://hpotter.club.fr/inscription_2.htm");
} 
elseif ($_POST[mpasse] == "")
{ header ("Location: http://ronfcehp.free.fr/contact.htm");
} 
elseif ($_POST[confmpasse] == "")
{ header ("Location: http://ronfcehp.free.fr/articles/articles.htm");
} 
elseif ($_POST[email] == "")
{ header ("Location: http://ronfcehp.free.fr/posteznews.php");
} 
elseif ($_POST[agree] == "")
{ header ("Location: http://ronfcehp.free.fr/accesgrimoire.htm");
} 
elseif ($_POST[code] <> "KC585LV")
{ header ("Location: http://ronfcehp.free.fr/autreslivres/autreslivres.htm");
}
else 
{ $code="ok";
}
$sql = "SELECT login FROM membres
          WHERE login='".mysql_real_escape_string($_POST[pseudo])."'";
$result = mysql_query($sql)
          or die("Impossible d'éxécuter la requête1");
$num = mysql_num_rows($result); 
if ($num == 1)
{ header ("Location: http://hpotter.club.fr");
} 
else
{ $login="ok";
}

$sql = "SELECT mp FROM membres
          WHERE mp='".mysql_real_escape_string($_POST[mpasse])."'";
$result = mysql_query($sql)
          or die("Impossible d'éxécuter la requête2");
$num = mysql_num_rows($result); 
if ($num == 1)
{ header ("Location: http://www.poudlard.org/article38.html");
} 
else
{ $passe="ok";
} 

$sql = "SELECT mail FROM membres
          WHERE mail='".mysql_real_escape_string($_POST[mail])."'";
$result = mysql_query($sql)
          or die("Impossible d'éxécuter la requête3");
$num = mysql_num_rows($result);
if ($num == 1)
{ header ("Location: http://ronfcehp.free.fr/fanarts/fanarts.htm");
} 
else
{ $mail="ok";
} 

if ($_POST[mpasse] == $_POST[confmpasse])
{ $mp="ok";
}
else 
{ header ("Location: http://www.phpfrance.com/forums/voir_sujet-5066.php");
} 

$sql1 = 'INSERT INTO membres (login, mp, maison)'
        . ' VALUES('$_POST[pseudo]','$_POST[mpasse]','$_POST[maison]')';
$result = mysql_query($sql)
or die ("Erreur d'insertion de données dans la base");

$sql2 = 'INSERT INTO mailto (login,mail,message,sujet,prior)'
        . ' VALUES('$_POST[pseudo]','$_POST[mailto]','Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse'),'Bienvenue','moyenne')';
$result2 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");


$sql3 = 'INSERT INTO blog (login)'
        . ' VALUES('$_POST[pseudo]')';
$result3 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

$sql = 'INSERT INTO sac (login)'
        . ' VALUES('$_POST[pseudo]')';
$result = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

          $dest='$_POST[mailto]';
          $sujet="Inscription école virtuelle";
          $corps="************le message******************";

          $de="from: [email protected]"; 
          mail($dest, $sujet, $corps, $de) 


?>
Merci de me dire où se trouve l'erreur.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 juin 2005, 13:46

Je vais te donner UN conseils de débuggage :

lit le message d'erreur

Il te dit qu'il y a une variable inattendue à la ligne 79

tu vas à la ligne 79 et tu te rend compte que ta concaténation est fausse vu qu'il manque les .
$sql1 = 'INSERT INTO membres (login, mp, maison)'
        . ' VALUES("'.$_POST[pseudo].'","'.$_POST[mpasse].'","'.$_POST[maison].'")';
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

29 juin 2005, 13:51

De l'utilisation des guillemets et des apostrophes dans tes définitions de requêtes. Tu avais bien commencé jusque là, mais après tu as carrément zappé le problème en metant juste des apostrophes. Proposition de correction:
<?php
/*Inscription d'une personne*/
$host="***********";
$user="************";
$mpasse="**********";
$database="***********";

$connexion = mysql_connect("$host", "$user", "$mpasse")
or die ("Connexion à la base impossible");

$db = mysql_select_db($database)
or die("Sélection de la base impossible");

if ($_POST[pseudo] == "")
{
    header ("Location: http://hpotter.club.fr/inscription_2.htm");
}
elseif ($_POST[mpasse] == "")
{
    header ("Location: http://ronfcehp.free.fr/contact.htm");
}
elseif ($_POST[confmpasse] == "")
{
    header ("Location: http://ronfcehp.free.fr/articles/articles.htm");
}
elseif ($_POST[email] == "")
{
    header ("Location: http://ronfcehp.free.fr/posteznews.php");
}
elseif ($_POST[agree] == "")
{
    header ("Location: http://ronfcehp.free.fr/accesgrimoire.htm");
}
elseif ($_POST[code] <> "KC585LV")
{
    header ("Location: http://ronfcehp.free.fr/autreslivres/autreslivres.htm");
}
else
{
    $code="ok";
}
$sql = "SELECT login FROM membres
          WHERE login='".mysql_real_escape_string($_POST[pseudo])."'";
$result = mysql_query($sql)
or die("Impossible d'éxécuter la requête1");
$num = mysql_num_rows($result);
if ($num == 1)
{
    header ("Location: http://hpotter.club.fr");
}
else
{
    $login="ok";
}

$sql = "SELECT mp FROM membres
          WHERE mp='".mysql_real_escape_string($_POST[mpasse])."'";
$result = mysql_query($sql)
or die("Impossible d'éxécuter la requête2");
$num = mysql_num_rows($result);
if ($num == 1)
{
    header ("Location: http://www.poudlard.org/article38.html");
}
else
{
    $passe="ok";
}

$sql = "SELECT mail FROM membres
          WHERE mail='".mysql_real_escape_string($_POST[mail])."'";
$result = mysql_query($sql)
or die("Impossible d'éxécuter la requête3");
$num = mysql_num_rows($result);
if ($num == 1)
{
    header ("Location: http://ronfcehp.free.fr/fanarts/fanarts.htm");
}
else
{
    $mail="ok";
}

if ($_POST[mpasse] == $_POST[confmpasse])
{
    $mp="ok";
}
else

{
    header ("Location: http://www.phpfrance.com/forums/voir_sujet-5066.php");
}

$sql1 = "INSERT INTO membres (login, mp, maison)"
      . " VALUES('".$_POST[pseudo]."','".$_POST[mpasse]."','".$_POST[maison]."')";
$result = mysql_query($sql)
or die ("Erreur d'insertion de données dans la base");

$sql2 = "INSERT INTO mailto (login,mail,message,sujet,prior)"
      . " VALUES('".$_POST[pseudo]."','".$_POST[mailto]."','Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse'),'Bienvenue','moyenne')";
$result2 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");


$sql3 = "INSERT INTO blog (login)"
      . " VALUES('".$_POST[pseudo]."')";
$result3 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

$sql = "INSERT INTO sac (login)"
     . " VALUES('".$_POST[pseudo]."')";
$result = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

$dest = $_POST[mailto];
$sujet="Inscription école virtuelle";
$corps="************le message******************";

$de="from: [email protected]";
mail($dest, $sujet, $corps, $de)
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 137 Messages

29 juin 2005, 14:03

Tout d'abord, merci d'avoir corrigé mon script, il fonctionne sans bug mais lorsque que je vais dans pHP my admin, rien ne s'est inseré dans la table. Je précise que cela m'arrive très souvent. Pourquoi?