Probleme d'insertion

Résolu/Fermé
godgoza - 1 août 2017 à 05:32
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 1 août 2017 à 21:19
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 :

<?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:

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
1 août 2017 à 08:40
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.
0
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 ?

value="idfournisseur"

ou
value="<?php echo ($fr); ?>"
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
1 août 2017 à 16:33
Pour ta requête :
$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() );

0
merci beaucoup jordane45 je vais verifier ca de suite
merci beaucoup
0
godgoza > godgoza
1 août 2017 à 16:58
ça marche!!!!! merci beaucoup merci

mais cela ne résouts pas beaucoup le problème vu que l'utilisateur verra l'id s’afficher.
je veux juste que le nom s'affiche et reste la.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > godgoza
1 août 2017 à 17:09
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 ?

<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....
0
godgoza > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
1 août 2017 à 17:44
je crois que c'est alors cette requête que je cherche depuis le début
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > godgoza
1 août 2017 à 20:43
Donc ... une fois l'insertion effectuée... tu REFAIS une requête SELECT pour avoir le nom du fournisseur

$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>
   
0