supprime tous les id identiques dans differents tableaux

celine34
Invité n'ayant pas de compte PHPfrance

07 août 2011, 02:01

Bonsoir, bonjour.....
j'ai divers formulaires sur mon site.
J'ai créé une zone d'administration qui se présente sous forme de tableaux pour effacer certains formulaires.
chaque tableau récupère les données dans la bdd et en fin de chaque ligne, une checkbox. Une fois celle ci cochée, j'ai un bouton supprimer.

Voici le code:
$db = mysql_connect($host, $login, $password) or die(showError('1', mysql_error()));
mysql_select_db($base,$db) or die(showError('2', mysql_error()));
/* vide le formulaire */
foreach ($delete as $valeur){
$sql="DELETE FROM formulaire where id='$valeur'";
$req= mysql_query($sql);
}
header("Location: index.php");

/* vide les propositions */
foreach ($delete as $valeur){
$sql="DELETE FROM proposition_dossier where id='$valeur'";
$req= mysql_query($sql);
}
header("Location: index.php");

/* vide le suivi */
foreach ($delete as $valeur){
$sql="DELETE FROM proposition_dossier_suite where id='$valeur'";
$req= mysql_query($sql);
}
 
header("Location: index.php");

/* vide le sondage */
foreach ($delete as $valeur){
$sql="DELETE FROM pvote where id='$valeur'";
$req= mysql_query($sql);
}
 
header("Location: index.php");
}
Le problème, c'est que si je supprime une ligne dans un des tableaux qui porte le même ID qu'une ligne dans un des tableaux suivant, ça le supprime aussi....
Que faire? :P

Eléphant du PHP | 343 Messages

07 août 2011, 02:25

Il me vient une question basique. As-tu donné un "name" différent à chaque submit? Apparemment je ne vois pas de if isset $_POST etc...
Développeur web

celine34
Invité n'ayant pas de compte PHPfrance

07 août 2011, 02:37

Bonsoir,
Tous les "name" son identiques
<input type='checkbox' name='delete[]' value='".$donnees['id']."' />
Pour ce qui est de if isset $_POST etc... je n'avais pas inséré tout le code. Le voici intégral:
<?php 
require('../connexion.php');
$delete = isset($_POST['delete']) ? $_POST['delete'] : array();
if (sizeof($delete)==0){
echo 'Il n\'y a pas d\'enregistrements';
exit;}
else{
 
$db = mysql_connect($host, $login, $password) or die(showError('1', mysql_error()));
mysql_select_db($base,$db) or die(showError('2', mysql_error()));
/* vide le formulaire */
foreach ($delete as $valeur){
$sql="DELETE FROM formulaire where id='$valeur'";
$req= mysql_query($sql);
}
header("Location: index.php");

/* vide les propositions */
foreach ($delete as $valeur){
$sql="DELETE FROM proposition_dossier where id='$valeur'";
$req= mysql_query($sql);
}
header("Location: index.php");

/* vide le suivi */
foreach ($delete as $valeur){
$sql="DELETE FROM proposition_dossier_suite where id='$valeur'";
$req= mysql_query($sql);
}
 
header("Location: index.php");

/* vide le sondage */
foreach ($delete as $valeur){
$sql="DELETE FROM pvote where id='$valeur'";
$req= mysql_query($sql);
}
 
header("Location: index.php");
}
?>
Une idée?

Eléphant du PHP | 343 Messages

07 août 2011, 02:48

C'est bien ce que je pensais.
Si tu utilises les mêmes "name", comment veux-tu que le script fasse la différence?
=> Il supprime toutes tes lignes ayant la même id sur tous tes tableaux. Logique d'un autre coté ;)

Il faut donc donner un name different pour chaque tableau et bien sur faire 1 isset d'un name, indiquer son traitement et passer à un autre isset du name suivant.

Donc
if (isset($_POST['delete1'])){instruction }
if (isset($_POST['delete2'])){instruction }
etc... ;)
Développeur web

celine34
Invité n'ayant pas de compte PHPfrance

07 août 2011, 17:16

merci sam12
Ca fonctionne maintenant...
Bonne journée à toi et aux autres :P :P

Eléphant du PHP | 343 Messages

07 août 2011, 19:48

Pas de soucis ;)
Bonne journée à toi aussi.
Développeur web