Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1830 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème pour supprimer article en PHP/MySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème pour supprimer article en PHP/MySQL

n°1876709
ozone--24
Posté le 23-04-2009 à 12:02:52  profilanswer
 

Bonjour à tous,
 
Je suis en train de créer un blog pour mon site web.
Dans celui-ci j'ai intégré la création d'article.
Puis sur la page d'accueil j'affiche tous les articles de l'utilisateur (c'est ce que fait la fonction while...)
Je m'occupe en ce moment de rajouter la fonctionnalité : supprimer l'article.
Et je n'arrive pas à supprimer un article en particulier.
 
Tout d'abord le code de la requête pour afficher les articles

Code :
  1. $pseudo = $_SESSION['pseudo'];
  2. $afficher_article = "Select `Titre_article`, `Article` from `blog`.`article` where pseudo='$pseudo'";
  3. $resultat = mysql_query($afficher_article);
  4. $i = 1;
  5. while ($row = mysql_fetch_array($resultat, MYSQL_ASSOC))
  6. {
  7. printf ("
  8. <div style='font-size: 16px'>
  9. Article N°%d
  10. </div>
  11. <div style='font-size: 15px;'>
  12. Titre :  %s
  13. </div>
  14. Contenu : %s
  15. "$_SESSION['Article'] = $row['Article'];"
  16. <a style='text-decoration: none' href=supprimer_article.php>
  17. <img src='images/supprimer.png'/>
  18. Supprimer cet article
  19. </a>",
  20. $i, $row["Titre_article"], $row["Article"]);
  21. $i++;
  22. }


 
Et le code de la requête pour supprimer l'article :

Code :
  1. <?php
  2. $pseudo = $_SESSION['pseudo'];
  3. $article = $_SESSION['Article']; // je récupère ce qu'il y'a dans l'article
  4. $suprimer_article = "DELETE FROM `blog`.`article` where Article='$article'"; // Pour ensuite supprimer la ligne où il y'a l'article.
  5. mysql_query($suprimer_article);
  6. ?>


 
Et j'ai une erreur comme ça :  
Parse error: parse error in C:\Program Files\WampServer\www\Blog\Artisteer\Body\Home.php on line 26
ce qui correspond à la ligne où il y'a : "$_SESSION['Article'] = $row['Article'];"  
 
