Mise à jour plusieurs ligne sql impossible

WRInaute occasionnel
Bonjour,
j’essaie de mettre à jour plusieurs lignes (des tarifs) dans ma base de données.
Le problème que je rencontre est que... sa ne fonctionne pas et je n'arrive pas à trouver le pourquoi.

voici mon code avec mon formulaire :
Code:
<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(); ?>

Si vous avez une idée d'ou est mon ou mes erreurs....
 
WRInaute accro
c'est simple : tu fais afficher ta requête à l'écran et tu testes dans phpmyadmin. Comme cela l'erreur sera affichée plus explicitement
 
WRInaute passionné
Problème de concaténation à mon avis, essaie un truc comme ça :

PHP:
<span class="syntaxdefault"><br />$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"UPDATE IWtarifsloca SET chambre = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$chambre</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"', description = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$description</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"', tarifs = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$tarifs</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"' WHERE id = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$Id</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"'"</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> <br /><br /></span>

Par ailleurs tu devrais préparer tes données à l'envoi dans ta BDD avec stripslashes($data) par exemple car justement, si une variable contient un apostrophe ' ou un guillemet ", cela coupe la concaténation de ta fonction update ce qui fait que ça ne veut plus rien dire pour la BDD donc pas d'update.

Sinon aucune raison que ça ne fonctionne pas, bye
 
WRInaute occasionnel
Hello

Code:
$chambre = $_POST['chambre[$i]'];
$description = $_POST['description[$i]'];
$tarifs = $_POST['tarifs[$i]'];

Des quotes en trop et un manque de $ ;)

Par ailleurs, je t'invite à te renseigner sur la façon de sécuriser des requêtes mysql. Là tu prends beaucoup de risques.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut