Problème avec une requête insert vers bdd

Ce sujet est résolu
Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code. J'ai une base de données correspondant a un magasins, j'arrive a ajouter dans ma table rayon qui ne contiens qu'une colonne. Mais je n'arrive pas a refaire la même pour les produits qui ont eux plusieurs colonnes a remplir, en ésperant que l'un de vous puisse m'aider a comprendre ou se trouve mon erreur

<?php include '../Header.html'; ?>
<html>
<body>
    <form method="POST" action="Ajouter Un Produit.php">

         <p>  <label for="categorie"> Rayon:</label>
            <select size="1" id="categorie" name="a">
                <?php
                $bdd = new PDO('mysql:host=localhost;dbname=magasins;charset=utf8', 'root', '');
                $recup = $bdd->prepare("SELECT * FROM  categorie");

                $affichage = $recup->execute();

                $categories = $recup->fetchAll() ;
                foreach ($categories as $categorie):
                ?>
                          <option value="<?php $categorie['id'] ?>"><?php echo $categorie['nom']?> </option> <?php  endforeach; ?>
<           </select>
        </p>
       <p> <label for="produit">Nom:          </label>    <input type="text"  id="produit"   name="b" placeholder="Produit">        </p>
       <p> <label for="codebarre">Code_Barre: </label>    <input type="text"  id="codebarre" name="c" placeholder="Code_barre">    </p> 
       <p> <label for="poids">Poids:          </label>    <input type="text"  id="poids"     name="d" placeholder="Poids en kg">       </p> 
       <p> <label for="quantite">Quantite:    </label>    <input type="text"  id="quantite"  name="e" placeholder="Quantite">  </p> 
       <p> <label for="prix">Prix:            </label>    <input type="text"  id="prix"      name="f" placeholder="Prix ht en e">  </p> 
       <p> <label for="remise">Remise:        </label>    <input type="text"  id="remise"    name="g" placeholder="Remise en %"> </p> 

       <p>  <label for="tva">TVA:</label>
            <select size="1" id="tva" name="h">
                <?php
                $bdd = new PDO('mysql:host=localhost;dbname=magasins;charset=utf8', 'root', '');
                $recup = $bdd->prepare("SELECT * FROM  tva");

                $affichage = $recup->execute();

                $tva = $recup->fetchAll() ;
                foreach ($tva as $taux):
                ?>
                <option value="<?php $taux['id'] ?>"><?php echo $taux['taux']?> </option> <?php  endforeach; ?>
             </select>
        </p>

         <input type="submit" value="Envoyer" />
         <button type="reset"   value="BouttonReset"    name="ResetChamps">   Vider les champs</button>

    </form>
</body>
</html>

<?php
// On commence par récupérer les champs
if(isset($_POST['a']) and isset($_POST['b']) and isset($_POST['c']) and isset($_POST['d']) and isset($_POST['e'])and isset($_POST['f'])and isset($_POST['g'])and isset($_POST['h']))
{

    $bdd = new PDO('mysql:host=localhost;dbname=magasins;charset=utf8', 'root', '');


    // on écrit la requête sql
    $sql = "INSERT INTO produit
                          (id_categorie,nom,code_barre,poids,quantite,prix_ht,remise,id_taux)
      VALUES (?,?,?,?,?,?,?,?)";

    // on insère les informations du formulaire dans la table
    $req=$bdd->prepare($sql);
    $req->execute(array($_POST['a'],$_POST['b'],$_POST['c'],$_POST['d'],$_POST['e'],$_POST['f'],$_POST['g'],$_POST['h']));


    // on affiche le résultat pour le visiteur
    echo 'Vos infos on ete ajoutees.'.'<br  /> ';

}
// On vérifie si les champs sont vides
else
{
    echo '<h1> <p style="text-align:center;color:red"> Champs vide </h1></p>';

    var_dump($sql['nom']);
}

?>

Je tiens a preciser qu'il n'y a aucune erreur apparente j'ai chercher la source du problème mais je n'ai absolument rien trouvé

4 Réponse

Default
,

Bonjour a tous j'ai trouver la source de mon problème

Il faut remplacer cela

 <option value="<?php $categorie['id'] ?>"><?php echo $categorie['nom']?> </option> <?php  endforeach; ?>
<option value="<?php $taux['id'] ?>"><?php echo $taux['taux']?> </option> <?php  endforeach; ?>

par cela:

<option value="<?= $categorie['id_categorie'] ?>"><?php echo $categorie['nom']?> </option> <?php  endforeach; ?>
<option value="<?= $taux['id'] ?>"><?php echo $taux['taux']?> </option> <?php  endforeach; ?>


40917
,

bonjour.
activation des erreurs PDO
pas besoin de faire 3 fois la connexion

Default
,

je prends les paris pour une conversion string => float qui ne se fait pas bien.
Mais c'est vraiment au pif

Default
,

@Carouge10, Merci pour ta reponse je l'est ai enlever c'est vrai que ça ma enlever beaucoup de ligne de code

@lolo3129, Il y'a des chances que cela soit ça car dans ma table produit il y'a des colonnes en (entiers,chaine de carectères et float) quelle serait la solution pour pallier a se problème ?