Récupéré information formulaire: Pas d'inscription WAMP

Résolu/Fermé
EinsteinE=mc2 - 16 mai 2016 à 14:11
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017 - 17 mai 2016 à 01:06
Bonjour,

Merci à ceux qui prendront un moment pour m'aider.

Je suis débutant en php et je souhaite récupérer des données d'un formulaire d'inscription à mettre dans ma base de donnée PHPMYADMIN (WAMP). J'ai un souci c'est que ma requête passe, je n'ai pas d'erreur cependant rien ne s'inscrit dans ma base et j'arrive sur un écran blanc sans mon echo qui s'affiche ( j'avais mis echo 'Enregistrement effectué!' . J'ai bien fait un session start sur mon autre fichier php . Je ne voit pas ou ça bloque. :??: :??: :??: :??:

Voici mon code:


<?php 

session_start();
if (isset($_POST['Valider']))  // appui sur bouton 

{

	$Civilite=$_POST["civility"];
	$Nom=$_POST["lastname"];
	$Prenom=$_POST["firstname"];
	$Pays=$_POST["country"];
	$email=$_POST["mail"];
	$Utilisateur_mdp=$_POST["pass"];




	$db = new PDO('mysql:host=localhost;dbname=utilisateurs','root'); // connexion à la base de donnée
	$requete= $db->prepare("INSERT INTO utilsateur(Civilite, Nom, Prenom, Pays, email, Utilisateur_mdp) VALUES ('".$Civilite."','".$Nom."','".$Prenom."','".$Pays."','".$email."','".$Utilisateur_mdp."')");
	$requete->execute();
    
    $_SESSION["utilisateur"]= $_POST["Prenom"];// Permet de garder la connexion active de page en page 

 
 
echo 'Enregistrement effectué!';

else
{
	
echo 'buggggggggggggg';
	
}


13 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
16 mai 2016 à 14:25
Affiche la requête générée et essayes-la dans PhpMyAdmin;.
0
Bonjour Nhenry,

Merci pour ton temps , Voici ce que j'ai obtenu :

Erreur

Requête SQL :

INSERT INTO utilsateur(Civilite, Nom, Prenom, Pays, email, Utilisateur_mdp) VALUES ('"uuuu"','"hhhhh"','"hhhhh"','"fra"','"ggvgvgvg"','"jnnnjbbcc"')

MySQL a répondu: Documentation
#1146 - La table 'utilisateurs.utilsateur' n'existe pas
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
16 mai 2016 à 14:43
Si le problème est résolu, merci de cliquer sur "Marquer comme résolu"
Petite remarque, essayes de mettre un ' dans un champ et ensuite intéresses-toi aux injections SQL.
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 14:54
je suis débutant Nhenry , je comprend pas tout ce que tu dis ....
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
16 mai 2016 à 16:59
Une injection SQL est une "attaque" consistant à détourner une requête SQL en modifiant son contenu.

Par exemple, une ' dans un mon cassera ta requête SQL.
Dans ce cas, il te faut soit échapper les chaines d'entrée soit utiliser une requête paramétrée.

Recherches un peu sur le net.
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 15:27
help personne
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 16/05/2016 à 21:47
Bonjour,

Déjà .. on sépare la connexion de la BDD dans un fichier à part
pour éviter de devoir la copier/coller partout...
Donc :
<?php
//Fichier cnxBdd.php
try{
 $db = new PDO('mysql:host=localhost;dbname=utilisateurs'=>'root'); // connexion à la base de donnée
}catch(Exception $e){
  echo "<br>Erreur lors de la connexion à la bdd !".$e->getMessage();
}


Ensuite, on récupère PROPREMENT les variables AVANT de les utiliser.
Pour cela, on va utiliser l'écriture ternaire avec ISSET (ou !EMPTY selon nos préférences)
Puis, pour éviter les erreurs d'injection SQL, on va utiliser les requêtes préparées.
Pour finir, on ajoute des blocs TRY/CATCH pour intercepter les éventuelles erreurs.

<?php 
//Affichage des erreurs PHP
error_reporting(E_ALL);

//Démarrage des Sessions
session_start();

//connexion à la BDD 
require_once "cnxBdd.php";

// Récupération PROPRE des variables AVANT de les utiliser
$Civilite = isset($_POST["civility"]) ? $_POST["civility"] : '';
$Nom = !empty($_POST["lastname"]) ? $_POST["lastname"] : '';
$Prenom = isset($_POST["firstname"]) ? $_POST["firstname"] : '';
$Pays = isset($_POST["country"]) ? $_POST["country"] : '';
$email = isset($_POST["mail"]) ? $_POST["mail"] : '';
$Utilisateur_mdp = isset($_POST["pass"]) ? $_POST["pass"] : '';

//traitement du Submit
if (isset($_POST['Valider'])){

   //préparation de la requête
   $sql = "INSERT INTO utilsateur(Civilite, Nom, Prenom, Pays, email, Utilisateur_mdp) 
           VALUES (:Civilite,:Nom,:Prenom,:Pays,:email,:Utilisateur_mdp)";

    $variables = array(':Civilite'=>$Civilite
                       ,':Nom'=>$Nom
                       ,':Prenom'=>$Prenom
                       ,':Pays'=>$Pays
                       ,':email'=>$email
                       ,':Utilisateur_mdp' =>$Utilisateur_mdp);
   
  //exécution de la requete
  try{
   $requete= $db->prepare($sql);
   $requete->execute($variables);
    
    //Si tu as mis un champ auto-incrementé dans ta table
    // tu peux même récupérer l'ID sur lequel aura été inséré ta ligne
    $id = $db->lastInsertId(); 
    $_SESSION["id_user"] = $id;
    
    $_SESSION["utilisateur"]= $Prenom ;// Permet de garder la connexion active de page en page 
    echo 'Enregistrement effectué!';
  }catch(Exception $e){
    echo "<br>Erreur :".$e->getMessage();
    print_r($variables);//en cas d'erreur, affichage des variables
  }

} else{
 echo 'buggggggggggggg';
}



Cordialement, 
Jordane                                                                 
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2016 à 21:43
NB: Je viens de voir que tu avais nommé ta BDD : utilisateurs ? .. j'espère que tu ne confond pas BASE de données.. et TABLE.
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 21:45
Merci pour ta réponse Jordan !!! Non ma base de donnée s'appellent utilisateurs avec un s et ma table utilisateur au singulier :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2016 à 21:47
Je viens de faire une petite correction au niveau de la requête.
Reprend cette dernière version. (j'ai édité mon message précédent)
0

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

Posez votre question
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
Modifié par EinsteinE=mc2 le 16/05/2016 à 21:49
Je vais tester avec les modif que tu a fait mais je comprend pas bien ton fichier cnxBDD.php . C'est pour la connexion à la base de donnée mais comment je fais appel à celui-ci ?
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 21:50
Excuse moi je vient de voir la ligne correspondante autant pour moi ! Je teste illico
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 22:03
Alors j'ai une erreur :(

( ! ) Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in C:\wamp\www\WELLDRESSED\cnxBDD.php on line 4

cela correspond à cette ligne

$db = new PDO('mysql:host=localhost;dbname=utilisateurs'=>'root'); // connexion à la base de donnée
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2016 à 22:06
Et oui...
verifie bien comment se connecter à une bdd en pdo...
j'ai juste copier ton code... mais il est faut.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2016 à 22:07
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2016 à 22:08
Ah non. Au temps pour moi.. c'est mon copier/remplacer qui a fait ça
vire le => et remplace par une virgule.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2016 à 22:09
Par contre il te manque le password (a vide si tu n'en as pas mis)
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 22:37
Donc c'est corriger par contre au niveau du if il y a un problème car il me renvoit vert le else et donc sa affiche bugg :/
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2016 à 22:58
Sans voir le code de ton formulaire. .. impossible de t'aider
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 23:10


			<div id=droite_formu> 
				
			
						<form method="post" id="inscriptionform" action="inscription.php">
				<fieldset>
						<legend>    Inscription: </legend>
					<p >
						<label> Civilité<span> *</span></label>
									<select name="civility">
										<option value='1' >Mme</option>
										<option value='2' selected>MR</option> /* selection par défaut*/
									</select>
					<div id="nickname-element">
						<label>Nom<span> *</span></label>
												<input id="nickname" type="text" name="lastname" value="">
						<span id="nickname-info"></span>
					</div>
					<label>Prénom<span> *</span></label>
										<input type="text" name="firstname" value="">
					<label>Pays<span> *</span></label>
					<div class="select">
						<select name="country">
						<option value="AF">Afghanistan</option><option value="ZA">Afrique du Sud</option><option value="AL">Albanie</option><option value="DZ">Algérie</option><option value="DE">Allemagne</option><option value="AD">Andorre</option><option value="AO">Angola</option><option value="AI">Anguilla</option>	</select>
					</div>
					<label>Adresse e-mail<span> *</span></label>
										<input type="text" name="mail" value="">
					<label>Mot de passe<span> *</span></label>
										<input type="password" name="pass" value="">
			
										</br>
										</br>
			
				</fieldset> 
						<input type="submit" value="Valider" name="valider"> 
					</form>
						
				</div>
						
	





Du coup j'ai pas mis tous les pays par contre c'était trop long...
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 23:11
Désolé pour l’indentation....
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 23:17
Dans ton fichier inscription.php , peux tu mettre avant le IF un
print_r($_POST);

et nous dire ce que ça donne lorsque tu valides ton formulaire ?
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
Modifié par EinsteinE=mc2 le 16/05/2016 à 23:23
(c'est super cool d’essayer débugger le code avec moi )

Voilà ce que ça me donne une fois le formulaire validé

Array ( [civility] => 2 [lastname] => david [firstname] => jean [country] => FR [mail] => david@gmail.com [pass] => vffggg [valider] => Valider ) buggggggggggggg
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 23:27
Humm.. bizarre....

Essaye de remplacer
if (isset($_POST['Valider'])){

par :
if ($Nom){
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
16 mai 2016 à 23:40
J'obtiens cette erreur :

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\WELLDRESSED\inscription.php on line 37
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
Modifié par EinsteinE=mc2 le 17/05/2016 à 00:31
Bon alors la j'ai plus d'erreur déja mais un bon point mais il y a un souci :


- Je n'ai pas d'entrée dans ma base de donnée , les seuls qui y sont sont des utilisateurs test que j'ai rentré moi-même à la main.
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
Modifié par EinsteinE=mc2 le 17/05/2016 à 00:27
Bon alors la j'ai plus d'erreur déja mais un bon point mais il y a un souci :


- je n'ai pas d'entrée dans ma base de donnée , les seuls qui y sont sont des utilisateurs que j'ai rentré moi-même à la main
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
Modifié par EinsteinE=mc2 le 17/05/2016 à 00:28
Oké donc voilà ce que me retourne la nouvelle requête :



Il me dit enregistrement effectué mais j'ai toujours rien dans la base , j'ai peut être loupé une étape, dans la conf de la base de donnée parce que la j'y comprend plus rien....
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
17 mai 2016 à 00:25
J'ai mis des mot au hazard dans les cases du formulaire fait pas attention c'était juste pour tester...
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 17/05/2016 à 00:45
On va modifier le fichier de connexion à la bdd
de base, les Exceptions ne sont pas activées (pour afficher les erreurs)

 <?php
//Fichier cnxBdd.php
try{
 $db = new PDO('mysql:host=localhost;dbname=utilisateurs'=>'root'); // connexion à la base de donnée
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
  echo "<br>Erreur lors de la connexion à la bdd !".$e->getMessage();
}
?>



Cordialement, 
Jordane                                                                 
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
17 mai 2016 à 00:47
Et dans le code de ta page,
tu vas ajouté un echo de $id

En modifiant la ligne
   echo 'Enregistrement effectué!';

par :
  echo 'Enregistrement effectué !  <b>ID:</b> = '.$id; 
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
17 mai 2016 à 00:56
T'es un génie !!!!! :D :D :D j'ai plus sommeil tellement je suis content lol
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
17 mai 2016 à 00:58

T'es un génie

Ah ? ... mais par contre je n'ai plus de lampe à frotter.. :-)
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
17 mai 2016 à 01:00
En fait quand j'ai modifié le fichier de connexion à la bdd pour affiché les erreurs , il m'a dit dit qu'il ne trouvais pas la table ce qui était normal puisque si tu regarde le code plus haut j'ai mis utilsateur au lieu de utilisateur donc j'ai modifié cela et BIMM cela a fonctionné

Bon c'était un problème de c** en soit :') mais c'est la méthode de débuggage qui est cool
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
17 mai 2016 à 01:04
Et maintenant... tu as un code "propre".
Tiens en compte pour tes prochains dev.

Bonne soirée.
0
EinsteinE=mc2 Messages postés 40 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 19 octobre 2017
17 mai 2016 à 01:06
Yes merci beaucoup . Bonne soirée !
0