Page 1 sur 1

Modifier plusieurs ligne en une seule requete

Posté : 09 oct. 2014, 19:12
par fafabrice
Bonjour,
j'ai un table avec plusieurs enregistrement (plusieurs lignes) et je souhaiterai sous forme de tableau modifier le contenu de ma base de données.
J'ai donc créé un formulaire dans lequel je récupère les données dans des input pour pouvoir les modifier.
Mon problème et que lorsque j’exécute ma requête sa m'efface tout le contenu de ma table....
		<?php include("cx.php");?>
		<form name="prix" method="post" action=""> 
		<table width="350" border="0" cellpadding="2" cellspacing="0" bgcolor="#666666"  id="ligtable">
			<tr>
				<td>Nom</td>
				<td>Prix1 </td>
				<td>Prix2 </td>
				<td>Prix3 </td>
				<td>Prix4 </td>
				<td>Prix5 </td>
				<td>Prix6 </td>
			</tr>
			<?PHP 
			
	$sql="SELECT * FROM tarifseuro ORDER BY id ASC";
	$result=mysql_query($sql);
	$count=mysql_num_rows($result);
	while($resultprx=mysql_fetch_array($result) )
	{
	 $Id[]=$resultprx['id']; ?>

			<tr>
				<td><?PHP echo stripslashes($resultprx['nom']); echo 'ID '.$resultprx['id'];?></td>
				<td> 
				<input name="prix1[]" type="text" class="miniinput" id="prix1" value="<?PHP echo stripslashes($resultprx['prix1']); ?>" />				</td>
				<td>
				<input name="prix2[]" type="text" class="miniinput" id="prix2" value="<?PHP echo stripslashes($resultprx['prix2']); ?>" />				</td>
				<td>
				<input name="prix3[]" type="text" class="miniinput" id="prix3" value="<?PHP echo stripslashes($resultprx['prix3']); ?>" />				</td>
				
				<td>
				<input name="prix4[]" type="text" class="miniinput" id="prix4" value="<?PHP echo stripslashes($resultprx['prix4']); ?>" />				</td>
				<td>
				<input name="prix5[]" type="text" class="miniinput" id="prix5" value="<?PHP echo stripslashes($resultprx['prix5']); ?>" />				</td>
				
				<td>
				<input name="prix6[]" type="text" class="miniinput" id="prix6" value="<?PHP echo stripslashes($resultprx['prix6']); ?>" />				</td>
			</tr>

			<?php   
			} // fin du while			
			?>
			<tr>
			<td colspan="7"><input name="Submit" type="submit" class="droite" value="Modifier"></td>
			</tr>
		</table>
</form>

<?php
$Submit = $_POST['Submit'];
if($Submit)
{
	for($i=0;$i<$count;$i++)
	{
	$prix1 = mysql_real_escape_string($_POST['prix1']);
	$prix2 = mysql_real_escape_string($_POST['prix2']);
	$prix3 = mysql_real_escape_string($_POST['prix3']);
	$prix4 = mysql_real_escape_string($_POST['prix4']);
	$prix5 = mysql_real_escape_string($_POST['prix5']);
	$prix6 = mysql_real_escape_string($_POST['prix6']);

	$sql1="UPDATE tarifseuro SET prix1='$prix1[$i]', prix2='$prix2[$i]', prix3='$prix3[$i]', prix4='$prix4[$i]', prix5='$prix5[$i]', prix6='$prix6[$i]' WHERE id='$Id[$i]'";
	$result1=mysql_query($sql1);
	}
}

if($result1)
{
	echo "ok";	
	$confirm="OK";
?>
    <script type="text/javascript">
     document.location.href="tableau-tarifs.php";
    </script>
    
<?php
}
mysql_close();
?>


Re: Modifier plusieurs ligne en une seule requete

Posté : 09 oct. 2014, 19:42
par xTG
Ce n'est pas $_POST['prix1'] mais $_POST['prix1'][$i] ;)

Re: Modifier plusieurs ligne en une seule requete

Posté : 10 oct. 2014, 13:49
par fafabrice
Bonjour xTG,
j'ai modifié mon code suite à votre remarque mais sa ne fonctionne pas mieux.
        
for($i=0;$i<$count;$i++)
        {
        $prix1 = mysql_real_escape_string($_POST['prix1'][$i]);
        $prix2 = mysql_real_escape_string($_POST['prix2'][$i]);
        $prix3 = mysql_real_escape_string($_POST['prix3'][$i]);
        $prix4 = mysql_real_escape_string($_POST['prix4'][$i]);
        $prix5 = mysql_real_escape_string($_POST['prix5'][$i]);
        $prix6 = mysql_real_escape_string($_POST['prix6'][$i]);
        $Id = $Id[$i]
        $sql1="UPDATE tarifseuro SET prix1='$prix1', prix2='$prix2', prix3='$prix3', prix4='$prix4', prix5='$prix5', prix6='$prix6' WHERE id='$Id[$i]'";
        $result1=mysql_query($sql1);
        } 

Re: Modifier plusieurs ligne en une seule requete

Posté : 10 oct. 2014, 13:51
par fafabrice
Bonjour xTG,
j'ai modifié mon code suite à votre remarque mais sa ne fonctionne pas mieux.
        
for($i=0;$i<$count;$i++)
        {
        $prix1 = mysql_real_escape_string($_POST['prix1'][$i]);
        $prix2 = mysql_real_escape_string($_POST['prix2'][$i]);
        $prix3 = mysql_real_escape_string($_POST['prix3'][$i]);
        $prix4 = mysql_real_escape_string($_POST['prix4'][$i]);
        $prix5 = mysql_real_escape_string($_POST['prix5'][$i]);
        $prix6 = mysql_real_escape_string($_POST['prix6'][$i]);
        $sql1="UPDATE tarifseuro SET prix1='$prix1', prix2='$prix2', prix3='$prix3', prix4='$prix4', prix5='$prix5', prix6='$prix6' WHERE id='$Id[$i]'";
        $result1=mysql_query($sql1);
        } 

Re: Modifier plusieurs ligne en une seule requete

Posté : 10 oct. 2014, 15:04
par sirakawa
JE pense que la structure de la table permettrait de cerner l'erreur que je pressens.

Re: Modifier plusieurs ligne en une seule requete

Posté : 11 oct. 2014, 10:49
par moogli
salut,

est ce qu'il ya une erreur sql ?
il faut tester le retour de mysql_query et si c'est "false utiliser mysql_error() pour le message d'erreur.

il est aussi possible d'afficher la requête sql pour l'utiliser avec un client sql et voir ce ça donne (il faut toujours tester les requêtes avant de les utiliser ;) )


@+