probleme dans la modification

Eléphant du PHP | 123 Messages

10 mars 2009, 17:50

rebonjour

voila le probleme

j'ai une page php contenant des données sous forme de tableau comme suit

champ1|champ2|modifier|suprimmer
champ1|champ2|modifier|supprimer

...

voici le code correspondant à cette page:
//Masque pour vérification de la connexion sur un poste appartenant au réseau
$requete = mysql_query("SELECT * FROM FORMATION ")or die ("echec execution requete");
if ($donnee=mysql_fetch_row($requete))
	{
	?>
		<table border align="center" rules="all">
	<tr>
		<th>Sigle</th>
		<th>Libellé</th>
		
	</tr>
	<?

while($donnee=mysql_fetch_row($requete))
{
?>
	<tr>
		<td><?echo $donnee[0]?></td>
		<td><?echo $donnee[1]?></td>
		<td><a href="modifier.php">Modifier</a></td>
		<td><a href="supprimer.php">Supprimer</a></td>
	</tr>
	

<?
}
}
mysql_close();
?>
</table>
<p align="right"><a href="ajouterformation.php">Ajouter</a></p>
</body>
</html>
je voudrais activer le modifier et le supprimer de chaque ligne

ici c est juste un lien mais si j'utilise la method post comme ceci:

...
<tr>
<?
		echo"<td>" input type=text value=$donnee>"</td>"
		<td>"input type=text value=$donnee[1]"</td>";
		//modifier devient un bouton submit
?>
est ce que le button submit du modifier marchera pour la ligne ou tous les boutons ne marcheront dans le tableau que pour les derniere données données dans $donnee?

si oui que faire pour que sa ne soit pas le cas ( modifier la ligne et non tout le tableau)



pas de réponses vous voyez pas ou je me suis mal exprimé

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 mars 2009, 15:58

Tu veux rendre éditable chaque ligne de ton tableau ?

Un bouton submit va effectivement soumettre tout le formulaire, sans se soucier de la ligne que tu as modifié... Une solution serait de faire un formulaire par ligne, chacun avec ses champs et son bouton submit, mais c'est pas propre du point de vue html d'avoir des balises de formulaire qui traine entre les lignes d'un tableau...

Tu peux aussi transformer ton bouton submit en simple bouton, et lui faire exécuter une fonction javascript pour n'envoyer que les données de la ligne modifiée, correspondant au bouton cliqué. A partir de là, tu pourrais même développer une solution avec un peu d'ajax pour enregistrer directement la ligne sans recharger la page :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 123 Messages

11 mars 2009, 17:40

mmmh il faut que je reflechisse serieusement à tes paroles puis je repondrait

Eléphanteau du PHP | 13 Messages

13 mars 2009, 11:30

Avec ceci tu devrais pouvoir faire quelque chose, mais comme "Ryle" l'a dit, c'est pas tr_s propre niveau HTML (on s'en moque, personne le verra :P )
<?php
// Là tu dois faire une vérification de POST afin de faire ton oppération!
// N'oubli pas la connexion mysql :D 

$requete = mysql_query('SELECT * FROM `FORMATION`') or die('échec exécution requête');
if ($donnee = mysql_fetch_row($requete))
{
 echo <<<HTML
  <table style="text-align: center;" rules="all">
   <tr>
    <th>Sigle</th>
    <th>Libellé</th>
   </tr>
HTML;

 while ($donnee = mysql_fetch_assoc($requete))
 {
  echo <<<HTML
   <tr>
    <form method="post">
     <td>
      <input type="hidden" name="id" value="{$donnee['id']}" />
      <input type="text" name="champ1" value="{$donnee['champ1']}" />
     </td>
     <td><input type="text" name="champ2" value="{$donnee['champ2']}" /></td>
     <td><input type="submit" name="modifier" value="Modifier" /></td>
     <td><input type="submit" name="supprimer" value="Supprimer" /></td>
    </form>
   </tr>
HTML;
 }
}
mysql_close();
?>
  </table>