Modifier plusieurs ligne en une seule requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Modifier plusieurs ligne en une seule requete

Re: Modifier plusieurs ligne en une seule requete

par moogli » 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 ;) )


@+

Re: Modifier plusieurs ligne en une seule requete

par sirakawa » 10 oct. 2014, 15:04

JE pense que la structure de la table permettrait de cerner l'erreur que je pressens.

Re: Modifier plusieurs ligne en une seule requete

par fafabrice » 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);
        } 

Re: Modifier plusieurs ligne en une seule requete

par fafabrice » 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);
        } 

Re: Modifier plusieurs ligne en une seule requete

par xTG » 09 oct. 2014, 19:42

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

Modifier plusieurs ligne en une seule requete

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