8800 sujets

Développement web côté serveur, CMS

Bonjour,

Voila j ai un fichier qui permet de modifier des données ecoltés via un menu deroulant

mais le probleme c est que quand je fais un update il me vide tous les champs et si je modifie

WHERE id='".$_GET['id']."'" ; par WHERE id='".$_POST['id']."'" ; il fait la modif mais me me le champ id a zero ...

Merci de votre aide

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Catalogue</title>
<link rel="stylesheet" type="text/css" href="style-cat.css">
</head>
<body link="#000000" vlink="#444444" alink="#888888">
<div id="body">

<?php



 include ('config.php');
 include ('connexion.php'); 

echo $id = $_GET["id"]; 



$sql = "SELECT id, reference, artiste, album, format FROM contenu WHERE id='".$_GET

['id']."'" ;

$req = mysql_query($sql) or die( mysql_error() ) ; 

$total = mysql_num_rows($req);

echo $sql2= "UPDATE contenu SET reference='".$_POST

['reference']."', artiste='".$_POST['artiste']."',album='".$_POST

['album']."',format='".$_POST['format']."'
WHERE id='".$_GET['id']."'" ;


$req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());


 
 
 
   {
        echo '<form method ="post" action="modifier.php">';
        echo '<table>'."\n";
        echo '<tr>';
         echo '<td ><b><u>id</u></b></td>';
        echo '<td ><b><u>reference</u></b></td>';
        echo '<td><b><u>artiste</u></b></td>';
        echo '<td><b><u>album</u></b></td>';
        echo '<td><b><u>format</u></b></td>';
        echo '</tr>'."\n";
    
 while($row = mysql_fetch_array($req)) 
 
  {
        echo '<tr>';
echo '<td>'.$id.'</td>';

   
        echo '<td><input type="text" name="reference" value="'.$row

["reference"].'"/></td>'; 
        echo '<td><input type="text" name="artiste" value="'.$row["artiste"].'"/></td>'; 
        echo '<td><input type="text" name="album" value="'.$row["album"].'"/></td>'; 
        echo '<td><input type="text" name="format" value="'.$row["format"].'"/></td>'; 
        echo '</tr>'."\n";
  
   } 
        echo '</table>'."\n";
        echo '<input type="submit" name="btOk" value="Modifier"/>';
        echo '</form>';
  

   if (isset($_POST['btOk']))


  {

 
if($req2)


  {
        echo ("L'insertion a été correctement effectuée") ;
        echo '<br><a href="http://arm-

info.hd.free.fr/label_modif.php">Retour sur les labels</a></br>';
  }

 else

  {
        echo("L'insertion à échouée") ;
  }


   }
  }

 
?> 

</body></html>

<?php
mysql_close();
?> 

 

Modifié par stefanelle (18 May 2009 - 11:06)
Salut stefanelle et bienvenue, Smiley smile

il y a une petite incompréhension sur la récupération des variables :

* soit il s'agit de variables soumises à l'aide d'un formulaire avec une method="post" auquel cas elles sont disponibles dans le tableau $_POST.

* soit il s'agit de variables soumises à l'aide d'un formulaire avec une method="get" (valeur par défaut si method n'est pas renseigné) auquel cas elles sont disponibles dans le tableau $_GET.

* soit il s'agit de variables soumises à l'aide d'un lien sous la forme monlien.php?var1=blabla&var2=blibli auquel cas elles sont également disponibles dans le tableau $_GET.

Donc dans ton code pour que ça fonctionne il faut :

* soit passer ta variable directement dans l'action de l'élément FORM:
action="modifier.php?id='.$id.'"
tu récupères $_GET['id']

* soit utiliser un INPUT de type hidden
echo '<input type="hidden" name="id" value="'.$id.'">';
tu récupères $_POST['id']
Modifié par Heyoan (27 Feb 2009 - 15:19)
Hello,
tu peux également vérifier si le champ id de ta base de données est de type numérique...
Ton instruction SQL met la valeur récupérée entre simples quotes. Je ne suis pas convaincu que ce soit l'idéal si ton id est numérique.

hth,
P.
Modifié par pilap82 (27 Feb 2009 - 15:20)
pilap82 a écrit :
Je ne suis pas convaincu que de mettre un numérique entre quotes soit l'idéal.
Non mais mysql est plutôt sympa et normalement il s'en moque. Smiley lol
Tout d abord merci pour l accueil par contre je ne l ai aps preciser mais j ai un premier fichier ou est lister mon tableau avec mes entrees et un lien vers modifer que je recupere en GEt dans mon deuxieme fichier

parce que dans mon premier fichier je na i qun tableau et pas de formulaire donc je ne vosi pas ou mettre mon action="modifier.php?id='.$id.'"

PS : je suis en phase d apprentissage ..
stefanelle a écrit :
j ai un premier fichier ou est lister mon tableau avec mes entrees et un lien vers modifer que je recupere en GEt dans mon deuxieme fichier

parce que dans mon premier fichier je na i qun tableau et pas de formulaire donc je ne vosi pas ou mettre mon action="modifier.php?id='.$id.'"
Euh... ben je ne vois pas que te dire de plus que dans mon précédent post Smiley rolleyes .

stefanelle a écrit :
PS : je suis en phase d apprentissage ..
Alors Alsacréations n'est pas le bon forum puisqu'ici on s'intéresse aux standards et à l'accessibilité (même si ça dévie un peu de temps en temps) : voir plutôt du côté de phpdebutant.org ou du site du zero. Smiley cligne