Modifier simultanément plusieurs lignes dans une BDD

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 simultanément plusieurs lignes dans une BDD

Re: Modifier simultanément plusieurs lignes dans une BDD

par fabrice88250 » 22 déc. 2011, 16:40

Ok c'est bon j'y suis parvenue en séparant le formulaire de la requette en 2 pages.
Merci pour votre aide.

Re: Modifier simultanément plusieurs lignes dans une BDD

par moogli » 22 déc. 2011, 16:00

réfléchie mieux a ce que tu fait.

- la validation ne doit pas ce faire dans l'affichage.
- $ID n'est pas un tableau tu n'as qu'une seul id retourné par ligne !

@+

Re: Modifier simultanément plusieurs lignes dans une BDD

par fabrice88250 » 22 déc. 2011, 13:06

Whouaaa ! je viens de faire le remplacement et sa m'a tout effacer dans ma table ! Du coup tous mes champs sont vide maintenant et la modification ne fonctionne toujours pas plus.
voici le code tel qu'il est maintenant.
  <form name="prix" method="post" action=""> 
<?php
$sql="SELECT * FROM IWtarifsloca ORDER BY id ASC";
$result=mysql_query($sql);

// On compte le nombre de lignes dans la table
$count=mysql_num_rows($result);

// On fait une boucle pour lister tout ce que contient la table :
while($rows=mysql_fetch_array($result) )
{
?>
    <?php $Id[]=$rows['id']; ?>
     <input name="chambre[]" type="text" id="chambre" class="chambre" value="<?php echo $rows['chambre']; ?>" size="20">
     <textarea name="description[]" class="chambre" id="description" maxlength="255"><?php echo $rows['description']; ?></textarea>
     <input name="tarifs[]" type="text" id="tarifs" class="miniinput" value="<?php echo $rows['tarifs']; ?>" size="10" />
    <?php } ?>
  <input type="submit" name="Submit" value="Modifier">
    
<?php
// Check if button name "Submit" is active, do this
if(isset($_POST['Submit'])){
	for($i=0;$i<$count;$i++){
		$chambre = $_POST['chambre[$i]'];
		$description = $_POST['description[$i]'];
		$tarifs = $_POST['tarifs[$i]'];
		$sql1="UPDATE IWtarifsloca SET chambre='$chambre', description='$description', tarifs='$tarifs' WHERE id='$Id[$i]'";
		$result1=mysql_query($sql1);
	}
}

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

Re: Modifier simultanément plusieurs lignes dans une BDD

par Mazarini » 22 déc. 2011, 12:53

Bonjour,

Il y a aussi le if($Submit) à remplacer par if(isset($_POST['Submit']))
(permet de vérifier que le bouton "Submit" a été actionné)

Re: Modifier simultanément plusieurs lignes dans une BDD

par fabrice88250 » 22 déc. 2011, 12:06

Donc si je comprend bien il faut que je récupère les infos de la façon suivante ? (je viens de modifié la partie submit de mon code et sa fonctionne pas)

if($Submit){
for($i=0;$i<$count;$i++){
$chambre = $_POST['chambre[$i]'];
$description = $_POST['description[$i]'];
$tarifs = $_POST['tarifs[$i]'];


$sql1="UPDATE IWtarifsloca SET chambre='$chambre', description='$description', tarifs='$tarifs' WHERE id='$Id[$i]'";

$result1=mysql_query($sql1);

Re: Modifier simultanément plusieurs lignes dans une BDD

par moogli » 22 déc. 2011, 11:52

Modifier simultanément plusieurs lignes dans une BDD

par fabrice88250 » 22 déc. 2011, 06:40

Bonjour,
j'ai un petit soucis pour modifier simultanément plusieurs lignes dans un base de données.
à l’époque j'avais fait un petit script mais là pour une raison que je ne comprend pas sa ne fonctionne plus (peut être une MAJ php ou je ne sais quoi ).
voici mon code, pourriez vous me dire se qui ne va pas (ou se qui ne va plus) afin que sa refonctionne à nouveau ?
  <form name="prix" method="post" action=""> 
  <div align="center">
  <table width="450px" border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#003399"><div align="center" class="Style1 Style1">Description</div></td>
        <td bgcolor="#003399"><div align="center" class="Style1">Tarifs HS</div></td>
        <td bgcolor="#003399"><div align="center" class="Style1">Tarifs BS</div></td>
      </tr>
    <?php

$sql="SELECT * FROM IWtarifschbr ORDER BY id ASC";
$result=mysql_query($sql);

// On compte le nombre de lignes dans la table
$count=mysql_num_rows($result);

// On fait une boucle pour lister tout ce que contient la table :
while($rows=mysql_fetch_array($result) )
{
?>
    <?php echo "<tr bgcolor=\""; echo switchcolor(); echo "\">" ?>
    <?php $Id[]=$rows['id']; ?>
    <td>
      id = <?php echo $rows['id']; ?><div align="center">    
<input name="nbrpers[]" type="text" id="nbrpers" value="<?php echo $rows['nbrpers']; ?>" size="40"> </div></td>
    <td>
      <div align="center">
        <input name="unenuit[]" type="text" id="unenuit" class="miniinput" value="<?php echo $rows['unenuit']; ?>" size="10" />
      </div></td>
    
<td>
  <div align="center">
    <input name="nuitplus[]" type="text" id="nuitplus" class="miniinput" value="<?php echo $rows['nuitplus']; ?>" size="10">
    </div></td>
    </tr> 
    <?php
}
?>
  </table>
  <input type="submit" name="Submit" value="Modifier">
    
  <?php
// Check if button name "Submit" is active, do this
if($Submit){
for($i=0;$i<$count;$i++){
$sql1="UPDATE IWtarifschbr SET nbrpers='$nbrpers[$i]', unenuit='$unenuit[$i]', nuitplus='$nuitplus[$i]' WHERE id='$Id[$i]'";

$result1=mysql_query($sql1);
}
}

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


du coup maintenant lorsque je fais des modifications, elle ne sont pas enregistrées dans ma base de données et je ne peut donc pas modifier mes tarifs.