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

Résolu/Fermé
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 - 29 mai 2013 à 10:24
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 - 29 mai 2013 à 14:55
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

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]
2
Utilisateur anonyme
29 mai 2013 à 11:26
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.
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
29 mai 2013 à 11:45
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.
0
SkollLegions Messages postés 52 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 5 juillet 2013 6
29 mai 2013 à 11:28
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 !
0
Utilisateur anonyme
29 mai 2013 à 11:39
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!
0
SkollLegions Messages postés 52 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 5 juillet 2013 6
29 mai 2013 à 11:40
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 ?
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
29 mai 2013 à 11:42
Je les ai rajouté car j'avais une erreur Sql d'index , normalement je ne les met pas.
0
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
29 mai 2013 à 13:08
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.
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
29 mai 2013 à 13:40
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.
0

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

Posez votre question
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
29 mai 2013 à 14:23
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);
}
}
?>
0
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
29 mai 2013 à 14:33
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!
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
29 mai 2013 à 14:42
En effet cela fonctionne :)

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