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 :

[Conception] Conception d'un site dynamique : modifier et supprimer un membre


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut [Conception] Conception d'un site dynamique : modifier et supprimer un membre
    Bonsoir,

    j'ai suivi la méthode du tuto "conception d'un site dynamique" de Pierre-Baptiste Naigeon et je me trouve face à deux problemes, je vous montre une partie du code puis j'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $recherche = mysql_query ("SELECT * FROM membre ORDER BY id");
    while ($var = mysql_fetch_array ($recherche))	 
    {
    	$id = $var['id'];
    	$pseudo = $var['pseudo']; 
    ?>
    <td>Pseudo: <?php echo $pseudo; ?></td>
    <td><a href="index.php?id_page=46?pseudo=<?php echo $pseudo; ?>">Modifier</a></td>
    <td><a href="index.php?id_page=45?supprimer=<?php echo $id; ?>">Supprimer</a></td>
    Pour situer : index.php?id_page=45 est ma page "Liste_membres.php" insérée par un include dans la base de donnée.
    index.php?id_page=46 est ma page "Modif_membres.php", toujours insérée dans la BDD

    Le problème : je ne peux ni supprimer ni modifier un membre.
    J'ai forcément un probleme de compréhension, je débute.. Merci à vous de bien vouloir m'eclaircir

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Par défaut
    Dans ton code, tu ne fais que créer un lien vers une page ou tu vas traiter les infos que tu transmets via l'url.

    le problème se trouve forcément sur tes deux pages "modifier" et "supprimer".

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Citation Envoyé par Nag_Champa
    Pour situer : index.php?id_page=45 est ma page "Liste_membres.php" insérée par un include dans la base de donnée.
    Que veux-tu dire ? Le code php de ta page est en bdd, ou uniquement son url ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Citation Envoyé par vg33
    Que veux-tu dire ? Le code php de ta page est en bdd, ou uniquement son url ?
    j'ai stocké uniquement l'adresse physique de la page inclue sur le serveur.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Citation Envoyé par Istrella
    Dans ton code, tu ne fais que créer un lien vers une page ou tu vas traiter les infos que tu transmets via l'url.

    le problème se trouve forcément sur tes deux pages "modifier" et "supprimer".
    ma page Modif_membres.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $_SESSION['pseudo_membre'] = $_GET['pseudo'];
    $requete = mysql_query("SELECT * FROM membres WHERE `pseudo`='$pseudo_get'"); 
    $var = mysql_fetch_array ($requete);
    	$id = $var['id'];
    	$pseudo = $var['pseudo']; 
    ..
    Ce code fonctionne bien lorsque je n'insère pas les adresses des pages dans la bdd
    Et pour le lien supprimer, c'est en fait l'équivalent de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="liste_membre.php?supprimer=<?php echo $id; ?>">Supprimer</a></td>

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Par défaut
    Citation Envoyé par Nag_Champa
    Et pour le lien supprimer, c'est en fait l'équivalent de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="liste_membre.php?supprimer=<?php echo $id; ?>">Supprimer</a></td>
    Ce n'est pas équivalent, car dans le premier cas, tu transmets les paramètres à "index.php", et dans le cas ci-dessus, à "liste_membre.php". Forcément, "index.php" ne saura pas traiter ta variable "supprimer", à moins de mettre ton script (ou l'appeler) dans "index.php"

    Eventuellement, sur ta page index.php, tu peux mettre un include de Modif_membres.php et de liste_membre.php et faire un truc du genre :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($_ENV['id_page'] == 45) {
    tafonctionsupression($_GET['supprimer']);
    }

    Mais ton index.php risque de vite ressembler à un code hyper lourd si tu fais ça pour chaque truc.

    Sinon, il y a une solution que j'aime bien c'est faire passer les variables à ton script php via une instance XMLHttpRequest. Et en plus c'est convivial et ça ne surcharge pas ton code (juste besoin d'un include dans index.php).

    Il y a un tuto là, dont tu peux t'inspirer : http://nicolaspied.developpez.com/ajax-premiers-pas/

    Comme dis, j'essaie de t'aider mais je ne scripte pas depuis très longtemps non plus, donc d'autres seront peut-être de meilleur conseil.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Merci de m'aider
    En ce qui concerne le tuto ajax, pour l'instant je préfèrerai mieux comprendre php avant de m'y lancer.
    Bon, cette fois-ci je m'y suis pris autrement, pour supprimer un membre.
    <td><a href="index.php?id_page=47?id=<?php echo "$id"; ?>">Supprimer</a></td>
    dans cette page 47 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $id=$_GET['id'];
    $id="DELETE FROM membres WHERE id='$id'";
    mysql_query($id) or die(mysql_error());?>
    <strong>Membre supprimé !</strong>
    et là l'erreur retournée lorsque que je teste la page : Notice: Undefined index: id in C:\admin\supprimer.php on line 2
    Membre supprimé !

    Istrella tu me conseilles de mettre une fonction dans l'index, mais en fait je ne comprends pas bien.. désolé

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Par défaut
    C'est quoi le code du fichier "supprimer.php" ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Je vais récapituler ce sera plus simple :
    voici ma page liste_membres.php insérée dans le contenu de la page 45 en bdd (d'apres le tuto "conception d'un site dynamique par Pierre-Baptiste Naigeon):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $recherche = mysql_query ("SELECT * FROM membre ORDER BY id");
    while ($var = mysql_fetch_array ($recherche))	 
    {	$id = $var['id'];
    	$pseudo = $var['pseudo']; ?>
    <td>Pseudo: <?php echo $pseudo; ?></td>
    <td><a href="index.php?id_page=46?pseudo=<?php echo $pseudo; ?>">Modifier</a></td>
    <td><a href="index.php?id_page=47?supprimer=<?php echo $id; ?>">Supprimer</a></td>
    et voici ma page supprimer.php insérée dans le contenu de la page 47 en bdd:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $id=$_GET['id'];
    $id="DELETE FROM membre WHERE id='$id'";
    mysql_query($id) or die(mysql_error());?>
    <strong>Membre supprimé !</strong>
    Et l'erreur lorsque je teste la suppression d'un membre :
    " Notice: Undefined index: id in C:\admin\supprimer.php on line 2
    Membre supprimé !
    "

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Par défaut
    Tu veux dire que ce code
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $id=$_GET['id'];
    $id="DELETE FROM membre WHERE id='$id'";
    mysql_query($id) or die(mysql_error());?>
    <strong>Membre supprimé !</strong

    est inséré dans le contenu de ta base de donnée ?

    A priori, $_GET['id'] n'existe pas selon le message d'erreur.

    Ce que je te proposais plus haut c'est que si tu as suivi le tuto, tu devrais avoir ça dans ta page index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div id="contenu">
    <?php
    // Affiche le contenu de la page en cours
    echo $_ENV['contenu'];
    ?>
    et moi je te proposais de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <div id="contenu">
    <?php
    include_once 'supprimer.php';
     
    if($_ENV['id_page'] == 47) {
    supprime_membre($_GET['id']);
    }
    else {
    // Affiche le contenu de la page en cours
    echo $_ENV['contenu'];
    }
    ?>
    Et dans 'supprimer.php' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    supprime_membre($id){
    $strSQL="DELETE FROM membre WHERE id=".$id;
    mysql_query($strSQL) or die(mysql_error());
    echo "<strong>Membre supprimé !</strong>";
    }
    là ça devrait marcher. A adapter bien sûr.

    Et comme dis, ça risque de faire une sacrée page index.php à la longue...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    en adaptant ton code ma page index.php devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="contenu"><?php
    			if($_ENV['id_page'] == 47) {
    			supprime_membre($_GET['id']);
    			}
    			else {
    			// Affiche le contenu de la page en cours
    			echo include($_ENV['contenu']);
    			}?>
    Dans ma bdd j'insere le chemin dans le champs "contenu" : admin/supprimer.php

    je garde ton code pour ma page supprimer.php, et voici l'erreur retournée :
    Fatal error: Call to undefined function supprime_membre() in C:\index.php on line 71

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Par défaut
    tu as du oublier

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once 'supprimer.php';

    dans ton index.php (à savoir que dans ce cas précis, le fichier supprimer.php doit se trouver dans le même répertoire que ton index.php).

    Ou bien tu n'as pas la fonction 'supprime_membre()' dans ton fichier supprimer.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    supprime_membre($id){
    $strSQL="DELETE FROM membre WHERE id=".$id;
    mysql_query($strSQL) or die(mysql_error());
    echo "<strong>Membre supprimé !</strong>";
    }

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Citation Envoyé par Istrella
    tu as du oublier
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once 'supprimer.php';
    Je ne l'ai pas oublié. " Dans ma bdd j'insere le chemin dans le champs "contenu" : admin/supprimer.php "
    J'ai essayé "include_once 'supprimer.php';" en enlevant le chemin dans "contenu", mais le résultat est le meme, la meme erreur.

    Citation Envoyé par Istrella
    Ou bien tu n'as pas la fonction 'supprime_membre()' dans ton fichier supprimer.php
    "je garde ton code pour ma page supprimer.php" => le fichier supprimer.php contient bien la fonction

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2007, 11h38
  2. [Conception] comment créer une page pour modifier un Titre de site
    Par mecmec dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/11/2006, 01h39
  3. Comment créer un site dynamiquement modifiable par le client ?
    Par freija dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 03/07/2006, 18h24

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