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 :

Stocker les infos dans une base de données via un formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut Stocker les infos dans une base de données via un formulaire
    Bonjour à tous,
    voilà maintenant près de 15 ans que je n'ai pas ouvert Dreamweaver, Easy PHP et autre programme.

    Je vais aller à l'essentiel, je me sens complètement largué !

    Je travaille en local via MAMP que je viens de découvrir. J'ai créé une Base de donnée "TEST", avec une table "INFOS_TLB" comportant une colonne "PRENOM" et une colonne "NOM"

    Mon but, est simplement, via une page (form.php), stocker les infos d'un formulaire dans la base de donnée... chose qui me semblait plutôt facile il y a quelques années, la je coince complètement... ci joint le code de la page form.php :

    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
    <html>
        <head><title>Formulaire de saisie </title></head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
        <body>
            <h1>Inscrivez vous !!!</h1>
            <h2>Entrez les données demandées :</h2>
                <form name="inscription" method="post" action="form.php" </br>
                <center>
               Nom: <input type="text" name="prenom"/> </br>
                </br>
                Prenom : <input type="text" name="nom"/> </br>
                </br>
                <input type="submit" name="valider" value="Valider">
                </form>
                </center>
        </body>
    </html>
     
    <?php
    /* Connexion à une base */
    $dsn = 'mysql:dbname=test;host=localhost';
    $user = 'root';
    $password = 'root';
     
    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connexion échouée : ' . $e->getMessage();
    }
    if (isset ($_POST['valider'])){
                    $prenom=$_POST['prenom'];
                    $nom=$_POST['nom'];
                    $dbh->exec("INSERT INTO infos_tbl(prenom,nom) VALUES($prenom','$nom')");
                }
    ?>
    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
    Il te manque un '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dbh->exec("INSERT INTO infos_tbl(prenom,nom) VALUES('$prenom','$nom')");
    Mais ce n'est pas sécurisé, il faut faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset ($_POST['valider'])){
                    $sth = $dbh->prepare("INSERT INTO infos_tbl (prenom,nom) VALUES(?, ?)");
                    $sth->execute(array($_POST['prenom'], $_POST['nom']));
                }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Merci, c'est parfait !

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Je suis à nouveau bloqué.

    Je souhaite désormais, pouvoir Editer les données.

    J'ai donc pour cela créer :
    _ une page listing2.php dans laquelle j'affiche les données présentes sur la table :

    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
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>test sans titre</title>
    </head>
     
    <body><?php
    try
    {
    	// On se connecte à MySQL
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    	// En cas d'erreur, on affiche un message et on arrête tout
            die('Erreur : '.$e->getMessage());
    }
     
    // Si tout va bien, on peut continuer
     
    // On récupère tout le contenu de la table
    $reponse = $bdd->query('SELECT * FROM infos_tbl');
     
    // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
    {
    ?>
    <p> <?php echo $donnees['nom']; ?><br /><?php echo $donnees['prenom']; ?><a href="modification2.php?idPersonne=<?php echo $donnees[id]; ?>"><?php echo $donnees[id]?></a>
       </p>
    <?php
    }
     
    $reponse->closeCursor(); // Termine le traitement de la requête
     
    ?>
    </body>
    </html>
    Les données PRENOM NOM et ID s'affichent correctement, et j'ai créé un lien sur l'ID afin de pouvoir modifier chaque entrée. L'ID n°1 renvoie vers : http://localhost:8888/modification2.php?idPersonne=1

    Jusque là tout va bien.
    En revanche, dès que la page modification2.php?idPersonne=1 apparaît, toutes les données de ma table apparaissent avec la possibilité de modifier chaque entrée. Voici le 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <html>
      <head>
        <title>modification de données en PHP :: partie2</title>
      </head>
    	<?php
    try
    {
    	// On se connecte à MySQL
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    	// En cas d'erreur, on affiche un message et on arrête tout
            die('Erreur : '.$e->getMessage());
    }
     
    // Si tout va bien, on peut continuer
     
    	 //récupération de la variable d'URL,
      //qui va nous permettre de savoir quel enregistrement modifier
      $id  = $_GET["idPersonne"] ;
     
    // On récupère tout le contenu de la table 
    $reponse = $bdd->query('SELECT * FROM infos_tbl');
     
    // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
    {
    ?>
    <body>  <form name="insertion" action="modification3.php" method="POST">
      <table border="0" align="center" cellspacing="2" cellpadding="2">
        <tr align="center">
          <td>nom</td>
          <td><input type="text" name="nom" value="<?php echo $donnees['prenom']; ?>"></td>
        </tr>
        <tr align="center">
          <td>prenom</td>
          <td><input type="text" name="prenom" value="<?php echo $donnees['nom']; ?>"></td>
        </tr>
        ID DE LA PAGE : <?php echo($id) ;?>
        <tr align="center">
          <td colspan="2"><input type="submit" value="modifier"></td>
        </tr>
      </table>
    </form><?php
    }
     
    $reponse->closeCursor(); // Termine le traitement de la requête
     
    ?>
    Je pense que la requête ci dessous devrait comporter $id, mais dès que je la renseigne j'ai une erreur sur la page localhost:500

    $reponse = $bdd->query('SELECT * FROM infos_tbl WHERE id=$id');

    Par ailleurs, même lorsque je tente de modifier les données de la table, rien ne se passe, ci dessous le code de modification3.php

    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
    <html>
        <head><title>Formulaire de saisie </title></head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
        <body>
        <h1>Parfait !</h1>
            <p><a href="listing2.php">voir le listing</a></p>
            <p><a href="test.php">test</a></p>
            <p><a href="form3.php">retour saisie</a></p>
            <p><a href="modification2.php">Modification</a></p>
        </body><?php
    /* Connexion à une base */
    $dsn = 'mysql:dbname=test;host=localhost';
    $user = 'root';
    $password = 'root';
     
    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connexion échouée : ' . $e->getMessage();
    }
    //récupération des valeurs des champs:
      //nom:
      $prenom     = $_POST["prenom"] ;
      //prenom:
      $nom = $_POST["nom"] ;
     
    	if (isset ($_POST['valider'])){
                    $sth = $dbh->prepare("UPDATE infos_tbl (prenom,nom) VALUES(?, ?)");
                    $sth->execute(array($_POST['prenom'], $_POST['nom']));
                }
    ?>
    </html>
    Par ailleurs, à l'époque je me servais d'un site, j'ai cependant essayé de reproduire quelques tutos, mais cela ne fonctionne pas, est-ce du au fait que le Language a évolué ? ou non compatible via MAMP ? D'avance merci

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $id  = (int)$_GET['idPersonne'] ;
    $reponse = $bdd->query('SELECT * FROM infos_tbl WHERE id=' . $id);
    petit conseil : met ton code de connexion à la base de données dans un fichier séparé que tu inclus dans les pages qui en ont besoin, ça évite de répéter le code et surtout les paramètres partout.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Merci, la page modification2.php est opérationnelle. En revanche, dès lors que je modifie le prénom et le nom, rien ne se modifie sur la table. Pour rappel, le code de modification3.php
    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
    <html>
        <head><title>Formulaire de saisie </title></head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
        <body>
        <h1>Parfait !</h1>
            <p><a href="listing2.php">voir le listing</a></p>
            <p><a href="test.php">test</a></p>
            <p><a href="form3.php">retour saisie</a></p>
            <p><a href="modification2.php">Modification</a></p>
        </body><?php
    /* Connexion à une base */
    $dsn = 'mysql:dbname=test;host=localhost';
    $user = 'root';
    $password = 'root';
     
    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connexion échouée : ' . $e->getMessage();
    }
    //récupération des valeurs des champs:
      //nom:
      $prenom     = $_POST["prenom"] ;
      //prenom:
      $nom = $_POST["nom"] ;
     
    	if (isset ($_POST['valider'])){
                    $sth = $dbh->prepare("UPDATE infos_tbl (prenom,nom) VALUES(?, ?)");
                    $sth->execute(array($_POST['prenom'], $_POST['nom']));
                }
    ?>
    </html>
    J'ai simplement remplacé INSERT TO par UPDATE mais il manque peut être quelque chose par rapport à l'ID qu'il faut modifier ? Merci du conseil pour la connexion à la base de donnée, je vais créer le fichier

Discussions similaires

  1. [MySQL] Insérer des infos dans ma base de données via un formulaire
    Par mOscar007 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/12/2013, 18h32
  2. Réponses: 1
    Dernier message: 04/01/2012, 18h08
  3. [MySQL] comment stocker puis recuper les images dans une base de donnée
    Par essono dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2006, 23h07
  4. Réponses: 1
    Dernier message: 22/11/2006, 22h49
  5. Stocker les sessions dans une base de données
    Par mic79 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2006, 21h57

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