Page 1 sur 1

Insertion ou mise à jour multiple

Posté : 01 nov. 2007, 10:49
par martial
Bonjour à tous!
Cela fait quelques jours que je rame sur les boucles et les "Array"

Je posséde une table client ( avec des coordonnées et un champ "vente" ) et une table vente (avec les champs COMPTANT, CREDIT).
Certains champs "vente" ne sont pas renseignés, de ce fait j'ai créer un tableau ou apparait les clients dont le champs vente n'est pas renseigné:
Le tableau comporte deux colonnes , la 1ere ou apparait le nom du client et la deuxiéme colonne est une boite à liste donnant le choix entre COMPTANT et CREDIT.
Tout fonctionne trés bien jusqu'au moment ou je veux mettre à jour la table client. Je n'arrive pas à programmer une boucle mettant à jour chaque client. Soit les clients sont mis à jour avec les mêmes valeurs ou bien un seul client est mis à jour.
Quelqu'un pourrait-il m'aider à construire la boucle!
Voici mon code (Je sais j'écris comme un cochon et mon code n'est pas sécurisé...)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Destination des produits</title>
</head>

<body>
<?php
//Si fomulaire actionné
$save=$_POST['save'];

if($save <>"")
	 {
		$sql = "UPDATE client_temp SET produits= '".$_POST['row0']."', dest='".$_POST['vente']."' WHERE produits='".$_POST['row0']."' "; 
			if(mysql_query($sql)) $count++; 
				else die("Error in query:<br>$sql<br>"); 
	 }

			else
     {
// Selectionne la table TEMPORAIRE client et si elle contient des ventes vides alors affiche le formulaire 	 
		$sql10e=" SELECT produit from client_temp WHERE produit <>'' ORDER BY produit ASC";  
		mysql_query ($sql10a) or die ('Erreur SQL !'.$sql10a.'<br />'.mysql_error());
				if ( $res10e && mysql_num_rows($res10e) <> 0)
     {

//Affiche le Formulaire
?>
 <form action="creervente.php" method="post" name="form_add" id="form_add">
 

<center>
<img src="images/g8.jpg" width="240" height="72" />
			<table width=40% border=0 align=center>
				<tr> 
					<td width="62%"><b><center>
  					<span class="Style9">Les ventes suivantes n'ont pas été identifié <br>
  					Veuillez faire correspondre les champs</span><span class="Style8">:</span></td>
				</tr> 
			</table>
			<table align="center">
				<tr align=center bgcolor=#FFFFCC>
					<td align="center" class="Style9" >Type de produits</td>
					<td width="38%" align="center" class="Style9">ventes correspondantes</td>
				</tr>
<?php 
						$i=0; 
			while ($row=mysql_fetch_array($res10e)) { 
				if ($i==0) 
				            { 
					echo "<tr bgcolor=#EEEEEE>"; 
						$i++; 
							}
				else 
							{ 
					echo "<tr bgcolor=#EAEAEAE>";
						$i--; 
							}
?>
						<td span class="Style9">
			<input type="hidden" id="row0" name="row0" value=" <?php echo $row[0] ;?>"> <?php echo $row[0] ;?>
						</td>
						<td align=center span class="Style9">
			<select name="vente" id="vente" value="<?php echo $vente; ?>"> 
					<option value="Choix2"
								  echo "selected"; ?>Choisir</option>
				<?php
				  $requete=mysql_query("SELECT DISTINCT `vente` FROM vente ORDER BY `id_vente` Asc"); 
					$nombrelignes = mysql_numrows($requete); 
					for ($i=0;$i<$nombrelignes;$i++) { 
					$vente = mysql_result($requete,$i,"vente");
?>
					<option value="<?php echo $vente?>"><?php echo $vente;?> </option>"; 
<?php
				} 
?>
			</select>
							</td>
						</tr><?php 
				} 

?>
					</table>
<br /><br />
					<input type="hidden" name="save" value="save">
					<input name="submit" type="submit" class="button" value="Continuer">
 <?php 
 				}

</body>
</html>

Posté : 01 nov. 2007, 16:19
par h0_noMan
Tu mets :
<input type="hidden" id="row0" name="row0[]" value=" <?php echo $row[0] ;?>"> <?php echo $row[0] ;?>
Et après, tu peux récuperer toutes les variables row0 dans un tableau.
Tu y accède comme ceci :
$champ0 = $_POST['row0'][0];
$champ1 = $_POST['row0'][1];

Posté : 01 nov. 2007, 16:35
par martial
D'accord mais le probléme est que au départ, je ne sais pas combien de champs "Vente" sont vides!
C'est l'utilité de la boucle que je ne sais pas programmer dans ce cas

Posté : 01 nov. 2007, 16:39
par h0_noMan
Meme si le champs est vide tu le recuperes dans le tableau.
Il aura comme valeur "" (une chaine vide)

Posté : 01 nov. 2007, 17:00
par martial
En fait la page au départ affiche une liste de clients dans une table temporaire dont les ventes ne sont pas renseignées.

ce qui donne

Code : Tout sélectionner

SELECT nom from client_temp WHERE produit <>'' ORDER BY produit ASC
NOM | VENTE
-------------|------------------------------------------------|
DUPONT |(Boite à liste avec COMPTANT et CREDIT)|
-------------|------------------------------------------------|
DURAND |(Boite à liste avec COMPTANT et CREDIT)|

L'utilisateur renseigne le champ VENTE et aprés confirme son choix!

INSERTION dans la BDD

Code : Tout sélectionner

UPDATE client SET produits= COMPTANT WHERE nom=DUPONT....etc ou bien INSERT INTO client (nom,produit) VALUES (DUPONT,COMPTANT),(DURAND,CREDIT)
mon probléme est donc de faire une boucle sur les X variables du tableau généré