Page 1 sur 1

modifier enregistrement AVEC SUBMIT

Posté : 15 juil. 2012, 14:22
par afi
bONJOUR,
je voudrais modifier les données d'un enregistrement via un bouton submit en cochant une case à cocher (ou pas ds un deuxieme temps...)
Malheureusement cela ne fonctionne pas, rien ne se passe dans la base. Ou plutot quand j'ai un seul enregistrement il ya modification, mais si j'ai plusieurs ca ne marche plus. Voici le code et merci d'avance!!

<form name="modif_pc" action="modif_pc.php" method="post">
<table width="800" border="0" align= "center" cellpadding="1" cellspacing="1">
<tr><td>
<?php
require ("Connect.php");
// on seléctionne la base
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE,$connexion);
$sql = mysql_query("SELECT * FROM permis WHERE id='$_SESSION[id]' ");
echo'<tr>
<td width=350 height=20 class=bloc>type permis de conduire</td>
<td width=150 height= 20 class=bloc>date obtention du permis</td>
<td width=0 height= 20></td>
<td width=0 height= 20 class=bloc>modifier</td>
<td width=0 height= 20 class=bloc>supprimer</td>
</tr>';
while($row=mysql_fetch_array($sql))
{
echo '<tr>
<td class=bloc2>'.$row['permis'].'</td>
<td class=bloc2><input type=text name=date_permis size=20 value="'.$row['date_permis'].'"></td>
<td width=20 height=20 class=bloc2><input type=checkbox name=pc[] value="'.$row['permis'].'"></td>
<td width=20 height=20 class=bloc2><input name="modifier" type="submit" value="modifier" style="font-size: xx-small"></td>
<td width=20 height=20 class=bloc2><input name="supprimer" type="submit" value="supprimer" style="font-size: xx-small"></td> </tr>';
}

echo '';
?>
</table>

<?php
if(isset($_POST['modifier']))
{
if ($_POST['pc'] == "") {
echo '<p class=rep_info>cochez la ligne à modifier !</p>';
}
else
{
foreach($_POST['pc'] as $val)
{
$sql="UPDATE permis SET date_permis='$_POST[date_permis]' where permis='$val'";
}
$req= mysql_query($sql);

echo '<p class=contenu>***données modifiées : <font color=#FF0000> '.$val.'</p>';
} }
?>
fin FORM.

Re: modifier enregistrement AVEC SUBMIT

Posté : 15 juil. 2012, 16:48
par xTG
Tous tes enregistrements prennent toujours la même valeur, celle du dernier input nommé date_permis.
Il faut utiliser aussi une notation tableau si tu veux dissocier les valeurs.
Et en rajoutant l'index dans ton foreach tu pourras y accéder facilement:
foreach($_POST['pc'] as $idx => $val)
  echo $_POST['date_permis'][$idx];

Re: modifier enregistrement AVEC SUBMIT

Posté : 15 juil. 2012, 19:35
par afi
oui effecivement ts les enregistrements prennent la meme valeur. j'ai essayé ta solution je n'ai aucun résultat.
Ai je oublié queque chose?

Re: modifier enregistrement AVEC SUBMIT

Posté : 15 juil. 2012, 19:39
par afi
Par contre en utilisant le meme script pour supprimer cette fois ci ca marche très bien:

<?php
if(isset($_POST['supprimer']))
{
if ($_POST['pc'] == "") {
echo '<p class=rep_info>cochez la ligne à supprimer !</p>';
}
else
{
foreach($_POST['pc'] as $val)
{
$sql="DELETE FROM permis where permis='$val'";
$req= mysql_query($sql);
}
echo '<div style="text-align: center"><font color=#FF0000> ***données supprimées : '.$val.'</font></div>';
} }
?>

Re: modifier enregistrement AVEC SUBMIT

Posté : 16 juil. 2012, 08:28
par xTG
En plaçant le mysql_query() dans le foreach aussi ça peut aller mieux...
Et échapper les données (mysql_real_escape_string()) pour éviter les injections SQL.

Re: modifier enregistrement AVEC SUBMIT

Posté : 22 juil. 2012, 08:08
par afi
désolé pour le retard, à tous
Non jusqu'a maintenant le problème n'est pas réglé.
je me suis dit que c'est peut etre un pb au niveau du WHERE:
foreach($_POST['pc'] as $val)
{
$sql="UPDATE permis SET date_permis='$_POST[date_permis]' where permis='$val'";
$req= mysql_query($sql);
}

Re: modifier enregistrement AVEC SUBMIT

Posté : 22 juil. 2012, 09:56
par xTG
Essaies ainsi :
$sql="UPDATE permis SET date_permis='" . mysql_real_escape_string($_POST[date_permis]) . "' where permis='" . mysql_real_escape_string($val). "'"; // toujours protéger les injections
$req= mysql_query($sql) or die(mysql_error() . '<br />Requête : ' . $sql);// pour le debug