J'ai un soucis tout bête
je suis entrain de faire la partie administrative de mon forum (enfin poffiner et régler certains détails), et je m'attaque à la partie gestion des catégories.
Pour effacer une catégorie entière il faut pour cela, effacer les postes, les topics, les forums (liè à la catégorie) et la catégories elel même.
Ensuite, il faut attribuer un nouveau ordre pour les éventuelles catégories étant en dessous, afin de les replacer correctement (ne pose pas de problem dans le forum lui même, en revanche sur le panel d'admin, là où il y a les flèches pour déplacer les catégories, oui. (voir ici pour plus d'infos.)
Voici donc ce que j'ai fait, mais je ne sais pas pourquoi, rien de fonctionne, alors que toutes mes requêtes sont testée via phpmyadmin et fonctionnelles.
<?php
// si il s'agit d'une catégorie
if ($_GET['cat_id']){
// on s'assure qu'on a pas cliquer sur le bouton par erreur
if (isset($_GET['action']) && $_GET['action']=='oui')
{
$cat_id = $_GET['cat_id'];
// on séléctionne tout les forums, les topics et les postes liés à la catégorie
$query = $cnx->prepare('
SELECT
cat_id
FROM t_cat
WHERE cat_id = :catid');
$query->bindValue(':catid',(int) $cat_id,PDO::PARAM_INT);
$query->execute();
if ($query->rowCount()>0){
// on boucle et on supprime les postes, les topics, les forum et la catégorie
$datai = $query->fetch();
$catid = $datai['cat_id'];
$catorder = $data['cat_order'];
$query = $cnx->prepare('
SELECT
cat_id,
cat_order
FROM t_cat
WHERE cat_order > :catorder');
$query->bindValue(':catorder',(int) $catorder,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
while ($datao = $query->fetch())
{
$majorder = $datao['cat_order']-1;
$ocatid = $datao['cat_id'];
// on leur soustrait -1
$query=$cnx->prepare('UPDATE t_cat SET cat_order = :majorder WHERE cat_id = :ocatid');
$query->bindValue(':ocatid',$ocatid,PDO::PARAM_INT);
$query->bindValue(':majorder',$majorder,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
// on séléctionne tout les forums, les topics et les postes liés à la catégorie
$query = $cnx->prepare('
SELECT
t_cat.cat_id,
t_forum.forum_id,
t_topic.topic_id,
t_post.post_id
FROM t_cat
LEFT OUTER JOIN t_forum
ON t_cat.cat_id = t_forum.cat_id
LEFT OUTER JOIN t_topic
ON t_forum.forum_id = t_topic.forum_id
LEFT OUTER JOIN t_post
ON t_post.topic_id = t_topic.topic_id
WHERE t_cat.cat_id = :catid');
$query->bindValue(':catid',(int) $catid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
// on boucle et on supprime les postes, topics, forum et la catégorie
while ($data = $query->fetch())
{
$postid = $data['post_id'];
$topicid = $data['topic_id'];
$forumid = $data['forum_id'];
if (!empty($postid)) {
// on supprime tout les postes contenu dans les topics apartenants aux forums, qui sont liés à la catégorie
$query=$cnx->prepare('DELETE FROM t_post WHERE post_id = :postid');
$query->bindValue(':postid', $postid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
if (!empty($topicid)) {
// on supprime tout les topics apartenants au forum, qui sont liés à la catégorie
$query=$cnx->prepare('DELETE FROM t_topic WHERE topic_id = :topicid');
$query->bindValue(':topicid',(int) $topicid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
if (!empty($topicid)) {
// on supprime toutes les données concernant t_topic_view, liès à la catégorie par les topics
$query=$cnx->prepare('DELETE FROM t_topic_view WHERE topic_id = :topicid ');
$query->bindValue(':topicid', $topicid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
if (!empty($forumid)) {
// on supprime tout les forum liès à la catégorie
$query=$cnx->prepare('DELETE FROM t_forum WHERE cat_id = :catid');
$query->bindValue(':catid',(int) $catid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
if (!empty($catid)) {
// on suprime la catégorie
$query=$cnx->prepare('DELETE FROM t_cat WHERE cat_id = :catid ');
$query->bindValue(':catid', $catid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
}
// on renvoie en arrière
header('Location: '.SITE_ADRESSE.'admin/index.php?r=forum');
}
$query->CloseCursor();
}
else
{
alerte('Êtes-vous sûr de vouloir supprimer cette catégorie ?');
echo '<p>Attention toutte fois, supprimer une catégorie, supprimera les postes, topics et forums liès à cette dernière!</p>
<p><a href="'.SITE_ADRESSE.'admin/index.php?r=forum&mode=supp&cat_id='.$_GET['cat_id'].'&action=oui">oui</a> - <a href="'.SITE_ADRESSE.'admin/index.php?r=forum">non</a></p>';
}
}
// si il s'agit d'un forum
if (isset($_GET['forum_id'])){
}
?>
Pouvez vous m'aider à déterminer le pourquoi du comment svp?Merci de votre aide
Cordialement