Insertion base de données formulaire php [Fermé]

Signaler
Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014
-
Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014
-
voici mon code php pour faire une insertion à la base de données mais r1 l'insertion est faite le champ id incrémenté mais les restes champs sont nuls !!
stp die moi qsq je doit faire

<?php


// connexion à la base


$db = mysql_connect('127.0.0.1', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('gestion') or die('Erreur de selection '.mysql_error());
// On commence par récupérer les champs

if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['cod_grad'])) $cod_Grad=$_POST['cod_grad'];
else $cod_Grad="";

if(isset($_POST['cod_ens'])) $cod_Ens=$_POST['cod_ens'];
else $cod_Ens="";



// on écrit la requête sql
$sql = ("INSERT INTO enseignant VALUES('','$nom','$prenom','$cod_Grad','$cod_Ens')");

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

mysql_close(); // on ferme la connexion
}


?>

<html>
<form method="POST" action="insert.php">
<center>
<input type="text" name="Nom" size="20" value="nom" ><br>
<input type="text" name="Prenom" size="20" value="prenom"><br>
<input type="text" name="Cod_Ens" size="20" value="code enseignant" ><br>
<input type="text" name="Cod_Grad" size="20" value="code grade" ><br>
<input type="submit" value="Envoyer" name="envoyer">
</center>
</form>

</html>

6 réponses

Bonjour

Ta requête a l'air tout à fait correcte, mais tu te trompes sur les noms des champs.
Le champ qui contient le nom s'appelle 'Nom' et pas 'nom'.
Soit tu mets name='nom' (avec une minuscule) dans le formulaire
Soit tu mets $_POST['Nom'] (avec une majuscule) dans le traitement
mais tu ne mélanges pas les deux.

Même chose pour les autres champs, évidemment.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014

et encore les champs sont nuls :(

Si tout est dans le même fichier, tel que ton code est écrit ici, c'est normal que ça insère une fois des données vides car tu exécutes ta requête même si aucune donnée n'est saisie. Mais quand tu cliques sur Envoyer, ça devrait insérer les données.
Le fichier que tu montres est bien inserer.php ?
Ajoute
echo $sql;
juste avant le mysql_query pour voir quelle requête est réellement exécutée.
Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014

oui tout est dans le meme fichier comment je faire pour insérer les données non vide?
quand je met echo $sql;
affiche INSERT INTO enseignant VALUES('', ' ',' ',' ',' ')!!

1 - L'affichage que tu donnes est bien celui obtiens quand tu cliques sur Envoyer ?
2 - ajoute print_r($_POST); au début de ton script et recopie ce que ça affiche
Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014

1-quand je cliquer sur envoyer affiche INSERT INTO enseignant VALUES('','koukou','hass','ggg','ccc')
2-affiche ça Array ( [Nom] => nom [Prenom] => prenom [Cod_Ens] => code enseignant [Cod_Grad] => code grade [envoyer] => Envoyer ) INSERT INTO enseignant VALUES('','nom','prenom','code grade','code enseignant')
Alors, si tu n'as pas de message d'erreur, ça doit bien insérer dans ta base. Tu as vérifié avec phpMyAdmin ?
Utilisateur anonyme
Edit : J'ai peur de comprendre tout à coup... Quand tu parles de champs vides, tu parles des champs du formulaire, ou des champ dans la base ?
Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014

nn ,les champ dans la base sont vides
Messages postés
3635
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
8 octobre 2020
972
Bonjour,

Je suis en phase avec le père.
Je pense que pour commencer, on pourrait arrêter d'enregistrer une ligne vide à chaque fois que tu charges la page, en rajoutant un
if
à ton code :

// on insère les informations du formulaire dans la table
if ($nom != '')
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 


Je me demande si dans ta base, tu n'as pas en fait bien enregistré les données, mais que tu ne les voies pas car elles seraient complètement noyées sous les lignes vides...

Donc exécute aussi au passage un petit coup de nettoyage :
DELETE FROM enseignant WHERE nom = ''

(Je ne connais pas le nom de la colonne « nom », mets le bon dans la requête...

Xavier
Messages postés
8
Date d'inscription
lundi 3 mars 2014
Statut
Membre
Dernière intervention
29 mars 2014

méme si j' ajoute un if la mème chose l'insertion est fait car le ID est incrémenter mais le contenu des champs de la base sont vides 0 !!
je ne compris pas pourquoi !!
Messages postés
3607
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
28 mars 2018
329
$sql = ("INSERT INTO enseignant ('nom', 'prenom', 'grade', 'ens') VALUES ('" . $nom . "', '" . $prenom . "', '" . $cod_Grad ."', '" . $cod_Ens . "')");

remplace nom, prenom, grade et ens par le nom des tableaux.
Utilisateur anonyme
Bonjour

Cette modification ne fait qu'alourdir l'écriture. S'il n'y a pas de message d'erreur malgré le 'or die', c'est qu'il n'y a pas de problème à ce niveau.