Rien ne s'enregistre sur la Base de Données.

Résolu/Fermé
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
3 février 2016
-
Messages postés
4233
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
-
Bonjour à tous ,

Je vous explique mon problème , ressament , on m'a demander de créer une base de données avec une interface Web (par navigateur). Et tous cela a mettre sur un serveur Web.
Donc me voila partit , on ne ma pas laisser le choix , je doit utiliser Xampp.
Etant donner que je ne connaissais pas forcement son fonctionnement , je decide de faire une petite base sur phpmyadmin nommer Test1 avec une table utilisateur.
Donc je fais deux petite pages PHP et je fais un formulaire d'enregistrement.
C'est la ou sa coince , lorsque je veut envoier les données du formulaire vers la BDD , la page ce recharge , et aucune données ne s'enregistre sur la base.

Pourtant j'ai utilisé les méme script que j'ai l'habitude d'utiliser. Mais cela ne marche pas
Donc je ne sais pas si c'est un problème de code ou de config du serveur.

Je vous copie-colle le formulaire + le code PHP.

<center><form action="" method="post">
<div>
<label for="nom">Nom :</label>
<input type="text" id="Nom" />
</div>

<div>
<label for="prenom">Prenom :</label>
<input type="text" id="Prenom" />
</div>

<div class="button">
<button name="envoyer" type="submit">Enregistrement</button>
</div>


<?php
if(isset($_POST['envoyer']))
{
$Nom=isset($_POST['Nom']);
$Prenom=isset($_POST['Prenom']);
$Age=isset($_POST['Age']);

$base=mysqli_connect('localhost','root','root');
mysql_select_db('test1');
$sql='INSERT INTO utilisateur VALUES("","'.$Nom.'","'.$Prenom.'")';

mysqli_query($base,$sql);
mysqli_close($base);
}
?>




Voila , en ésperant que vous pourez me donner une solution, car cela fait 2 jours que je suis bloquer dessus.

5 réponses

Messages postés
816
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
24 novembre 2018
95
Je pense que ce n'est pas une obligation non plus dans le sens où s'il reconnait bien l'envoi par le bouton submit, les autres champs seront soumis aussi, il pourront être vide mais ils existeront. Il faudrait vérifier en plus : !empty($_POST['Prenom'])

Je pense que tu avais un défaut d'index car tes champs input ne possèdent pas l'attribut name dont tu a besoin pour récupérer les variables :
Pour un élément tel que
<input type="text" name="Prenom" />
Tu récupère avec :
$_POST['Prenom']
Du coup tu n'as peut être plus d'erreur d'index mais les conditions ne sont pas remplies et tes variables($Nom, $Prenom..) sont surement vides.

Il y a plsieurs petites chose qui posent problème..


Résolu? ===> [RESOLU]
Messages postés
816
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
24 novembre 2018
95
Salut salut,

Tout d'abord dans ton code es tu sûr que isset($_POST['Nom']) retourne une variable, pour moi isset renvoie vrai ou faux.

Est ce que tu as des messages d'erreur ça nous aidera à t'aider plus rapidement.
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
3 février 2016
12
Je n'ai aucun message d'erreur , cela fait comme une actualisation de page quand j'appuye sur le bouton enregistrer , les champs du formulaire ce réinitialise.
Messages postés
51
Date d'inscription
mardi 28 mai 2013
Statut
Membre
Dernière intervention
5 juillet 2013
8
Tu oublies le nom des champs dans la requête.

Elle devrait plutôt ressembler à ça :

$sql='INSERT INTO utilisateur(ID, NOM, PRENOM) VALUES("","'.$Nom.'","'.$Prenom.'")';

En admettant bien sûr que tes champs s'appellent ID, NOM et PRENOM. A toi de remplacer !
Messages postés
816
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
24 novembre 2018
95
Ce n'est pas une obligation de préciser les noms de colonne dans une requête de ce type. Ca marche très bien sans!
Messages postés
51
Date d'inscription
mardi 28 mai 2013
Statut
Membre
Dernière intervention
5 juillet 2013
8
Ah ouais ? Bon, j'ai appris un truc ! ça fait longteeeeemps que j'ai pas touché à ces machins...

Sinon, je me pose une question là, dans cette partie :

<?php
if(isset($_POST['envoyer']))
{
$Nom=isset($_POST['Nom']);
$Prenom=isset($_POST['Prenom']);
$Age=isset($_POST['Age']);

Est ce que les trois "isset" avant les $_POST sont utiles ?
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
3 février 2016
12
Je les ai rajouté car j'avais une erreur Sql d'index , normalement je ne les met pas.
Messages postés
4233
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
168
Salut,

Normal, t'as un problème à ce niveau:
$Nom=isset($_POST['Nom']);
$Prenom=isset($_POST['Prenom']);
$Age=isset($_POST['Age']);

isset est une fonction qui renverra true ou false, donc dans tes variables $Nom, $Prenom et $Age c'est true ou false qui s'y trouve.

Enlève les isset et échappes les données que t'as reçu du formulaire aavec htmlspecialchars avant de les insérer dans ta base de données vu que t'utilises pas de requête préparée.
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
3 février 2016
12
Si je remplace les "isset" par "htmlspecialchars" , lors de la validation du formulaire j'ai une erreur : Notice: Undefined index: Nom in E:\xampp\htdocs\Site\Enregistrement.php on line 110

Pareil pour les autres variables.
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
3 février 2016
12
Voici le nouveau code , compte tenu de vos réponce (j'ai fait au mieu je ne suis que un debutant en php)

<?php
if(isset($_POST['envoyer']))
{
if (!empty($_POST['Nom'])&&!empty($_POST['Prenom']))
{
$Name=htmlspecialchars($_POST['Nom']);
$Prename=htmlspecialchars($_POST['Prenom']);


$base=mysql_connect('localhost','root','root');
mysql_select_db('test1');
$sql='INSERT INTO utilisateur VALUES("","'.$Name.'","'.$Prename.'")';

mysqli_query($base,$sql);


mysqli_close($base);
}
}
?>
Messages postés
4233
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
168
Essaies de suivre le conseil de kyser en ajoutant un attribut name dans tes input comme ceci:

<center><form action="" method="post"> 
<div> 
<label for="nom">Nom :</label> 
<input type="text" id="Nom" name="Nom" /> 
</div> 

<div> 
<label for="prenom">Prenom :</label> 
<input type="text" id="Prenom" name="Prenom"/> 
</div> 

<div class="button"> 
<button name="envoyer" type="submit">Enregistrement</button> 
</div> 

Le reste tu changes pas, ça devrait fonctionner maintenant!
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
3 février 2016
12
En effet cela fonctionne :)

Je vous remercie grandement pour l'aide que vous m'avez apporté.
Messages postés
4233
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
168
Cool alors, continue de persévérer et n'hésite pas à revenir si t'as d'autres problèmes.