Page 1 sur 1

Modification de données

Posté : 14 avr. 2010, 12:55
par fabrice88250
Bonjour,
j'ai un probleme pour modifier des données qui son stockées dans ma base.
le probleme et que mon code ne fait pas de modification et je ne voi pas pourquoi. Sous PHP Version 4.4.9 le code fonctionne tres bien et sous PHP Version 5.2.4 sa ne fonctionne plus.
j'ai bien l'affichage de mes données mais lorsque je clique sur "Modifier" rien ne se passe et rien ne se modifie.
<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">Nombre de personnes</div></td>
        <td bgcolor="#003399"><div align="center" class="Style1">une nuit</div></td>
        <td bgcolor="#003399"><div align="center" class="Style1">plus d'une nuit</div></td>
      </tr>
    <?php
include("../connexion-sql.php");

function switchcolor()
 { 
   static $col;
   $couleur1 = "#CCCCFF";
   $couleur2 = "#9999FF";

    if ($col == $couleur1)
     {
       $col = $couleur2;
     }
    else
     {
       $col = $couleur1;
     }
    return $col; 
 }


$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>
      <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="5"></div></td>
    
<td>
  <div align="center">
    <input name="nuitplus[]" type="text" id="nuitplus" class="miniinput" value="<?php echo $rows['nuitplus']; ?>" size="5">
    </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="tarifschambres.php";
    </script>
    
<?php
}
mysql_close();
?>
    
  </div>
</form>

Re: Modification de données

Posté : 14 avr. 2010, 13:31
par macgawel
(Je ne réponds qu'ici, mais c'est valable pour ton autre problème...)

RTFM :twisted: (l'exemple 2 explique bien le problème).

Pour récupérer les variables envoyées par POST (ou GET), on devrait utiliser echo $_POST['toto'];.
Si register_globals est à ON, on peut se contenter de faire echo $toto;.

Depuis la version 4.2, register_globals est par défaut à OFF.
Sachant que comme on trouve pas mal de "vieux" scripts qui utilisent ce système, les hébergeurs ont souvent forcé register_globals à ON pour les versions 4.x et sont passés à OFF avec la version PHP 5.x

Pour le principe : tu peux commencer par afficher la requête avant de la passer, histoire de voir. Ou rajouter un 'or die' à tes fonctions mysql - juste le temps du débogage - $result1=mysql_query($sql1) or die("Erreur avec la requête $sql1 :<br />".mysql_error () )

La solution est bien d'affecter tes variables en début de script.
En sachant qu'il faudrait commencer par tester si $_POST['nbrpers'] est bien renseigné, et si possible vérifier que la variable passée correspond à ce qu'on attend (pour 'nbrpers', un tableau de nombres)
if (!empty($_POST['nbrpers'])) {
   $nbrpers = $_POST['nbrpers'];
}
Et tant qu'à faire profites-en pour sécuriser ce que tu reçois... Un petit tour sur Google devrait te donner pas mal de liens, le minimum pour les passer à MySQL étant l'utilisation de mysql_real_escape_string.