[PHP] Erreur incompréhensible

nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
actuellement je travail sur la création d'un petit site web. J'utilise notepad++ pour la création des codes sources et easyphp pour gérer tout ce qui est mysql... Je veux créer un formulaire permettant à une personne de s'inscrire sur le site. J'ai fais un formulaire en html pour que la personne puisse taper les infos demandées pour l'inscription et une une page en php pour envoyer les données saisies vers la base de données. Mais j'ai une erreur au niveau de la page en php qui est "Erreur de syntaxe près de "1" à la ligne1". J'ai passé mon après-midi à résoudre cette erreur mais je n'ai trouver aucune solution.

Donc si quelqu'un pourrait me dire où est ce que j'ai fais une erreur ça m'aiderai beaucoup.

Voilà le code de la page en php:

<?php
if (isset($_POST['nom'])) {
    $nom = $_POST['nom'];
}
if (isset($_POST['rue'])) {
    $rue = $_POST['rue'];
}
if (isset($_POST['cp'])) {
    $cp = $_POST['cp'];
}
if (isset($_POST['ville'])) {
    $ville = $_POST['ville'];
}
if (isset($_POST['tel'])) {
    $tel = $_POST['tel'];
}
if (isset($_POST['mail'])) {
    $mail = $_POST['mail'];
}
if (isset($_POST['pass'])) {
    $pass = $_POST['pass'];
}
$dbuser="root";
$dbhost="localhost";
$base="GDV";

$connect = mysql_connect('localhost', 'root');  
$db  = mysql_select_db("GDV") ;
mysql_select_db('GDV', $connect) or die(mysql_error());
$sql1= mysql_query("INSERT INTO proprio (NomProprio, RueProprio, CPProprio, VilleProprio, TelProprio, MelProprio) VALUES ('$_POST[nom]','$_POST[rue]','$_POST[cp]','$_POST[ville]','$_POST[tel]','$_POST[mail]')") or die(mysql_error());

$sql2=mysql_query("INSERT INTO membres (name, pass) VALUES ('$_POST[nom]','$_POST[pass]')");

$requete1 = mysql_query($sql1, $connect) or die( mysql_error() ) ;
$requete2=mysql_query($sql2, $connect) or die (mysql_erroe() );

?>


A voir également:

12 réponses

Eastchild Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   31
 
Bonjour,

Je ne comprend pas trop pourquoi tout le monde veut le code HTML vu que l'erreur vient du PHP. Plus précisément d'ici :

$sql1= mysql_query("INSERT INTO proprio (NomProprio, RueProprio, CPProprio, VilleProprio, TelProprio, MelProprio) VALUES ('$_POST[nom]','$_POST[rue]','$_POST[cp]','$_POST[ville]','$_POST[tel]','$_POST[mail]')") or die(mysql_error());


le code corrigé donne ça :

$sql1= mysql_query("INSERT INTO proprio (NomProprio, RueProprio, CPProprio, VilleProprio, TelProprio, MelProprio) VALUES ('".$_POST["nom"]."','".$_POST["rue"]."','".$_POST["cp"]."','".$_POST["ville"]."','".$_POST["tel"]."','".$_POST["mail"]."')") or die(mysql_error());


Il te manquait juste des guillemets à tes $_POST (en plus de la petite faute de frappe : mysql_erroe())

Edit : pour la deuxième requête SQL aussi il manque des guillemets.

no frame no pain
2
boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
 
Bonjour,
pour corriger plus simplement ce genre de problème et isoler l'erreur il faut segmenter les actions.

Dans un premier temps, récupérer les variables concernées (çà a priori c'est déjà bien fait); dans un second temps, constituer la requête SQL de bout en bout et ne pas hésiter à l'afficher directement à l'écran (temporairement) pour voir si le résultat attendu est bien là. Enfin et en dernier utiliser mysql_query avec la requête bien formée..

Perso, je ne ne suis pas fan des variables POST directement dans mysql_query..

je verrai bien quelquechose dans le style :
$mavar = mysql_real_escape_string($_POST["mavar"]);

ensuite
$sql = "INSERT INTO ... VALUES ('$mavar')";
print "$sql"; // pour voir la requête utilisée

enfin
$sql1= mysql_query($sql);


bon courage ;)
1
DoulyCreations Messages postés 187 Date d'inscription   Statut Membre Dernière intervention   19
 
Bonjour,

En enlevant les espaces entre les "if" et les parenthèses ça donne quelque chose ?

0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Non, ça ne change rien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
creadiff Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   57
 
1. Gare aux failles SQL ! Utilise addslashes() pour tous les champs textes récupérés depuis $_POST, et (int) ou (float) pour les champs numériques

2. Tu as écrit mysql_erroe() tout à la fin

3. Le reste du script semble OK... mais j'ai déjà eu une erreur similaire à cause de l'en-tête XML... y en aurait-il un sur la page contenant le script ? Les <? ?> de l'en-tête risque alors d'être interprétés comme du PHP !
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Pour répondre à creadiff non je n'utilise pas de XML, mais je n'est pas très bien compris comment utiliser le addslshes(). J'ai lu que c'était inutile si les magic quotes sont désactivées. D'autre part la requête fonctionne et insert bien les infos dans la base de données
0
creadiff Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   57
 
Je faisais référence à l'[ entête XML] qui est souvent placé juste avant le DOCTYPE.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Titre</title>
  </head>
  <body>
    <p>Contenu</p>
  </body>
</html>


OK pour les magic_quotes... mais c'est souvent dangereux, car elles ne sont pas toujours activées selon la version de PHP utilisée. D'où des problèmes possibles lors de mises à jour ou de changement de serveur.
Avec addslashes, ça donnerait :
if (isset($_POST['nom'])) {
    $nom = addslashes($_POST['nom']);
}
ou même :
$nom = isset($_POST['nom']) ? addslashes($_POST['nom']) : "";