Et si vous avez une idée du moyen par lequel je dois passer pour modifier cet article (j'utilise fckeditor)
 
Merci d'avance


Message édité par ozone--24 le 23-04-2009 à 12:06:14
mood
Publicité
Posté le 23-04-2009 à 12:02:52  profilanswer
 

n°1876717
FlorentG
Unité de Masse
Posté le 23-04-2009 à 12:10:14  profilanswer
 

Déjà on n'utilise surtout pas la méthode HTTP GET pour quelque chose avec de tels effets de bords.

 

Donc jamais jamais de liens, il faut un mini-formulaire avec méthode POST et tout.

 

Ensuite l'autre problème est qu'apparemment t'as pas trop pigé comment fonctionnent les sessions. Il faut passer en paramètre l'id de l'article. Donc il faut un truc du genre :

Code :
  1. <form action="supprimer_article.php" method="post">
  2.  <div>
  3.    <input type="hidden" name="id_article" value="<?php echo htmlspecialchars($row['id']) ?>" />
  4.    <input type="submit" value="Supprimer" />
  5.  </div>
  6. </form>
 

Ensuite dans supprimer_article.php faut récupérer l'id (via $_POST('id_article')), vérifier que l'article existe bien, le virer, puis rediriger vers le formulaire.


Message édité par FlorentG le 23-04-2009 à 12:11:00
n°1876741
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 23-04-2009 à 13:22:45  profilanswer
 

pourquoi tu met des guillements autour du nom de tes variables
#
# "$_SESSION['Article'] = $row['Article'];"
apres ton algo est pas correct tu utilise le meme nom de session pour tous tes articles, donc la l'id sauvegarde sera le dernier
 
ensuite revoit ton printf, ton $_SESSION['Article'] = $row['Article'] n'a rien a y faire dedans
 
dans le meme style que FLO
tu peut utiliser un lien  

Code :
  1. $pseudo = $_SESSION['pseudo'];
  2. $afficher_article = "Select `Titre_article`, `Article` from `blog`.`article` where pseudo='$pseudo'";
  3. $resultat = mysql_query($afficher_article);
  4. $i = 1;
  5. while ($row = mysql_fetch_array($resultat, MYSQL_ASSOC))
  6. {
  7.         printf ("
  8.             <div style='font-size: 16px'>
  9.             Article N°%d
  10.             </div>
  11.           <div style='font-size: 15px;'>
  12.             Titre :  %s
  13.           </div>
  14.           Contenu : %s
  15.           ",
  16.           $i, $row["Titre_article"], $row["Article"]
  17.         );
  18.     echo "<a href=\"./suprimerarticle.php?article=".$row['Article']."\" ><img src='images/supprimer.png'/>Supprimer cet article</a>";
  19.    $i++;
  20. }
  21. <?php
  22. if(isset($_GET['Article'])){
  23. $pseudo = $_SESSION['pseudo'];
  24. $article = $_GET['Article']; // je récupère ce qu'il y'a dans l'article
  25. $suprimer_article = "DELETE FROM `blog`.`article` where Article='$article'"; // Pour ensuite supprimer la ligne où il y'a l'article.
  26. mysql_query($suprimer_article);
  27. }
  28. ?>


 
 tu met un lien pour chaque article et tu passe l'id de l'article dans le lien
et tu fais appel a ta page supprimer qui recupere l'id par le GET
 
bon voila tu peut optimiser pas mal, déja les double quotes avec le echo(c'est un peu moche) , puis arranger un peu le code


Message édité par infoman64 le 23-04-2009 à 13:24:21
n°1876776
FlorentG
Unité de Masse
Posté le 23-04-2009 à 14:29:50  profilanswer
 

Nan pas de lien :o :o :o

n°1876785
ozone--24
Posté le 23-04-2009 à 14:44:23  profilanswer
 

J'aurais dû annoncer que j'étais débutant dans le php.
Donc j'ai modifié mon code selon vos propositions et je vous montre un  screenshot de ma page d'accueil (la partie intéressante) :
http://img254.imageshack.us/img254/7995/forumphpbug1.jpg
 
 
Et ce que produit l'exécution quand je clic sur Supprimer cet article (au milieu de l'image), ça me donne bien une page blanche :'( :
 
http://img254.imageshack.us/img254/6417/forumphpbug2.jpg
 
Et maintenant le code (que j'ai modifié  :)  )
 

Code :
  1. <h3> Vos Articles déjà écrit : </h3>
  2. <?php
  3. require("../connexion.php" );
  4. connec();
  5. $pseudo = $_SESSION['pseudo'];
  6. $afficher_article = "Select `Titre_article`, `Article` from `blog`.`article` where pseudo='$pseudo'";
  7. $resultat = mysql_query($afficher_article);
  8. $i = 1;
  9. ?>
  10. <form action="supprimer_article.php" method="post">
  11. <div>
  12. <input type="hidden" name="id_article" value=" <?php echo htmlspecialchars($row['id']) ?>" />
  13. <input type="submit" value="Supprimer" />
  14. </div>
  15. </form>
  16. <?php
  17.  while ($row = mysql_fetch_array($resultat, MYSQL_ASSOC))
  18.  {
  19.   printf ("
  20.   <div style='font-size: 16px; font-weight: bold; '>
  21.   Article N°%d
  22.   </div>
  23.   <div style='font-size: 15px;'>
  24.   Titre :  %s
  25.   </div>
  26.   Contenu : %s
  27.   ",
  28.   $i, $row["Titre_article"], $row["Article"]);
  29.   echo "<a href=\"./supprimer_article.php?article=".$row['Article']." // j'ai enlevé le \"> parce que sinon ça l'affichait à côté de supprimer article (juste avant l'icône)
  30.   <img src='images/supprimer.png'/> Supprimer cet article</a>";
  31.   echo '<br/><br/><br/><br/><br/><br/>';
  32.   $i++;
  33.   }
  34.  ?>


 

Code :
  1. <?php
  2. if(isset($_GET['Article']))
  3. {
  4.  $pseudo = $_SESSION['pseudo'];
  5.  $article = $_GET['Article'];
  6.  $id_article = $_POST('id_article');
  7.  $supprimer_article = "DELETE FROM `blog`.`article` WHERE Article='$article'";
  8.  echo $supprimer_article;
  9.  mysql_query($supprimer_article);
  10.  echo mysql_error();
  11.  header("Location:index.php" );
  12. }
  13. ?>


Message édité par ozone--24 le 23-04-2009 à 14:46:45
n°1876820
ozone--24
Posté le 23-04-2009 à 15:04:13  profilanswer
 

FlorentG a écrit :

Nan pas de lien :o :o :o


Oui mais j'ai pas bien saisi comment savoir quel article supprimer alors ?
Parce que si je mets pas de lien j'obtiens ça :
http://i61.servimg.com/u/f61/11/31/25/01/sans_y10.jpg
 
Et du coup je peux pas cliquer sur Supprimer Article. Je comprends pas grand chose :'(
J'ai mis le <form> et le <div> qui englobe le <?php ?> c'est bien ça qui faut faire ?


Message édité par ozone--24 le 23-04-2009 à 15:07:30
n°1876868
ozone--24
Posté le 23-04-2009 à 15:35:18  profilanswer
 

Finalement j'ai trouvé avec l'aide d'un collègue, je vous mets la réponse au cas où des personnes auraient le même problème que moi :
 

Code :
  1. <?php
  2.     while ($row = mysql_fetch_array($resultat, MYSQL_ASSOC))
  3.     {
  4.      printf ("
  5.      <div style='font-size: 16px; font-weight: bold; '>
  6.      Article N°%d
  7.      </div>
  8.      <div style='font-size: 15px;'>
  9.      Titre :  %s
  10.      </div>
  11.      Contenu : %s
  12.      <br/>
  13.      Id : %s
  14.      ",
  15.      $i, $row["Titre_article"], $row["Article"], $row["Id"]);
  16.      ?>
  17.      <form action="supprimer_article.php?id_article=<?php echo $row['Id']; ?>" method="post">
  18.      <div>
  19.      <input type="submit" value="Supprimer" />
  20.      </div>
  21.      </form>
  22.      <?php
  23.      // "<a href=\"./supprimer_article.php?article=".$row['Article'].</a>"  
  24.      echo "<img src='images/supprimer.png'/> Supprimer cet article";
  25.      echo '<br/><br/><br/><br/><br/><br/>';
  26.      $i++;
  27.     }
  28.    ?>


 

Code :
  1. <?php
  2. require("../connexion.php" );
  3. connec();
  4. if( isset($id_article) )
  5. {
  6. echo $id_article;
  7. $supprimer_article = "DELETE FROM `blog`.`article` WHERE Id='$id_article'";
  8. echo $supprimer_article;
  9. mysql_query($supprimer_article);
  10. echo mysql_error();
  11. }
  12. ?>

n°1876921
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 23-04-2009 à 15:58:34  profilanswer
 

FlorentG a écrit :

Nan pas de lien :o :o :o


ouais mais bon c'etait pour lui donner une réponse rapide

n°1876923
ozone--24
Posté le 23-04-2009 à 16:01:23  profilanswer
 

/me tape sur les doigts de infoman64 avec une bonne règle en fer   :p


Message édité par ozone--24 le 23-04-2009 à 16:01:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème pour supprimer article en PHP/MySQL

 

Sujets relatifs
MFC & Threads problème de compréhensionpassword pour page HTML/PHP
Problème d'envoi de mail avec phpprobleme de rafraichissement d'un JPanel
Probleme de Footer...[JavaScript] problème de "closure" (résolut)
[C][GTK] Problème de signal_connect[PHP] Erreur sur une fonction foreach
Probleme de redirection avec OVH et classeproblème boucle while
Plus de sujets relatifs à : Problème pour supprimer article en PHP/MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR