Php récupération des données

Bonjour,
J'expose la situation, sur mon site je veux faire un formulaire, où les gens pourrons mettre des données mais le problème c'est que je n'arrive pas à les afficher pour qu'il puisse les remodifier. Un peu comme un blog. Par contre les données sont bien visible dans ma BD. Ceci est mon premier probleme. J'aimerais aussi qu'il puisse insérer des photos mais je n'arrive pas a trouver le code. Merci
Configuration: Windows XP
Firefox 2.0.0.11

32 réponses

Résumé de la discussion

La discussion porte sur la mise en place d'un formulaire web permettant d'enregistrer des données dans une base et de les afficher puis de les modifier, ainsi que l'ajout éventuel de photos. Plusieurs intervenants recommandent d'utiliser des sessions plutôt que GET pour l'identification et d'éviter les cookies non sécurisés, afin de limiter les risques lors de l'affichage et modification des données. Les échanges présentent aussi des propositions de code, notamment la récupération des données via des requêtes protégées (mysql_real_escape_string) et le peuplement des champs du formulaire avec les valeurs extraites. En parallèle, des avertissements signalent des erreurs telles que des ressources MySQL invalides et suggèrent des structures simples (table membres avec id, login, nom) et une récupération conditionnelle via l'identifiant.

Bobot (l’IA à votre service)
  1. euh, perso l'identification par le GET, j'approuve pas mais alors, pas du tout !

    imagine : monsite.fr?id=59
    ca veut dire que je peux prendre le compte de n'importe qui en changeant le numéro de id...

    C'est clair qu'il faut au minimum des variables de session (pas si difficile que ça à utiliser...)

    Bon courage !
    1. ha ba après oui c'est sur c'est mieux mais la le problème c'est que notre cher php180 à l'air de débuter donc je vais pas le pousser dans les sessions de suite lol

      De plus php180 donne le lien de ton site pour voir un peu le tout puis te conseiller.
      1. Ben dans ce cas faut plutot utiliser les sessions ou les cookies non ?
        1. Mais non si tu veu une fois qu'un membre est inscrit et logué , t'imagine que sur la droite ta un menu "membre" avec :
          - modification du compte
          - supréssion de compte ...

          Bref sur ses liens il lui suffit de mettre l'id du compte conecter pour ensuite le récupérer sur l'autre page.

          Enfin moi j'aurais fait comme sa après sa dépend ce qu'il veu car il est flou :P
          1. ben non car la variable $_GET['id'] n'existe pas ! Son formulaire envoie les données en post !
            Donc en fait ca sera $_POST['id'] qui se créera

            Donc avec isset la page ne va pas s'afficher !
            Faut simplement modifier par :
            if (isset($_POST['id']))
            1. Enfin pour le moment je croit que la personne à juste demandé de l'aider pour afficher des valeurs dans les champs après je l'aiderais pour modifier si besoin, je vais pas tout lui faire :P

              Sinon c'est quoi le problème avec if (isset($_GET['id'])) ? car si un id est envoyer par une autre page alors on affiche les données de cette personne sinon on met les champs vide mais de toute facon la page ne sera visible que pour les membres du moins je pense ^^
              1. Son script sert juste a afficher, pas a updater donc à approfondir ^^.

                Et vu qu'on connait pas ses champs ca va être dur

                En plus ton code marchera pas :
                if (isset($_GET['id']))


                Il a un post
                1. Ca y est j'ai comprisss

                  Tu peux faire un screen de ta table membre stp ?

                  1. Re :P

                    Je t'ai complqué la vie dans mon code certainement faux d'ailleur lol voici quelque chose de mieux :

                    <?php mysql_connect("hote", "login", "pass"); // Conexion
                    mysql_select_db("bdd");

                    if (isset($_GET['id'])) // Si on est logué et que la page précédente nous envoi l'id du membres, on récupère les infos corespondantes
                    {
                    $id = $_GET['id'];
                    $retour = mysql_query("SELECT * FROM riom WHERE id='".mysql_real_escape_string($id)."' "); // R2cupération des infos plus protection de la variable "$id"
                    $login = stripslashes($donnees['login']); // On place les infos dans des variables simples
                    $pass = stripslashes($donnees['pass']);
                    $nom = stripslashes($donnees['nom']);
                    $prénom = stripslashes($donnees['prénom']);
                    $profesion = stripslashes($donnees['profesion']);
                    }
                    else // Sinon on définit les variables comme étant vide
                    {
                    $login = '';
                    $pass = '';
                    $nom = '';
                    $prénom = '';
                    $profesion = '';
                    }
                    mysql_close(); // Déconexion
                    ?>
                    <input type="text" size="30" name="login" value="<?php echo $login ; ?>" /> <!-- On affiche les variables dans les champs texte prévu :P -->
                    <input type="password" size="30" name="pass" value="<?php echo $pass ; ?>" />
                    <input type="text" size="30" name="nom" value="<?php echo $nom ; ?>" />
                    <input type="text" size="30" name="prénom" value="<?php echo $prénom ; ?>" />
                    <input type="text" size="30" name="profesion" value="<?php echo $profesion ; ?>" />

                    Je t'ai mis des commentaires donc copi le tout dans notepad++ par exemple c'est mieux avec les couleurs :P
                    1. page index -----> login + mot de passe ---> ca marche

                      si on est admin ---> formulaire pour ajouter/suprimer un client avec ses données perso ---> ca marche

                      si on est client ----> voir ses info perso ---> ca marche
                      -----> accès a sa fiche 1 ---> ca marche
                      -----> accès a sa fiche 2 ---> ca marche
                      -----> .....

                      accès a sa fiche 1 ---> formulaire pour inscrire le nom et prénom
                      de même pour les autres formulaires.

                      Les données sont bien entrées dans la BD mais lorsque le client revient sur une fiche
                      les données ne sont pas visible dans le formulaire et il ne peut donc pas les modifier.

                      J'espère que je suis plus précis?
                      1. Déja il te faut une table nommé membres par exemple.
                        Dans cette table il te faut les variables id, login, pass, nom, prénom, proffesion.
                        Lorsqu'une personne se co sur son compteil faut récupérer son id puis l'envoyer sur toutes les pages ou que celle du formulaire parlé pour se rappeler de la personne. Voir :

                        Ensuite sur ta page de formulaire tu récupère l'id du membre qui est conecté :https://openclassrooms.com/fr/courses#ss_part_4

                        $id = $_GET['id'];

                        après tu va dans ta base de données puis tu récupère les infos de la personnes par raport à son id :

                        mysql_connect("hote", "login", "pass");
                        mysql_select_db("bdd");
                        $retour = mysql_query("SELECT * FROM membres WHERE id='".mysql_real_escape_string($id)."' ");

                        Puis la tu boucle en en affichant dans ton formulaire les données que tu souhaite :

                        <input type="text" size="30" name="login" value="<?php echo $donnees['login']; ?>" />
                        <input type="password" size="30" name="pass" value="<?php echo $donnees['pass']; ?>" />
                        <input type="text" size="30" name="nom" value="<?php echo $donnees['nom']; ?>" />
                        <input type="text" size="30" name="prénom" value="<?php echo $donnees['prénom']; ?>" />
                        <input type="text" size="30" name="profesion" value="<?php echo $donnees['profesion']; ?>" />

                        Et voici ce que je te propose en final (à améliorer suivant tes besoin :P) :

                        <?php mysql_connect("hote", "login", "pass");
                        mysql_select_db("bdd");
                        $retour = mysql_query("SELECT * FROM riom WHERE jour='".mysql_real_escape_string($page)."' ORDER BY heure");
                        $id = '0';

                        if (isset($_GET['id']))
                        {
                        $id = $_GET['id'];
                        while ($donnees = mysql_fetch_array($retour))
                        { ?>

                        <input type="text" size="30" name="login" value="<?php echo $donnees['login']; ?>" />
                        <input type="password" size="30" name="pass" value="<?php echo $donnees['pass']; ?>" />
                        <input type="text" size="30" name="nom" value="<?php echo $donnees['nom']; ?>" />
                        <input type="text" size="30" name="prénom" value="<?php echo $donnees['prénom']; ?>" />
                        <input type="text" size="30" name="profesion" value="<?php echo $donnees['profesion']; ?>" />
                        <?php }
                        mysql_close();
                        } ?>
                        1. Alors, là je perds complétement le fil avec tes histoire de plusieurs formulaires, plusieurs bases de données...

                          C'est TRES flou !
                          1. alors pour tous expliquer j'ai un premier login avec comptes clients et un admin (avec l'admin je peux rajouter des comptes clients).
                            Les comptes clients une fois loger peuvent voir les données rentrées au préalables par l'admin ou peuvent rentrer dans un ou plusieurs formulaire le nom et prénom (un peut comme un annuaire de contactes).
                            Et je voudrais que selon le formulaire choisit il retrouvent les données qu'il avait déjà mises ainsi ils pourront remodifier ces données.
                            Pour cela j'ai deux base de données 1 pour ajouter des comptes clients avec leur données perso et une pour les clients(membres) ou sont les infos qu'ils rentres.
                            1. euh, non, pas du tout !!

                              mysql_connect("localhost", "root", ""); // Connexion à MySQL 
                              mysql_select_db("dbprotect"); // Sélection de la base coursphp 
                              
                              $prenom=$_POST["prenom"];//ou GET, si t'as fait un GET
                              $nom=$_POST["nom"];//ou GET, si t'as fait un GET
                              
                              mysql_query("INSERT INTO membres (nom, prenom) VALUES ('$nom', '$prenom');"); 
                              
                              $id = mysql_real_escape_string($_GET['id']); // Id envoyé par une autre page 
                              $reponse = mysql_query("SELECT * FROM chambre WHERE nom='$id'") or die('Erreur SQL '.mysql_error()); 
                              


                              J'espere que tu a aussi mis un bouton 'submit' et que tu t'es pas gourré sur "l'action" de ton 'form'.

                              Sinon, je te renvoie aux tutos...
                              • 1
                              • 2