bonjour,svp j'ai des données de formulaire qui ne s'ajoute pas dans ma base pourtant ces valeurs sont correctes et lorsque je l'affiche il s'affiche.
la fonction d'insertion est la suivante:

public function classement_choix_tech_int($c,$p)
     {
         $candidat="insert into ordre_choix_tech_int values('','".$_SESSION["CIN"]."','".$_SESSION["nom"]."','".$_SESSION["prenom"]."','".$p['choix1']."','".$p['choix2']."','".$p['choix3']."','".$p['choix4']."')";
 if($c->query($candidat)) {return "ajout est terminé avec succes";}else return "impossible "; }

pouvez vous m'aider svp? et merci d'avance

6 réponses


On peut avoir la structure de ta table ordre_choix_tech_int ? Car tu entre en 1ère valeur une valeur nulle. Je suppose que la 1ère colonne est un id, en clé primaire et en auto-incrementation. Si tu rentre une valeur nulle à chaque fois, ça ne peux fonctionner puisque si c'est une clé primaire, la valeur null est interdite.

sirine
Auteur

non sans id. j'ai changé la requète comme suit
$ordre="insert into ordre_choix_tech_int values ('".$_SESSION["CIN"]."','".$_SESSION["nom"]."','".$_SESSION["prenom"]."','".$p['choix1']."','".$p['choix2']."','".$p['choix3']."','".$p['choix4']."')";
if($c->query($ordre)) {return "ajout est terminé avec succes";}else return "impossible "; }

elle a bien ajouté seulement 2 ligne à partir du troisieme elle n'ajoute rien :(

Si tu ne précise pas les champs où tu fais un Insert, il faut que tous les champs de ta table soient précisés dans ta requête. Comme tu ne dois pas préciser ton id, il faut que tu précise les colonnes.

http://sql.sh/cours/insert-into pour plus d'infos.
Et donne la structure de ta table si tu veux de l'aide plus précise.

sirine
Auteur

oui j'ai fait un insert dans touts les colonnes du table.
voila la structure du table
http://prntscr.com/7306l0

sirine
Auteur

il faut savoir que j'ai réussit à insérer 2 lignes avec cette requéte mais à partir de troisième ne s'ajoute rien dans mon table

Ah donc il y avait une valeur de trop dans ta 1ère requête.
Est-ce que tu as essayé de faire un echo de $candidat ? Pour voir les requêtes qui sont insérées ?

. C'est normal que tous les champs n'acceptent pas des valeurs nulles ? Sur la clé primaire c'est important (même obligatoire) mais sur les autres, ça l'est moins puisque c'est en php qu'on s'assure d'insérer toutes les données nécessaires. Là, si ton code récupère mal une valeur, ta requête va essayer d'insérer une valeur nulle et va échouer.

. Est-ce que tous tes INSERT avaient une valeur de cin_c différente ? Car plusieurs lignes de ta table ne peuvent avoir la même valeur en clé primaire.

Puisque ça a fonctionné 2 fois, je pense que ça vient d'un ces deux points surêment.