[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 -
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:
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:
- [PHP] Erreur incompréhensible
- Erreur 0x80070643 - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
12 réponses
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 :
le code corrigé donne ça :
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
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
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 :
ensuite
enfin
bon courage ;)
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 ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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 !
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
Je faisais référence à l'[ entête XML] qui est souvent placé juste avant le DOCTYPE.
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 :
Pour tester si ton script est "safe"... essaie d'insérer des apostrophes !
<?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 !
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?
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?
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>
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.
Voici la ligne :<form action="inscription.php" method="post">.
Oui l'erreur que j'ai donné est bien celle qui est afficher.
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
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() ); ?>
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 .
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;