Problème PHP
Résolu/Fermé
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
-
23 avril 2013 à 14:28
mat78800 Messages postés 54 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 25 février 2016 - 14 mai 2013 à 09:06
mat78800 Messages postés 54 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 25 février 2016 - 14 mai 2013 à 09:06
A voir également:
- Problème PHP
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- Echo image php ✓ - Forum PHP
- Br php ✓ - Forum PHP
5 réponses
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
23 avril 2013 à 15:25
23 avril 2013 à 15:25
Salut !
Tu déclares un PDO, et tu utilises un mysql_db_query. Petit probème à ce niveau là :)
Ensuite, deuxieme ptit soucis : <select name="Dans quelpayshabitez-vous?" name="Pays">, tu as deux name.
Sinon, fais un test de sécurité pour vérifier que tes input ont bien été rempli :
if(isset($_POST) && !empty($_POST['Pseudo']) && !empty($_POST['Motdepasse']) && !empty($_POST['Pays']))
Pour t'éviter cela :
$Pseudo=$_POST['Pseudo'];
$Motdepasse=$_POST['Motdepasse'];
$Adresse=$_POST['Adresse'];
$Pays=$_POST['Pays'];
Tu peux faire un extract($_POST);
Ca va automatique te créer les variables :)
Et voici la doc de l'objet PDO pour executer une requete :
http://www.php.net/manual/fr/pdostatement.execute.php
Voilà :)
Tu déclares un PDO, et tu utilises un mysql_db_query. Petit probème à ce niveau là :)
Ensuite, deuxieme ptit soucis : <select name="Dans quelpayshabitez-vous?" name="Pays">, tu as deux name.
Sinon, fais un test de sécurité pour vérifier que tes input ont bien été rempli :
if(isset($_POST) && !empty($_POST['Pseudo']) && !empty($_POST['Motdepasse']) && !empty($_POST['Pays']))
Pour t'éviter cela :
$Pseudo=$_POST['Pseudo'];
$Motdepasse=$_POST['Motdepasse'];
$Adresse=$_POST['Adresse'];
$Pays=$_POST['Pays'];
Tu peux faire un extract($_POST);
Ca va automatique te créer les variables :)
Et voici la doc de l'objet PDO pour executer une requete :
http://www.php.net/manual/fr/pdostatement.execute.php
Voilà :)
Neoxz
Messages postés
20
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
26 mai 2013
1
23 avril 2013 à 14:29
23 avril 2013 à 14:29
Bizarre...
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
23 avril 2013 à 14:35
23 avril 2013 à 14:35
Bonjour,
Tu as un message d'erreur ou non ?
« je n'arrive pas à ajouter des données », c'est un peu léger comme description ^^'
Sinon à tout hasard, tu as un soucis dans ton bloc catch() qui n'est pas fermé :
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
il manque le
}
Tu as un message d'erreur ou non ?
« je n'arrive pas à ajouter des données », c'est un peu léger comme description ^^'
Sinon à tout hasard, tu as un soucis dans ton bloc catch() qui n'est pas fermé :
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
il manque le
}
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
23 avril 2013 à 14:47
23 avril 2013 à 14:47
merci il vient de me changer le message d'erreur ; voila ce quil me met :
Notice: Undefined variable: Pseudo in C:\wamp\www\Projet Isn\formulaire.php on line 47
Notice: Undefined variable: Motdepasse in C:\wamp\www\Projet Isn\formulaire.php on line 47
Notice: Undefined variable: Adresse in C:\wamp\www\Projet Isn\formulaire.php on line 47
Notice: Undefined variable: Pays in C:\wamp\www\Projet Isn\formulaire.php on line 4
Deprecated: Function mysql_db_query() is deprecated in C:\wamp\www\Projet Isn\formulaire.php on line 47
Deprecated: mysql_db_query(): This function is deprecated; use mysql_query() instead in C:\wamp\www\Projet Isn\formulaire.php on line 47
L'élément a bien été inséré !
la ligne 47 est : ('$Pseudo','$Motdepasse','$Adresse', '$Pays)");
Notice: Undefined variable: Pseudo in C:\wamp\www\Projet Isn\formulaire.php on line 47
Notice: Undefined variable: Motdepasse in C:\wamp\www\Projet Isn\formulaire.php on line 47
Notice: Undefined variable: Adresse in C:\wamp\www\Projet Isn\formulaire.php on line 47
Notice: Undefined variable: Pays in C:\wamp\www\Projet Isn\formulaire.php on line 4
Deprecated: Function mysql_db_query() is deprecated in C:\wamp\www\Projet Isn\formulaire.php on line 47
Deprecated: mysql_db_query(): This function is deprecated; use mysql_query() instead in C:\wamp\www\Projet Isn\formulaire.php on line 47
L'élément a bien été inséré !
la ligne 47 est : ('$Pseudo','$Motdepasse','$Adresse', '$Pays)");
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
23 avril 2013 à 15:13
23 avril 2013 à 15:13
Ta page, c'est bien "after.php" ?
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
23 avril 2013 à 15:16
23 avril 2013 à 15:16
Ma page cible oui ...
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
23 avril 2013 à 15:31
23 avril 2013 à 15:31
Alors tu as un soucis, parce que ton code d'insertion est dans ta page source !
Il faut le mettre dans la page cible.
Il faut le mettre dans la page cible.
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
1 mai 2013 à 16:23
1 mai 2013 à 16:23
Comment ca?? FAut que je mette le formulaire dans l'une et le code php dans l'autre??
ShayFmw
Messages postés
106
Date d'inscription
samedi 12 janvier 2013
Statut
Membre
Dernière intervention
10 juillet 2013
43
1 mai 2013 à 23:39
1 mai 2013 à 23:39
Non, il est tout à fait possible d'utiliser la même page en tant que formulaire et insertion des données du formulaire. (donc normalement tu n'as qu'une seule page nommée "After.php")
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
9 mai 2013 à 10:36
9 mai 2013 à 10:36
Ah ok ! Merci . Par contre je comprend pas tres bien ce que jeremy.s m'a dit sur le PDO tu peut m'aider?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
the_jb
Messages postés
651
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
9 mai 2016
58
10 mai 2013 à 09:55
10 mai 2013 à 09:55
"<select name="Dans quelpayshabitez-vous?" name="Pays">"
Le name de ton <select> va être ta variable à récupèrer. tu veux donc récupérer la valeur de ton option (<option value="...">)
donc tu ne peux pas avoir 2 names dans un <select>, si tu veux tu peux mettre
id="Dans quelpayshabitez-vous?" mais pour moi c'est inutile.
Evites les majuscules dans tes variables ou donne toi des normes de codages du style "nomPersonne" ou "prenomPersonne". Pour la rapidité et simplicité de debug et compréhension du code. Idem pour tes noms de fichiers.
j'vais corrigé rapidement ton code :
<html>
<body>
<form action="After.php" method="post">
<p>
Pseudo : <input type ="text" name="Pseudo" /> <br><br>
Mot de passe : <input type ="text" name="Motdepasse" /> <br><br>
Adresse mail : <input type ="text" name="Adresse" /> <br><br>
Dans quel pays habitez-vous? : <select name="Pays">
<option value="France">France </option>
<option value="Canada">Canada </option>
<option value="Royaume-Uni">Royaume-Uni </option>
<option value="Espagne">Espagne</option>
<option value="Italie">Italie</option>
<option value="Allemagne">Allemagne</option>
</select><br>
<input type="submit" name="bt" value="Valider" /><br>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=nomdelabase', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
if ($_POST['bt'])
{
//recuperation des name
$Pseudo=$_POST['Pseudo'];
$Motdepasse=$_POST['Motdepasse'];
$Adresse=$_POST['Adresse'];
$Pays=$_POST['Pays'];
$ok=$bdd->exec("INSERT INTO membres (Pseudo,Motdepasse,Adresse,Pays)VALUES ('$Pseudo','$Motdepasse','$Adresse', '$Pays')");
echo"<div align='center'>";
echo"<font face='Verdana' size='3' >L'élément a bien été inséré !</font>";
echo"</div>";
}
?>
</p>
</form>
</body>
</html>
test ça s'il te plait et donne m'en des news.
Le name de ton <select> va être ta variable à récupèrer. tu veux donc récupérer la valeur de ton option (<option value="...">)
donc tu ne peux pas avoir 2 names dans un <select>, si tu veux tu peux mettre
id="Dans quelpayshabitez-vous?" mais pour moi c'est inutile.
Evites les majuscules dans tes variables ou donne toi des normes de codages du style "nomPersonne" ou "prenomPersonne". Pour la rapidité et simplicité de debug et compréhension du code. Idem pour tes noms de fichiers.
j'vais corrigé rapidement ton code :
<html>
<body>
<form action="After.php" method="post">
<p>
Pseudo : <input type ="text" name="Pseudo" /> <br><br>
Mot de passe : <input type ="text" name="Motdepasse" /> <br><br>
Adresse mail : <input type ="text" name="Adresse" /> <br><br>
Dans quel pays habitez-vous? : <select name="Pays">
<option value="France">France </option>
<option value="Canada">Canada </option>
<option value="Royaume-Uni">Royaume-Uni </option>
<option value="Espagne">Espagne</option>
<option value="Italie">Italie</option>
<option value="Allemagne">Allemagne</option>
</select><br>
<input type="submit" name="bt" value="Valider" /><br>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=nomdelabase', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
if ($_POST['bt'])
{
//recuperation des name
$Pseudo=$_POST['Pseudo'];
$Motdepasse=$_POST['Motdepasse'];
$Adresse=$_POST['Adresse'];
$Pays=$_POST['Pays'];
$ok=$bdd->exec("INSERT INTO membres (Pseudo,Motdepasse,Adresse,Pays)VALUES ('$Pseudo','$Motdepasse','$Adresse', '$Pays')");
echo"<div align='center'>";
echo"<font face='Verdana' size='3' >L'élément a bien été inséré !</font>";
echo"</div>";
}
?>
</p>
</form>
</body>
</html>
test ça s'il te plait et donne m'en des news.
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
10 mai 2013 à 12:00
10 mai 2013 à 12:00
Sa marche tres bien Merci Bien !
et une petite question encore : Comment peut t'on s'assurer que l'utilisateur te donne une adresse mail valide ( genre avec @hotmail.fr)??
et une petite question encore : Comment peut t'on s'assurer que l'utilisateur te donne une adresse mail valide ( genre avec @hotmail.fr)??
the_jb
Messages postés
651
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
9 mai 2016
58
Modifié par the_jb le 10/05/2013 à 14:54
Modifié par the_jb le 10/05/2013 à 14:54
Tu peux décomposer ta variable qui contient le mail.
$domain = explode('@', $email);
if (checkdnsrr($domain[1]))
echo "Domaine de l'adresse valide";
ou
utilisé la fonction filter_var() de php
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "email valide";
}
ou
Assurer une écriture correcte et valide
function VerifierAdresseMail($adresse)
{
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
if(preg_match($Syntaxe,$adresse))
return true;
else
return false;
}
$adresse=htmlentities($_POST['adresse']);
if(VerifierAdresseMail($adresse))
echo '<p>Votre adresse est valide.</p>';
else
echo '<p>Votre adresse e-mail n\'est pas valide.</p>';
En espérant répondre à tes attentes. ( Ce post est-il résolu ? )
$domain = explode('@', $email);
if (checkdnsrr($domain[1]))
echo "Domaine de l'adresse valide";
ou
utilisé la fonction filter_var() de php
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "email valide";
}
ou
Assurer une écriture correcte et valide
function VerifierAdresseMail($adresse)
{
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
if(preg_match($Syntaxe,$adresse))
return true;
else
return false;
}
$adresse=htmlentities($_POST['adresse']);
if(VerifierAdresseMail($adresse))
echo '<p>Votre adresse est valide.</p>';
else
echo '<p>Votre adresse e-mail n\'est pas valide.</p>';
En espérant répondre à tes attentes. ( Ce post est-il résolu ? )
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
10 mai 2013 à 20:10
10 mai 2013 à 20:10
Bah oui et non car je t'avoue que je suis toujours de plus en plus gourmand ;)
Le dernier code que tu m'a donnez est tres bien mais meme si le mail est pas valide il me l'enregistre quand meme.
Et comment peut t'on faire pour que quand on demande deux fois le mod de passe, à l'utilisateur, il lui disent s'il est identique??
Le dernier code que tu m'a donnez est tres bien mais meme si le mail est pas valide il me l'enregistre quand meme.
Et comment peut t'on faire pour que quand on demande deux fois le mod de passe, à l'utilisateur, il lui disent s'il est identique??
the_jb
Messages postés
651
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
9 mai 2016
58
10 mai 2013 à 22:03
10 mai 2013 à 22:03
Mot de passe : <input type ="text" name="Motdepasse" />
Mot de passe de confirmation : <input type ="text" name="Motdepasse2" />
if($_POST['motdepasse'] == $_POST['motdepasse2'])
{
echo "mot de passe identique";
}
else
{
echo "mot de passe de confirmation incorrecte";
}
Tout simplement, n'oubli pas de mettre les <input> dans un <form>
Mot de passe de confirmation : <input type ="text" name="Motdepasse2" />
if($_POST['motdepasse'] == $_POST['motdepasse2'])
{
echo "mot de passe identique";
}
else
{
echo "mot de passe de confirmation incorrecte";
}
Tout simplement, n'oubli pas de mettre les <input> dans un <form>
mat78800
Messages postés
54
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
25 février 2016
10 mai 2013 à 22:18
10 mai 2013 à 22:18
Ok merci ! mais seulement je crois que je met ces truc au mauvais endroit vu que la personne peut comme accepter si les mod de passes sont différent...
1 mai 2013 à 16:11
9 mai 2013 à 19:56
10 mai 2013 à 00:53
10 mai 2013 à 12:01
10 mai 2013 à 14:49