Erreur ! SQLSTATE[23000]: Integrity constraint violation: 10

Résolu/Fermé
maxi30 - Modifié le 4 déc. 2021 à 11:25
 maxi30 - 4 déc. 2021 à 14:02
Bonjour,

Bonjour , je sollicite votre aide pour remplir id_catégorie après la soumission d'un formulaire.

Il s'agit donc:

1- table categories a pour champs (id et categorie).--> Cette table est liée à annonces. --> Les 2 champs sont également remplis

2- annonces a pour champs (id, id_categorie.....).

Je pense que le problème se situe au niveau de ma fonction getCategories. Le formulaire affiche une erreur lors de la soumission:

Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'id_categorie' ne peut �tre vide (null)

Ai-je mal fait ma fonction ou mon mon formulaire?

NB: Mes autres tables que je n'ai pas citées se remplissent parfaitment, uniquemet celle là (catégories), car plus dire avec une fonction de type select

formulaire.php:
<label for="categorieannonce"><?php echo $lang['ca'];?></label>
                <select name="categorie">
                <optgroup label= "<?php echo $lang['immo'];?>">
                    <option value= "1"> <?php echo $lang['appa'];?></option>
                    <option value= "2"> <?php echo $lang['mv'];?></option>
                    <option value= "3"> <?php echo $lang['terr'];?></option>
                </optgroup> <br> <br>


fonction getCategories dans commandes.php:

function getCategories($nom_categorie){
  global $bdd;
  $sql="SELECT * FROM categories WHERE id= '$nom_categorie' ";
 
try{
$req = $bdd->prepare($sql);
$req->execute();
$datas= $req->fetchAll(PDO::FETCH_ASSOC);
 
}catch(Exception $e){
 
  echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
}


if(isset($_POST['formannonce'])) {
$nom_categorie= trim($_POST['categorie']);
$id_categorie= getCategories($nom_categorie);
}

Configuration: Windows / Chrome 96.0.4664.45

3 réponses

yg_be Messages postés 22713 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 474
4 déc. 2021 à 13:25
bonjour,
cela ressemble plutôt à une définition incorrecte de la table.
je suggère que tu modifies ton code afin de pouvoir déterminer précisément à quel endroit l'erreur se produit.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
4 déc. 2021 à 13:44
Bonjour
$_POST['categorie']
contient déjà l'id de la catégorie choisie.
Tu n'as donc pas besoin d'aller faire une requête pour le récupérer sachant que tu l'as déjà
0
ça a marché! J'ai tellement galéré pour ça! Merci encore Jordane pour tes instructions :). Voilà ce que j'ai fait si plus tard ça peut aider des gens.
1-J'ai supprimé la fonction getCatgories,
2-Code:
$id_categorie= ($_POST['categorie']);
0