Modifier plusieurs ligne en une seule requete

fafabrice
Invité n'ayant pas de compte PHPfrance

09 oct. 2014, 19:12

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();
?>


ViPHP
xTG
ViPHP | 7331 Messages

09 oct. 2014, 19:42

Ce n'est pas $_POST['prix1'] mais $_POST['prix1'][$i] ;)

fafabrice
Invité n'ayant pas de compte PHPfrance

10 oct. 2014, 13:49

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);
        } 

fafabrice
Invité n'ayant pas de compte PHPfrance

10 oct. 2014, 13:51

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);
        } 

Mammouth du PHP | 2278 Messages

10 oct. 2014, 15:04

JE pense que la structure de la table permettrait de cerner l'erreur que je pressens.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 oct. 2014, 10:49

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 ;) )


@+
Il en faut peu pour être heureux ......