Affichage bdd

Résolu
lolerki Messages postés 675 Statut Membre -  
lolerki Messages postés 675 Statut Membre -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
  2. lolerki Messages postés 675 Statut Membre 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
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. lolerki Messages postés 675 Statut Membre 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
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      La en tout cas... aucune variable action n'apparaît dans le print....
      0
  4. lolerki Messages postés 675 Statut Membre 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