Supprimer simultanément dans 2 tables

Fermé
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 12 nov. 2008 à 10:42
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 13 nov. 2008 à 12:12
Bonjour,
J'ai un petit problème sur un de mes script php.
Pour supprimer des enregistrements de ma table, j'affiche puis sous chaque je mes une checkbox.
Jusqu'à là tout va bien.
Comment procéder pour supprimer dans 2 tables.
la table : semaine (id_semaine, semaine)
et une table horaires (id_horaires,jour,.....,semaine)Ce dernier champs semaine récupère l'id_semaine de la table semaine lors de mon insert sur la table horaires.
Lors de la suppression je souhaite effacer la ligne de ma table SEMAINE correspondant à mon ou mes checkbox coché(s) ainsi que dans la table horaires la ou les lignes dont le champs semaine est égale à l'id_semaine de la table SEMAINE (soit le ou les checkbox cohé(s))
J'espère que c'est clair :)


Checkbox
<input type="checkbox" name="sup[]" value=<? echo $var; ?>>

Mon script de suppression :
<?php

include("connexions.php");

while (list($key, $tab) = each($HTTP_POST_VARS))
while (list($key, $val) = @each($tab))

$supp = $bd->execRequete("DELETE FROM semaine where id_semaine = $val ") OR print("Erreur de connexion");

if($supp==0) print("<Center><b></center>");

else echo "<br><center><b>Le(s) semaine(s) sélectionné(s) ont été supprimé</b></center>";
echo "<a href =\"semaine.php\">Retour à aux horaires</a>";
exit;
?>


Quelqu'un aurait une idée
Merci d'avance pour vos réponses
A voir également:

1 réponse

_will Messages postés 133 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 3 décembre 2008 17
12 nov. 2008 à 10:56
Bonjour,

Dans tout les cas le mieux reste de faire 2 DELETE différents, un pour les horaires et un pour la semaine.


Commence d'abords par supprimer les horraires correspondant a la semaine que tu va supprimer.
DELETE FROM horaires WHERE semaines = $val


Puis Supprime la semaine en question
DELETE FROM semaines WHERE id_semaine = $val

0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
12 nov. 2008 à 11:42
_Will, Merci de ta réponse
J'ai fait comme tu m'as dit.

<?php

//Voici le script qui vous permet d'effacer les éléments sélectionés

include("connexions.php");

while (list($key, $tab) = each($HTTP_POST_VARS))
while (list($key, $val) = @each($tab))

$del = $bd->execRequete("DELETE FROM horaires where semaine = $val ") OR print("Erreur de connexion");

$supp = $bd->execRequete("DELETE FROM semaine where id_semaine = $val ") OR print("Erreur de connexion");

if($supp==0) print("<Center><b></center>");

else echo "<br><center><b>Le(s) semaine(s) sélectionné(s) ont été supprimé</b></center>";
echo "<a href =\"semaine.php\">Retour à aux horaires</a>";
exit;


?>

C'est toujours au même point
J'ai le message d'erreur suivant
Erreur. problème dans l'exécution de la requête : DELETE FROM semaine where id_semaine =
Erreur. MySQL proteste : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Peux tu me monter la bonne syntaxe
0
_will Messages postés 133 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 3 décembre 2008 17 > delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
12 nov. 2008 à 11:59
La c'est un problème de syntaxe. C'est peut-être la variable qui est mal interprétée, essaie de l'entourer de simples quotes pour voir.

$bd->execRequete("DELETE FROM horaires where semaine='$val' ") ...
$bd->execRequete("DELETE FROM semaine where id_semaine='$val' ") ...


Ou sinon comme ça :
$bd->execRequete("DELETE FROM horaires where semaine='".$val."'") ...
$bd->execRequete("DELETE FROM semaine where id_semaine='".$val."'") ...


0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 > _will Messages postés 133 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 3 décembre 2008
12 nov. 2008 à 12:27
_Will, merci pour ta réponse si rapide
DSl de t'embêter encore
Il n'y a plus d'erreur de syntaxe mais là rien ne s'efface
Voici le détail du code affichage et de suppression ce sera peut-être plus clair pour déceler l'erreur
------------------------------------------------------------------------------------------------------------------------------
<?php

include("connexions.php");

$requ = "SELECT * FROM semaine ORDER BY id_semaine asc ";
$result = mysql_query ($requ);
?>
<form action="sup_semaine.php" method="post">

<table width="60%" border="0" cellspacing="2" cellpadding="0">

<?php
while($row = mysql_fetch_array($result))
{
$var = $row["id_semaine"];
echo $row["semaine"];
echo "<br>";


?>

<tr>
<td><input type="checkbox" name="sup[]" value=<? echo $var; ?>><font color="#ff0500">Supprimer<b> </b></font></td>
</td>
</tr>

</table>
<hr><br>
<?php
}
?>
<td><input type="submit" value="Supprimer le(s) élément(s) sélectionné(s)"></td>

</form>


<?php

//Voici le script qui vous permet d'effacer les éléments sélectionés

include("connexions.php");

while (list($key, $tab) = each($HTTP_POST_VARS))
while (list($key, $val) = @each($tab))

$del = $bd->execRequete("DELETE FROM horaires where semaine='".$val."'") OR print("Erreur de connexion");

$supp = $bd->execRequete("DELETE FROM semaine where id_semaine ='".$val."'") OR print("Erreur de connexion");

if($supp==0) print("<Center><b></center>");

else echo "<br><center><b>Le(s) semaine(s) sélectionné(s) ont été supprimé</b></center>";
echo "<a href =\"semaine.php\">Retour à aux horaires</a>";
exit;

?>
------------------------------------------------------------------------------------------------------------------------------

Merci d'avance pour ton aide
0
_will Messages postés 133 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 3 décembre 2008 17 > delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
12 nov. 2008 à 13:45
Est-ce que le message d'erreur "Erreur de connexion" s'affiche, ou alors t'as rien du tout qui s'affiche (à par le lien pour retourner aux horaires) ?

Est-tu sur de la valeur de val dans le script de suppression ? Un pti echo de val dans la boucle while pour voir si la valeur est bonne peut être utile.


Autres questions, (on sait jamais) :

As tu les droit en écriture sur la base ?
Si tu exécute la requête a partir de ton outil d'administration de base de données ( je sais pas se que tu utilise, peut-être PhpMyAdmin.. ?) quel est le résultat ? Ça marche ?
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 > _will Messages postés 133 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 3 décembre 2008
12 nov. 2008 à 14:45
_Will, je reprends tes questions
Est-ce que le message d'erreur "Erreur de connexion" s'affiche, ou alors t'as rien du tout qui s'affiche (à par le lien pour retourner aux horaires) ?
Lorsque je coche ce que je veux effacer, et que je clique sur le bouton de suppression, les checkbox cochés se décochent et il ne se passe rien, la page reste la même

Est-tu sur de la valeur de val dans le script de suppression ? Un pti echo de val dans la boucle while pour voir si la valeur est bonne peut être utile.
Oui j'en suis sûr car quand j'exécute mon script en ne faisant que la suppression de une ou plusieurs semaines (un seul delete dans la boucle) ça marche


Autres questions, (on sait jamais) :

As tu les droit en écriture sur la base ?
oui
Si tu exécute la requête a partir de ton outil d'administration de base de données ( je sais pas se que tu utilise, peut-être PhpMyAdmin.. ?) quel est le résultat ? Ça marche ?
php MyAdmin sur sql.free.fr, oui j'efface mais je dois le faire table par table. En supprimant une semaine, je dois effacer ensuite les horaires

J'espère que c clair
Merci de ton aide
0