Page 1 sur 1

Une erreur PHP avec un INSERT

Posté : 29 juin 2005, 13:43
par harry67
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.

Posté : 29 juin 2005, 13:46
par zeus
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].'")';

Posté : 29 juin 2005, 13:51
par Cyrano
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)
?>

INSERT

Posté : 29 juin 2005, 14:03
par harry67
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?