Page 1 sur 1

Aide pour gestion de forum

Posté : 25 sept. 2008, 16:04
par Domi_d
Bonjour,

Dans mon espace d'administration, je suis en train de mettre en place une section de 'maintenance' pour mon forum.

J'aimerais pouvoir supprimer x sujets ainsi que les réponses rattachées à ces sujets.

Pour ce faire, je détermine le nombre de sujets à supprimer dans un formulaire (du style "Combien de message à supprimer ?").

Par contre, c'est l'étape suivante qui me bloque, je n'arrive pas à formuler la requête pour sélectionner puis supprimer les sujets et réponses concernées.

Voici mes 2 tables :
La 1ère forum_sujets
id
titre
auteur
date_derniere_reponse

La 2nde forum_reponses
id
auteur
message
date_reponse
correspondance_sujet (qui est l'id du sujet de la 1ère table)

Comment formuler la requête svp ?

Merci d'avance pour votre aide :wink:

Posté : 25 sept. 2008, 16:37
par _activmik
Salut,

Comment définis-tu les sujets aptes à être supprimé ?

Posté : 25 sept. 2008, 16:46
par Domi_d
Salut,

Je définis les sujets avec ce formulaires :

Code : Tout sélectionner

<form method="post" action="valid_maintenance.php"> <table> <tr> <td>Sélectionner le nombre de sujets les plus anciens à supprimer :</td> </tr> <tr> <td><input type="radio" name="nb_sujets" value="5">5<br> <input type="radio" name="nb_sujets" value="10">10<br> <input type="radio" name="nb_sujets" value="50">50<br> <input type="radio" name="nb_sujets" value="100">100</td> </tr> <tr> <td><input type="submit" value=" Valider "></td> </tr> </table>

Posté : 25 sept. 2008, 16:56
par _activmik
Ok, donc tu supprimes un nombre variables de sujets à partir du plus ancien.

La requête peut être du style :
"SELECT id FROM forum_sujets  ORDER BY  date_derniere_reponse ASC LIMIT ".$nombre_a_supp
Ainsi tu recupères les x identifiants de ta table les plus anciens. Tu les gardes de côté (mysql_fetch_array() ) et tu supprimes dans ta table forum_sujets toutes les champs avec ces id, ainsi que dans ta table forum_reponses.

Tu peux aussi faire une requête sql imbriquée sinon. Mais essaye de comprendre déjà ça.

Bon courage !

Posté : 25 sept. 2008, 17:25
par Domi_d
A vrai dire, voici ma requête initiale, mais je ne voyais pas comment l'exploiter:
SELECT id from forum_sujets order by id asc limit $nb_sujets

Posté : 29 sept. 2008, 10:20
par Domi_d
Voici ce que je viens de faire, mais ça ne fonctionne pas :
<?
$tablo=array();
require ('../../../includes/config.php');
mysql_connect($serveur,$login,$pass);
mysql_select_db ($base)
$marequete = "SELECT id from forum_sujets order by id asc limit".$nb_sujets;
while($res=mysql_fetch_assoc($marequete)) {
$tablo[]=$res['id'];
}
$ids=implode(',',$tablo);

$req=mysql_query("DELETE FROM forum_sujets WHERE id IN (".$ids.")") or die(mysql_error());
$req=mysql_query("DELETE FROM forum_reponses WHERE correspondance_sujet IN (".$ids.")") or die(mysql_error());
?>
Voici l'erreur :
Parse error: parse error, unexpected T_VARIABLE in c:\program files\easyphp\www\...maintenance.php on line 27

La ligne 27 est celle-ci :
$marequete = "SELECT id from forum_sujets order by id asc limit".$nb_sujets;
Que se passe-t-il ?

Merci d'avance

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]