IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Pb news avec commentaire et suppression de celle-ci. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut Pb news avec commentaire et suppression de celle-ci.
    Bonjour,
    j'ai un site de news avec un systeme de commentaires.
    Le problème que j'ai (et qui est logique) c'est que lors que j'essaie de supprimer une news qui comportent des commentaires j'ai le droit à un message comme quoi il y a des commentaires en liens avec cette news.

    Comment faire pour ne plus avoir ce message c'est à dire

    --> Avoir un message lorsque je tente de supprimer la news qui me prévient que la news comporte des commentaires associés et qui me demande si je suis sur de vouloir la supprimer.
    --> Ensuite si je fais ok je supprime automatiquement les news et les commentaires associés sinon je fais rien.


    Page avec laffichage de news et le bouton de suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while($data=mysql_fetch_assoc($req))
    {
        $id=$data["id"];
        $filename=$dossier.$data['image'];
    	echo " <a href=\"supprnews.php?id={$data["id"]} \">x</a>";
        echo '<img src="'.$filename.'" alt="" />';
        echo "<p> {$data["titre"]} -- ";
    	echo "<p>".Tronquer_Texte($data["contenu"],  150)."<br><a href='detail_news_admin.php?id={$data["id"]}'>Suite de  l'article</a></p>";
        echo "<p align=\"right\">".date("j/n/Y G:i",strtotime($data["date"]))."</p>";
        echo" Commentaire(s) ({$data["nb_comments"]})";
    	echo " <a href=\"edit.php?id={$data["id"]}\">edit</a><br><br><br><br>";


    Qui mène à cette page avec la suppression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "DELETE FROM news WHERE id={$_GET["id"]}";
    	$req = mysql_query($sql) or die(mysql_error());
    	header("location: gestionnews.php");
    Merci d'avance !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux utiliser l'option "ON DELETE CASCADE" sur la clef étrangère de la table commentaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    C'est bon ça fonctionne merci.
    Maintenant comment pourrais je m'y prendre pour afficher un message pour prevenir qu'on va supprimer une news avec des commentaires ?

    Merci d'avance

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Une idée avec un petit peu de javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function checkDel()
    {
        reponse = confirm("Etes vous sûr de vouloir supprimer cette news ?");
     
        if(reponse)
        {
            return true;
        }
        else
        {
    	return false;
        }
    }
    Et dans ta balise de suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick='return checkDel()'

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Es tu sur que cela fonctionne ?
    Je n'aurais pas le choix de continuer ou non si ?

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Oui cela fonctionne, je l'utilise et si tu aura le choix car cela va t'afficher 2 boutons, oui ou non.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Ok je vais essayé de mettre en place ça.
    Je vous tiens au courant.

    Merci

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Peux-tu mexpliquer à quel endroit je met ce que tu me proposes ?
    le
    onclick='return checkDel()'

    Notamment car je n'ai pas de formulaire ?

    Merci d'avance

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par polux31 Voir le message
    Peux-tu mexpliquer à quel endroit je met ce que tu me proposes ?
    le
    onclick='return checkDel()'

    Notamment car je n'ai pas de formulaire ?

    Merci d'avance
    Dans la balise du bouton sur lequel tu clique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input style = "button" value = "Supprimer" onclick='return checkDel()' />
    ou dans un lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href=\"supprnews.php?id={$data["id"]} \" onclick='return checkDel()'>x</a>
    EDIT faire attention cependant avec cette technique car la demande de confirmation est dépendante de javascript. Si javascript désactivé la suppression se fera sans préalable.

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    EDIT faire attention cependant avec cette technique car la demande de confirmation est dépendante de javascript. Si javascript désactivé la suppression se fera sans préalable.
    Pour poursuivre sur cette remarque on pourrait faire en sorte d'avoir javascript obligatoirement activé pour pouvoir supprimer la news (et donc on passerait obligatoirement par le message de confirmation sans quoi aucune action ne pourrait être entreprise).

    Pour ce faire il suffirait de supprimer le href et de reporter son contenu en paramètre dans la fonction javascript qui pourra utiliser window.location pour rediriger à la page de suppression.

    Donc en reprenant l'exemple de gwharl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function checkDel(url)
    {
        reponse = confirm("Etes vous sûr de vouloir supprimer cette news ?");
     
        if(reponse)
        {
            window.location = url;
        }
        else
        {
        return false;
        }
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo '<a style="cursor:pointer;text-decoration:underline" onclick= "return checkDel(\'supprnews.php?id='.$data['id'].'\')">x</a>';?>
    Sinon pour faire une confirmation qui fonctionnera sans javascript activé, il faudrait passer par une confirmation php ce qui est plus lourd à coder.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Es tu sur que ta proposition fonctionne ?
    Notamment la fonction (c'est normal qu'il n'y ait pas de $ ?
    Pour le lien de suppression cela ne fonctionne pas. Le clic ne fonctionne pas.

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Mais si ça fonctionne. Tu dois avoir une erreur ailleurs dans ton code. Faut séparer les fonctionnalités pour débugguer.

    Testes ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    $data['id'] = 'toto';
     
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
     
    <script type="text/javascript">
    <!--
    function checkDel(url)
    {
        var reponse = confirm("Etes vous sûr de vouloir supprimer cette news ?");
     
        if(reponse)
        {
            window.location = url;
        }
        else
        {
        return false;
        }
    }
    -->
    </script>
    </head>
     
    <body>
     
    <div>
     <?php echo '<a style="cursor:pointer;text-decoration:underline" onclick= "checkDel(\'supprnews.php?id='.$data['id'].'\')">x</a>';?>
    </div>
     
     
    </body>
    </html>

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par polux31 Voir le message
    Notamment la fonction (c'est normal qu'il n'y ait pas de $ ?
    Oui c'est normal car c'est du javascript et pas du php

    EDIT : Et d'ailleurs j'ai édité le message ci-dessus car il vaut mieux déclarer la variable javascript "reponse" avec var.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Parfait !
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. système news avec commentaires
    Par saeba87 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/08/2011, 16h22
  2. Problème avec formulaire de suppression d'entrée
    Par mickado dans le forum Langage
    Réponses: 19
    Dernier message: 18/04/2007, 18h12
  3. Réponses: 10
    Dernier message: 29/01/2007, 17h01
  4. [Properties] Modif d'un fichier properties avec Commentaires
    Par snetechen dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 19/10/2006, 16h00
  5. Créer composant avec TQuery->pb suppression a la concepti
    Par marghett dans le forum Bases de données
    Réponses: 12
    Dernier message: 24/07/2004, 07h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo