Signaler

Probleme d'insertion [Résolu]

Posez votre question godgoza - Dernière réponse le 1 août 2017 à 21:19 par jordane45
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


Afficher la suite 
Utile
+1
plus moins
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() );

godgoza- 1 août 2017 à 17:44
je crois que c'est alors cette requête que je cherche depuis le début
Répondre
jordane45 18014Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 8 août 2017 Dernière intervention - 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>
   
Répondre
jordane45 18014Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 8 août 2017 Dernière intervention - 1 août 2017 à 20:49
Au passage ....
Pour le nom de tes champs dans tes tables mysql.....
Tu es dans la table fournisseur.....
Donc tu pourrais plus simplement nommer tes champs id, nom .... tu n'as pas besoin (et je dirais même que ça pollue...) mettre idfournisseur, nomfournisseur....

En programmation on dit : Plus c'est court (ou petit) mieux c'est ....
Répondre
godgoza- 1 août 2017 à 21:16
je te remercie beaucoup beaucoup
A partir d'aujourd'hui sache que tu es un dieu pour moi
merci
merci merci
Répondre
jordane45 18014Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 8 août 2017 Dernière intervention - 1 août 2017 à 21:19

:-)

En signe de soumission.... ton "dieu" te demande de penser à mettre le sujet en RESOLU ^^
(le lien se trouve sous le titre de ta question)

Bonne continuation.
Répondre
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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); ?>"
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !