Probleme d'insertion
Résolu
godgoza
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis présentement entrain de travailler sur une application qui gère les stocks d'un magasin. le problème est le suivant:
j(aimerai que le magasinier au moment d'enregistrer le bon de livraison d'une marchandise entre le nom du fournisseur directement dans le formulaire vu qu'il ne connait pas l'identifiant primaire de celui ci. mais je n'arrive pas à recuperer le fournisseur a partir de son nom. et je suis vraiment coincé j'aimerai votre aide
le code de la saisie d'un bon de livraison est le suivant :
ensuite voici le code pour l'ajout dans la base de données:
merci d'avance
je suis présentement entrain de travailler sur une application qui gère les stocks d'un magasin. le problème est le suivant:
j(aimerai que le magasinier au moment d'enregistrer le bon de livraison d'une marchandise entre le nom du fournisseur directement dans le formulaire vu qu'il ne connait pas l'identifiant primaire de celui ci. mais je n'arrive pas à recuperer le fournisseur a partir de son nom. et je suis vraiment coincé j'aimerai votre aide
le code de la saisie d'un bon de livraison est le suivant :
<?php $conn=mysqli_connect("localhost", "root", "") or die(mysql_error()); mysqli_select_db($conn, 'gesmack') or die (mysql_error()); $sqlCommand="select nomfournisseur from fournisseur" ; $query=mysqli_query($conn, $sqlCommand) or die(mysql_error()); ?> <!DOCTYPE [/html/htmlintro.php3 html]> <html lang="en"> <head> <meta charset="utf-8"> <link rel="icon" href="../../favicon.ico"> <title>Enregistrer un bon de livraison</title> </head> <body> <div class="container1"> <h3>Enregistrer un bon de livraison</h3> <form method="POST" action="ajouterbon.php"> <table> <tr> <td>n° bon de livraison:</td> <td><input type="text" name="nbon"></td> </tr> <tr> <td>fournisseur:</td> <td class="form-group"> <!--/Creation d'une combo-box --> <input type=text list="fournisseur" name="idfournisseur"> <datalist id="fournisseur"> <?php while($FR=mysqli_fetch_assoc($query)) { ?> <option><?php echo($FR['nomfournisseur'])?> <?php } ?> </datalist> </td> </tr> <tr> <td>montant :</td> <td><input type="text" name="montantbon"></td> </tr> <tr> <td>Date :</td> <td><input type="date" name="datebon"></td> </tr> <tr> <td></td> <td><input class="btn-primary" type="submit" value="Enregistrer"></td> </tr> </table> </form> </div> </body> </html>
ensuite voici le code pour l'ajout dans la base de données:
<?php $conn=mysqli_connect("localhost", "root", "") or die(mysql_error()); mysqli_select_db($conn, 'gesmack') or die (mysql_error()); $code=$_POST['nbon']; $four=$_POST['idfournisseur']; $fourage=$four; $montant=$_POST['montantbon']; $date=$_POST['datebon']; $sqlCommand="insert into BONDELIVRAISON (nbon, idfournisseur, montantbon, datebon) select $code, $four AS idfournisseur, '$montant', now() FROM FOURNISSEUR WHERE nomfournisseur='$fourage'"; $query=mysqli_query($conn, $sqlCommand) or die(mysql_error()); ?> <!DOCTYPE html> <html> <code html> <head> <meta charset= "UTF-8"/> <title>ajouter bon de livraison</title> </head> <body> <table border="1"> <tr> <td>N° bon</td> <td><?php echo($code)?></td> </tr> <tr> <td>fournisseur</td> <td><?php echo($four)?></td> </tr> <tr> <td>montant</td> <td><?php echo($montant)?></td> </tr> <tr> <td>Date</td> <td><?php echo($date)?></td> </tr> </table> <a href="afficherbon.php" rel="nofollow noopener noreferrer" target="_blank">liste des chantiers</a> </body> </html>
merci d'avance
A voir également:
- Probleme d'insertion
- Insertion sommaire word - Guide
- Touche insertion clavier - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
3 réponses
Bonjour
Dans ta requette (pour lister les fournisseurs ) tu recuperes le nom du fournisseur ET son id.
Puis dans ton select tu mets l'id dans l'attribut "value" des options.
Dans ta requette (pour lister les fournisseurs ) tu recuperes le nom du fournisseur ET son id.
Puis dans ton select tu mets l'id dans l'attribut "value" des options.
merci beaucoup pour ta reponse jordane45 mais je suis un peu bloqué. dans lattribut "value" des options je mets l'id du fournisseurs de quelle façon ?
ou
value="idfournisseur"
ou
value="<?php echo ($fr); ?>"
Pour ta requête :
Pour ton SELECT:
Puis pour l'insertion en BDD.. tu n'auras plus qu'à faire
$sqlCommand="SELECT idfournisseur, nomfournisseur FROM fournisseur" ;
Pour ton SELECT:
<?php while($FR=mysqli_fetch_assoc($query)) { echo '<option value="'.$FR['idfournisseur'].'">'.$FR['nomfournisseur'].'</option>'; } ?>
Puis pour l'insertion en BDD.. tu n'auras plus qu'à faire
$sqlCommand="INSERT INTO BONDELIVRAISON (nbon, idfournisseur, montantbon, datebon) VALUES('$code','$four', '$montant', now() );
L'utilisateur ne verra pas l'id qu'est-ce que tu me racontes....
(à part si il regarde le code source de la page... mais ce n'est pas un problème ! )
A moins que ... tu ne parles de l'affichage APRES l'insertion ???
Cette parti du code ?
Il te suffit, dans ce cas, de faire une requête SELECT pour récupérer le "nom" en fonction de l'ID
Et c'est ça que tu afficheras dans ton tableau....
(à part si il regarde le code source de la page... mais ce n'est pas un problème ! )
A moins que ... tu ne parles de l'affichage APRES l'insertion ???
Cette parti du code ?
<body> <table border="1"> <tr> <td>N° bon</td> <td><?php echo($code)?></td> </tr> <tr> <td>fournisseur</td> <td><?php echo($four)?></td> </tr> <tr> <td>montant</td> <td><?php echo($montant)?></td> </tr> <tr> <td>Date</td> <td><?php echo($date)?></td> </tr> </table>
Il te suffit, dans ce cas, de faire une requête SELECT pour récupérer le "nom" en fonction de l'ID
Et c'est ça que tu afficheras dans ton tableau....
Donc ... une fois l'insertion effectuée... tu REFAIS une requête SELECT pour avoir le nom du fournisseur
Puis dans ton tableau:
$sql = "SELECT nomfournisseur FROM fournisseur WHERE idfournisseur = '$four'" ; $res=mysqli_query($conn, $sql); //C'est comme ça qu'on gère les erreurs en mysqli ... pas de or die et surtout pas de mysql_error !!!! if (!$res) { printf("Message d'erreur : %s\n", mysqli_error($link)); } //on récupère le resultat de la requête $row = mysqli_fetch_array($res, MYSQLI_ASSOC);
Puis dans ton tableau:
<body> <table border="1"> <tr> <td>N° bon</td> <td><?php echo($code)?></td> </tr> <tr> <td>fournisseur</td> <td><?php echo $row['nomfournisseur']; ?></td> </tr> <tr> <td>montant</td> <td><?php echo($montant)?></td> </tr> <tr> <td>Date</td> <td><?php echo($date)?></td> </tr> </table>