Page 1 sur 1

Pb formulaire et clés étrangères

Posté : 11 juin 2009, 17:46
par TwinB
Bonjour à tous,

Tout d'abord, Je tiens à dire que je débutant en PHP et HTML, je vais donc tenter de vous expliquer mon problème clairement :

J'ai une base de données mysql, qui pour simplifier, contient les 3 tables suivantes :

FOURNISSEURS (Intitule_Fournisseur, Nom_Responsable_F, Nom_Interlocuteur, Adresse_F, CP_F, Ville_F, Tel_F, Fax_F, Mail_F)

PRODUITS(Intitule_Produit, Categorie, Sous_Categorie, Poids_Moyen, Code_Article, Ean_13)

ENTREES(ID_Entree, Date_Entree, Nb_Pieces_Entree, Quantite_Kg_Entree, Numero_Lot, #Intitule_Fournisseur, #Intitule_Produit)

Sous PHPMyAdmin je n'est aucun mal à ajouter de nouvelles valeurs dans ENTREES par contre dans ma page PHP, j'ai essayé de faire des menus déroulants pour les clés étrangères afin de ne pas avoir d'erreures d'implémentation de la part des utilisateurs.

C'est ici que ça se gate, j'arrive bien à récupérer les valeurs de mes clés étrangères dans mes menus déroulant mais lorsque je veux valider ma requête INSERT j'ai une erreur qui me met :

... Cannot add or update a child row : a foreign key constraint fails ....

Voici mon code :
<?php

    if(!empty($_POST))
    {
        extract($_POST);
        $sql="INSERT INTO ENTREES (Date_Entree, Nb_Pieces_Entree, Quantite_Kg_Entree, Numero_Lot, Intitule_Fournisseur, Intitule_Produit) VALUES ('$date', '$nb_pieces', '$qte_kg', '$num', '$fournisseur', '$produit')";
        $req= mysql_query($sql) or die ('erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    header('Location: ./Entrees.php');
    }
?>
        
    <form method="post" action="Entrees.php">
        
        Date Entree : <input type="text" name="date"/>
        Nombre de pieces : <input type="text" name="nb_pieces"/>
        Quantite en Kg : <input type="text" name="qte_kg"/>
        Numero du lot : <input type="text" name="num"/><br/><br/>
        Fournisseur :
        <?php
            $req = mysql_query('SELECT Intitule_Fournisseur FROM FOURNISSEURS');
            echo '<select name="fournisseur">';
            while($choix = mysql_fetch_assoc($req) )
            {
                echo '<option value="'.$choix[Intitule_Fourniseur].'">'.$choix[Intitule_Fournisseur].'</option>';
            }
            echo '</select>';
        ?>
        Produit :
        <?php
            $req1 = mysql_query('SELECT Intitule_Produit FROM PRODUITS');
            echo '<select name="produit">';
            while($choix = mysql_fetch_assoc($req1) )
            {
                echo '<option value="'.$choix[Intitule_Produit].'">'.$choix[Intitule_Produit].'</option>';
            }
            echo '</select>';
        ?>
        <input type="submit" value="Ajouter"/><br/><br/>
    </form>



Je suis conscient que mon code doit être crade mais bon tant que ça marche ...
Merci d'avance pour votre aide.

Posté : 11 juin 2009, 17:50
par stopher
Hi ,

c'est un oubli dans ton explication ou :

ENTREES(ID_Entree, Date_Entree, Nb_Pieces_Entree, Quantite_Kg_Entree, #Intitule_Fournisseur, #Intitule_Produit)

il te manque le champ Numero_Lot ?

Ch.

Posté : 11 juin 2009, 17:57
par TwinB
Oui, désolé c'est un oubli :roll:
Je corrige de suite.

Posté : 13 juin 2009, 08:59
par TwinB
Bon à priori le problème viendrai de mon menu déroulant à savoir
		<?php
			$req = mysql_query('SELECT Intitule_Fournisseur FROM FOURNISSEURS');
			echo '<select name="fournisseur">';
			while($choix = mysql_fetch_assoc($req) )
			{
			    echo '<option value="'.$choix[Intitule_Fourniseur].'">'.$choix[Intitule_Fournisseur].'</option>';
			}
			echo '</select>';
		?>
Car quand je le remplace par un simple :

Fournisseur : <input type="text" name="fournisseur"/>

J'arrive a insérer mes données.

Merci d'avance pour votre aide.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 13 juin 2009, 09:25
par micetf
Un gravillon à ton édifice :

Tu as oublié un s à fournisseur pour la valeur de ton option : $choix[Intitule_Fournisseur].
De plus, j'utiliserais les primes pour délimiter la clé du tableau :
echo '<option value="'.$choix['Intitule_Fournisseur'].'">'.$choix['Intitule_Fournisseur'].'</option>';
Fred

Posté : 13 juin 2009, 09:50
par TwinB
Ton gravillon c'est révélé être la pierre angulaire du problème, j'en reviens toujours pas ! :shock:
L'oubli de ce "s" était la cause du problème, maintenant ça fonctionne très bien !
Donc merci à tous, et désolé d'avoir posté pour une erreure si banale :oops:
A bientôt.