Pour tester si ton script est "safe"... essaie d'insérer des apostrophes !
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Merci creadiff de m'aider. j'ai essayé ce que tu m'a dit. J'ai modifier le code et rajouter les addshales mais j'ai toujours la même erreur qui s'affiche.
Avec un apostrophes la requête ne s'exécute pas du tout et sans apostrophes la requête s'exécute mais j'ai la même erreur.
Et je n'ai pas d'entête en XML ni dans le formulaire de saisies ni dans la page en php.

Sinon n'y aurait il pas un moyen de cacher cette erreur sachant que la requête s'exécute correctement?
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Pourrais-tu nous donner le code de ta page au complet, incluant le XHTML ?

Oui, il y aurait peut-être moyen de cacher l'erreur, mais encore faut-il savoir ce qui cause l'erreur exactement... ;-)
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Voilà le code de la page HTML:

<html>
<center><head><title>Inscription </title></head>
<body>
<form action="inscription.php" method="post">
<h1><font color=green>FORMULAIRE D'INSCRIPTION DES PROPRIETAIRES</font></h1>
<hr/>
<h5><font color=black><i>Veuillez remplir ce formulaire afin de vous inscrire en temps que propriétaire</i></font></h5></center>
<center>
<table>
<tr>
<td><b>Nom</b></td>
<td><input type="text" name="nom"  size="15" maxlength="15"/></td>
<tr>
<td><b>Rue</b></br></td>
<td><textarea name="rue" cols="25" rows="1"></textarea></td>
<tr><td><b>Code Postal</b></td> 
<td><input type="text" name="cp" size="5" maxlength="5"/></td>
<tr><td><b>Ville</b></td>
<td><input type="text" name="ville" size="20" maxlength="20"/></td>
<tr><td><b>Téléphone</b></td>
<td><input type="text" name="tel" size="10" maxlength="10"/></td>
<tr>
<td><b>Adresse Mail</b></td>
<td><input type="text" name="mail" size="35" maxlength="35"/></td>
<tr>
<td><b>Mot De Passe</b></td>
<td><input type="text" name="pass" size="35" maxlength="35"/></td>


</tr>
<td><input type="submit" value="Valider l'inscription"/></td>
<table>
</center>
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Et ton code PHP, il se situe où là-dedans ? Je ne vois ni balise <?php ni un include()...
Et est-ce que l'erreur que tu nous as donnée est l'erreur exacte qui s'affiche quand tu lances la page ?
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Si je ne me trompe pas c'est cette ligne qui envoie les infos de ce formulaire vers la page php et récupéré avec $_POSt dans la page php.
Voici la ligne :<form action="inscription.php" method="post">.
Oui l'erreur que j'ai donné est bien celle qui est afficher.
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Ah je comprends. J'avoue que je n'y avais pas pensé à celle-là. Et TOUT ce qui se trouve sur ta page inscription.php est dans ton post original, c'est ça ?
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Oui tout y est.
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Up!
0
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
dans notepad va dans format -> convertir en utf8 sans BOM

çà peut venir de çà .... à tester
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
J'ai modifié le code avec ce que m'a proposé Eastchild mais ça n'a rien changé, j'ai la même erreur, même avec l'encodage utf8 sans bom
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Il reste que c'était quelque chose qu'il fallait faire...
Peux-tu s'il te plaît nous reposter ton code PHP corrigé, qu'on l'aie sous les yeux ?
0
nSeris Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   31
 
Alors le code avec toutes les modifications que vous m'avez proposées:
<?php
$nom = isset($_POST['nom']) ? addslashes($_POST['nom']) : "";

$rue = isset($_POST['rue']) ? addslashes($_POST['rue']) : "";

$cp = isset($_POST['cp']) ? addslashes($_POST['cp']) : "";

$ville = isset($_POST['ville']) ? addslashes($_POST['ville']) : "";

$tel = isset($_POST['tel']) ? addslashes($_POST['tel']) : "";

$mail = isset($_POST['mail']) ? addslashes($_POST['mail']) : "";

$pass = isset($_POST['pass']) ? addslashes($_POST['pass']) : "";

$dbuser="root";
$dbhost="localhost";
$base="gdv";

$connect = mysql_connect('localhost', 'root');  
$db  = mysql_select_db("gdv") ;
mysql_select_db($base, $connect) or die(mysql_error());
$sql1= mysql_query("INSERT INTO proprio (NomProprio, RueProprio, CPProprio, VilleProprio, TelProprio, MelProprio) VALUES ('".$_POST["nom"]."','".$_POST["rue"]."','".$_POST["cp"]."','".$_POST["ville"]."','".$_POST["tel"]."','".$_POST["mail"]."')") or die(mysql_error());

$sql2=mysql_query("INSERT INTO membres (name, pass) VALUES ('".$_POST["nom"]."','".$_POST["pass"]."')");

$requete1 = mysql_query($sql1, $connect) or die( mysql_error() ) ;
$requete2=mysql_query($sql2, $connect) or die (mysql_error() );
?>
0
boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
 
tes requêtes sql reposent toujours sur les variables POST non modifiées et non les variables intermédiaires qui sont créées au début...

tente déjà ces deux lignes (commente le reste), puis copie colle la requête qu'il t'affiche sous un client SQL pour voir si elle est correcte .

$sql = "INSERT INTO proprio (NomProprio, RueProprio, CPProprio, VilleProprio, TelProprio, MelProprio) VALUES ('$nom','$rue','$cp','$ville','$tel$','$mail')";
print $sql;
0