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 :

Get et action [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut Get et action
    Bonjour à tous !
    Ma question est sûrement bête mais voilà, j'y arrive pas !
    Alors voilà, ma page affiche ce qui se situe dans une table de bdd. A côté de chaque affichage il y a une image qui devrait me permettre de supprimer les données situées à côté de cette image.
    Bon le code vous parlera sûrement plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($donneescommentaires = mysql_fetch_array($commentaires) )
    {
    $id=$donneescommentaires['id'];
    echo "<form name=\"formulaire\" action=\"comm.php\" method=\"POST\">";
    echo "Auteur : ".$donneescommentaires['auteur']."<br>";
    echo "URL : ".$donneescommentaires['url']."<br>";
    echo "Mail : ".$donneescommentaires['mail']."<br>";
    echo "Contenu : ".$donneescommentaires['msg']."<br>";
    echo "<a href=\"comm.php?action=del&id=$id\" ><img src='supp.jpg'  /></a><br><br>";
     
    }
    le truc c'est que je ne sais pas quoi mettre au niveau de action = pour que ça fonctionne car avant pour tester, j'utiliser cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reqmod = mysql_query("DELETE FROM commentaires WHERE id = '$id' ");
    et j'aimerai le faire fonctionner avec une image à la place d'un champ avec un bouton submit.

    J'espère avoir été claire, ne pas passer pour trop nulle et avoir des réponses ! Merci !

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Pourquoi utiliser un formulaire ? Le lien <a href="comm.php?action=del&id=<ID>"> suffit dans ce cas là.
    PS : dans ton while tu ouvres <form> sans le fermer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    ah oui non c'est juste parce que je faisais des tests et jai oublié de le supprimer, mais après le action= je met quoi pour que ça efface bien dans la bdd ?

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par ptitediablotesse
    ah oui non c'est juste parce que je faisais des tests et jai oublié de le supprimer
    De quoi ? Le <form> ou le <a> ?

    mais après le action= je met quoi pour que ça efface bien dans la bdd ?
    Le action= du <form> ou du <a> ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    alors j'avais oublié de supprimer le forum et pour le <a> ben ça ne fait rien (ça se met bien dans la barre d'adresse quand même, ça il n'y a aucun soucis), donc je suppose que ça vient du action qui est dedans...

  6. #6
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Je vois ce que tu veux faire...
    Du moins je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    while ($donneescommentaires = mysql_fetch_array($commentaires) ) {
     
    $id=$donneescommentaires['id']; 
    echo '<form name="formulaire" action="comm.php" method="POST">';
    echo '<input type="hidden" name="action" value="del">';
    echo '<input type="hidden" name="id" value='.$id.'>'; 
    echo 'Auteur : '.$donneescommentaires['auteur'].'<br>'; 
    echo 'URL : '.$donneescommentaires['url'].'<br>'; 
    echo 'Mail : '.$donneescommentaires['mail'].'<br>'; 
    echo 'Contenu : '.$donneescommentaires['msg'].'<br>';
    echo '<input type="submit" style="border:1px solid #000000" value="Effacer">';
    echo '</form><br><br>';   
    }
    C'est bien cela que tu veux faire ?
    @+
    cadou

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    En fait, ce que je souhaite faire, c'est supprimer une "ligne" de champ dans ma bdd mais à partir d'une image, en fait, quand on clique sur l'image, que ça supprime la ligne correspondante à un id dans la bdd.

  8. #8
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    OK...
    Bon alors je vais partir du principe que l'image c'est genre une petite icone...
    Donc a partir de ce moment là tu n'as pas besoin de formalire, tu peux le faire via un lien....

    Ce qui donnerais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    while ($donneescommentaires = mysql_fetch_array($commentaires) ) {
     
    $id=$donneescommentaires['id']; 
    echo 'Auteur : '.$donneescommentaires['auteur'].'<br>'; 
    echo 'URL : '.$donneescommentaires['url'].'<br>'; 
    echo 'Mail : '.$donneescommentaires['mail'].'<br>'; 
    echo 'Contenu : '.$donneescommentaires['msg'].'<br>';
    echo '<input type="submit" style="border:1px solid #000000" value="Effacer">';
    echo '<a href='comm.php?action=del&id='.$id.'><img src="supp.jpg" border="0"  /></a><br><br>";
    }
    Maintenant, si tu veux absolument une formulaire, le mieux est de mettre une classe CSS sur ton bouton.

    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     while ($donneescommentaires = mysql_fetch_array($commentaires) ) {
     
    $id=$donneescommentaires['id']; 
    echo '<form name="formulaire" action="comm.php" method="POST">';
    echo '<input type="hidden" name="action" value="del">';
    echo '<input type="hidden" name="id" value='.$id.'>'; 
    echo 'Auteur : '.$donneescommentaires['auteur'].'<br>'; 
    echo 'URL : '.$donneescommentaires['url'].'<br>'; 
    echo 'Mail : '.$donneescommentaires['mail'].'<br>'; 
    echo 'Contenu : '.$donneescommentaires['msg'].'<br>';
    echo '<input type="button" style="background-image:url(supp.jpg);" value="Effacer" onClick="submit()">';
    echo '</form><br><br>';   
    }


    Ensuite au niveau de comm.php tu dois avoir ceci dans le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($_POST['action'] == 'del') {
    $reqmod = mysql_query("DELETE FROM commentaires WHERE id =".$_POST['id']." LIMIT 1;");
    }
    Fais le test et dis nous si cela fonctionne

    @+
    cadou

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Alors avec post ça marche, mais pas avec get et à la limite c'est vrai que get me paraît plus convenir mais rien ne se passe dans la bdd, rien ne s'efface.
    Voici mon echo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href=\"comm.php?action=del&id=$id\"><img src=\"supp.jpg\" border=\"0\"  /></a><br><br>";
    car avec le tien il ne passait aucun id. Là l'id est bien dans la barre de tâche mais c'est tout !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Bon alors ça marche maintenant avec ce code :
    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
    $id="";
    while ($donneescommentaires = mysql_fetch_array($commentaires) ) {
     
    $id=$donneescommentaires['id']; 
     
    echo 'Auteur : '.$donneescommentaires['auteur'].'<br>'; 
    echo 'URL : '.$donneescommentaires['url'].'<br>'; 
    echo 'Mail : '.$donneescommentaires['mail'].'<br>'; 
    echo 'Contenu : '.$donneescommentaires['msg'].'<br>';
    echo "<a href=\"comm.php?action=del&id=$id\"><img src=\"supp.jpg\" border=\"0\"  /></a><br><br>";
    echo $id;
     
    }
    if( isset ($_GET['action']) && $_GET['action'] == 'del' && $id) {
    $reqmod = mysql_query("DELETE FROM commentaires WHERE id=($id);");
    }
    else
    echo "Pas de commentaires";
    mais le hic c'est que ça efface toujours les derniers commentaires, en fait si par exemple j'ai 5 commentaires, ça va effacer le commentaires avec l'id le grand (genre 1/2/3/4/5, en cliquant sur n'importe laquelle des images correspondant aux id pour la suppression, ça effacera le 5). Normal l'id n'est sauvegardé nul part.
    Alors comment sauvegarder l'id (dans une variable, avec une boucle ?...) sachant que je n'ai pas de formulaire et que je ne peux donc pas faire de champ invisible.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faudrait peut être utiliser la bonne variable $id, ie non pas celle de votre boucle (ce qui fait que vous supprimez le dernier enregistrement) mais celle qui est fournie par l'URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( isset ($_GET['action']) && $_GET['action'] == 'del' && isset($_GET['id']) && is_numeric($_GET['id'])) {
    $reqmod = mysql_query("DELETE FROM commentaires WHERE id = {$_GET['id']}");
    }
    (j'espère que register_globals est bien sur Off ...)

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    ça marche !
    j'avais pas pensé à utiliser $_GET...
    Je peux poser une autre question ?
    En fait, quand je le fais ça marche bien, sauf que ça n'"actualise" pas.
    J'ai utilisé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if(isset ($_GET['refresh']) && $_GET['refresh']=='yes')
    {
        $onload="onLoad=\"javascript:window.location.reload();\"";
    }
    else
    {
       $onload="";
    }
    en l'appliquant sur le body mais ça ne change rien. Une idée ?

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Est-ce que le fait de passer le code procédant à cette suppression devant celui de la requête SELECT ne règlerait pas la question (et serait amplement suffisant) ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    exact !
    merci à tous !

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

Discussions similaires

  1. ZF2 : routage action + GET
    Par Paul75 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 06/03/2014, 16h47
  2. [PHP 4] Method "GET" & action vers javascript
    Par noxia dans le forum Langage
    Réponses: 1
    Dernier message: 20/02/2009, 11h27
  3. Formulaire GET avec action contenant déjà des paramètres
    Par vichenze dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/06/2008, 11h40
  4. [MySQL] Get Action Url
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/01/2007, 17h20
  5. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16

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