Affichage bdd

Résolu
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   -  
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour/Bonsoir,

Je viens vers vous car je coince au niveau de mon code php. Je suis entrain de développer une administration (je débute) et je voudrais lister les commentaires des articles. Sauf que voilà absolument rien ne s'affiche, j'ai beau me réfléchir je ne trouve pas la coquille.

Le code en question :

else if(isset($_GET['action']) == 'gestionc'){ //si action=gestionc (gestion culture)

$commentaire = $bdd->prepare("SELECT * FROM commentaire WHERE id_article = ?"); //req
$commentaire->execute(array($_GET['id']));

while($gestionC = $commentaire->fetch()) // on affiche les informations
{
?>
 <div id="commentaire">
 <p style="color:#585858"><b><?php echo $gestionC['auteur']; ?></b> | Le <?php echo $gestionC['date']; ?>
 <a href="index.php?page=com_article&id_com=<?php echo $gestionC['id_com']; ?>&action=supprimer" onClick="return confirm('Etes vous sur de vouloir supprimer le commentaire de <?php echo $gestionC['auteur']; ?>?');">
 <img src="img/delete.png" title="Supprimer" align="right"/></a>
 <a href="index.php?page=com_article&id_com=<?php echo $gestionC['id_com']; ?>&action=modifier">
 <img src="img/edit.png" title="Editer" align="right"/></a>
 <p><?php echo $gestionC['contenu']; ?></p>
 </div>
<?php
} // while gestionC
} // get gestionc


Merci de votre aide !

PS : je ne rentre même pas dans mon else if pourtant je ne vois pas de probleme dans mon lien :

<a href="index.php?page=AdministrationCommentaire&id=<?php echo $info_cult['id']; ?>&action=gestionc"><?php echo $info_cult['titre']; ?></a>


4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Le plus simple est déjà de faire un print de tes variables pour savoir ce qu'elles contiennent...
//A placer avant ton IF
print_r($_GET);

De plus.. on ne sais pas ce que tu as avant ton Elseif le souci est peut être là....


0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
bonsoir,

j'ai une erreur je n'ai jamais utiliser print_r alors je ne sais pas si c'est de mois ou pas :Parse error: syntax error, unexpected 'else' (T_ELSE)

voici le code compléte :

<h3>Gestion des commentaires</h3><hr/>
<?php
if(isset($_SESSION['idadmin'])){ // si l'utilisateur est admin

if(!isset($_GET['action'])){ // s'il n'y a aucune action on affiche les news
$article = $bdd->query("SELECT * FROM articles ORDER BY id LIMIT 9");
?>
<p><u>Les articles :</u></p>
<?php
while($liste_article = $article->fetch())
{
$nb_commentaire_article = $bdd->prepare("SELECT COUNT(*) AS nb_ligne FROM commentaire WHERE id_news = ?");
$nb_commentaire_article->execute(array($liste_article['id']));
$nbA = $nb_commentaire_article->fetch();
?>
<table>
 <tr><th>Titre :</th><td><a href="index.php?page=AdministrationCommentaire&id=<?php echo $liste_article['id']; ?>&action=gestion"><?php echo $liste_article['titre']; ?></a><td><?php if($nbA['nb_ligne']!= 0){ echo"(".$nbA['nb_ligne'].")";}else { echo "(0)";} ?>commentaire(s)</tr>
</table>
<?php
} // while liste_article

$point_culture = $bdd->query("SELECT * FROM culture ORDER BY id LIMIT 9");
?>
<p><u>Les point cultures :</u></p>
<?php
while($info_cult = $point_culture->fetch()){ // affichage des news et nombre de commentaires
$nb_commentaire_culture = $bdd->prepare("SELECT COUNT(*) AS nb_com FROM commentaire WHERE id_article = ?");
$nb_commentaire_culture->execute(array($info_cult['id']));
$nbC = $nb_commentaire_culture->fetch();
?>
<table>
 <tr><th>Titre :<th><td><a href="index.php?page=AdministrationCommentaire&id=<?php echo $info_cult['id']; ?>&action=commentaire"><?php echo $info_cult['titre']; ?></a></td><td><?php if($nbC['nb_com'] !=0){ echo '('.$nbC['nb_com'].')';}else{ echo'(0)'; } ?>commentaire(s)</td></tr>
</table>
<?php
} // while culture
} // get action

else if(isset($_GET['action']) == 'gestion'){ // si l'admin a clic sur une news article
$commentaires = $bdd->prepare("SELECT * FROM commentaire WHERE id_news = ?");
$commentaires->execute(array($_GET['id']));

while($gestion = $commentaires->fetch())
{
?>
 <div id="commentaire">
 <p style="color:#585858"><b><?php echo $gestion['auteur']; ?></b> | Le <?php echo $gestion['date']; ?>
 <a href="index.php?page=com_article&id_com=<?php echo $gestion['id_com']; ?>&action=supprimer" onClick="return confirm('Etes vous sur de vouloir supprimer le commentaire de <?php echo $gestion['auteur']; ?>?');">
 <img src="img/delete.png" title="Supprimer" align="right"/></a>
 <a href="index.php?page=com_article&id_com=<?php echo $gestion['id_com']; ?>&action=modifier">
 <img src="img/edit.png" title="Editer" align="right"/></a>
 <p><?php echo $gestion['contenu']; ?></p>
 </div>
<?php
} // while gestion
} //gestion
else if(isset($_GET['action']) == 'commentaire'){ // si l'admin a clic sur une news point culture
$commentaire = $bdd->prepare("SELECT * FROM commentaire WHERE id_article = ?");
$commentaire->execute(array($_GET['id']));

while($gestionC = $commentaire->fetch())
{
?>
 <div id="commentaire">
 <p style="color:#585858"><b><?php echo $gestionC['auteur']; ?></b> | Le <?php echo $gestionC['date']; ?>
 <a href="index.php?page=com_article&id_com=<?php echo $gestionC['id_com']; ?>&action=supprimer" onClick="return confirm('Etes vous sur de vouloir supprimer le commentaire de <?php echo $gestionC['auteur']; ?>?');">
 <img src="img/delete.png" title="Supprimer" align="right"/></a>
 <a href="index.php?page=com_article&id_com=<?php echo $gestionC['id_com']; ?>&action=modifier">
 <img src="img/edit.png" title="Editer" align="right"/></a>
 <p><?php echo $gestionC['contenu']; ?></p>
 </div>
<?php
} // while gestionC
} // get gestionc

else if(isset($_GET['action']) == 'supprimer') { // si l'action est supprimer
 $supprime = $bdd->prepare("DELETE FROM commentaire WHERE id_com = :id");
 $supprime->execute(array('id' => $_GET['id_com']));
?>  <center><p class="message"><?php echo 'Le commentaire à bien était supprimer';?></p></center> <?php
 header('Refresh: 1;url=index.php?page=AdministrationCommentaire');
} // else if supprimer

else if(isset($_GET['action']) == 'modifier') { //si l'action est modifier

 $edition_com = $bdd->prepare("SELECT * FROM commentaire WHERE id_com= ?");
 $edition_com->execute(array($_GET['id_com']));
 $editer = $edition_com->fetch();
?>
<form method="post" action="">
 <p class="nv_com"><b>Edition du commentaire :</b><br />
 <textarea name="Edition" rows="4" cols="50"><?php echo $editer['contenu']; ?></textarea></br>
 <input type="submit" name="edit" value="Confirmer" title="Editer le commentaire"/> | <input type="button" value ="Annuler" title="Anuuler la saisi" onclick="location.href='index.php'"/></p>
</form>
<?php
 if(isset($_POST['edit']))
 { // si on n'a clic sur editer le commentaire
  if(empty($_POST['contenu']))
  {
   $edition = $bdd->prepare("UPDATE commentaire SET contenu = :contenu WHERE id_com = :id");
   $edition->execute(array(
   'contenu' => $_POST['Edition'],
   'id' => $_GET['id_com']
   )); 
?>   <center><p class="message"><?php echo 'Le commentaire à bien était éditer';?></p></center>
<?php  header('Refresh: 1;url=index.php?page=AdministrationCommentaire');
  }
  else{ ?><center><p class="message2">Erreur : le commentaire est vide</p></center><?php }
 } // $_POST['edit']
} // else if modifier

else if(isset($_GET['banir'])){ // si l'action et banir
 
} // else if banir
} // idadmin
else{ //sinon pas admin erreur
?>
<center><p class="message2">Erreur : vous n'avez rien n'a faire ici</p></center>
<?php
} // else
?>

PS : les commentaires des articles s'affiche bien, mais pas ceux du point culture
Merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu l'as mis où ton print_r ?

Mets le ici :
<h3>Gestion des commentaires</h3><hr/>
<?php
print_r($_GET);
if(isset($_SESSION['idadmin'])) 
 
// Le reste de ton code...



... sachant que cette ligne de code... ne peut pas fonctionner...
else if(isset($_GET['action']) == 'gestion')

Ni celle là ....
else if(isset($_GET['action']) == 'modifier')


Là... tu demandes via ISSET si la variable existe.... le résultat sera TRUE ou FALSE ... et donc ne pourra jamais être égale à gestion.. modifier.... etc....

Et vu que tes IF ELSE IF... ne te servent qu'à vérifier toujours la même variable...($_GET['action']) ... je te conseille de les remplacer par un SWITCH

$action = isset($_GET['action'])?$_GET['action']:NULL;
switch ($action) {
    case 'gestion':
         // ici le code de gestion
        break;
    case 'modifier':
         // ici le code pour modifier
        break;
    case 'commentaire':
         // ici le code pour les commentaires
        break;
    case 'supprimer':
         // ici le code pour supprimer
        break;
    default:
        // ici le code dans le cas où ne correspond à aucune autre valeur...
     break;
}


Pour aller plus loin... tu devrais même mettre le code correspondant à chaque action dans des Fonctions .... et appeler ces fonctions dans le switch plutôt que de mettre tout le code directement dedans....




0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
Merci de ta réponse et de t'es conseil.
voici ce que le print_r affiche : Array ( [page] => AdministrationCommentaire )
Pourtant gestion et modifier marche très bien ainsi que supprimer !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
La en tout cas... aucune variable action n'apparaît dans le print....
0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
J'ai tester ta solution et cela marche très bien je te remercie !
Bien que je ne comprends pas pourquoi le $_GET[''] ne fonctionnent pas, surtout que je l'envoie en paramètre.
0