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

Langage PHP Discussion :

PDO Insertion de données via un formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut PDO Insertion de données via un formulaire
    Bonjour à tous

    Voila je débute en php et surtout le pdo j'ai une erreur "Cette page ne fonctionne pas Impossible de traiter cette demande via localhost à l'heure actuelle.
    HTTP ERROR 500" donc il n y a pas vraiment d'erreur précise donc je voulais savoir si vous pouvez m'aider

    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
    <?php
    session_start();  // démarrage d'une session
     
    if(isset($_SESSION['login'])) {
    $identifiant = $_SESSION['login'];
     
    try { 
       $db = include 'connect.php';
       $sql='INSERT INTO salle(listedb, salledb) VALUES (:liste, :salle)';
       //la ligne qui lance la requête préparée
       $stmt = $db->prepare($sql);
       $stmt->execute();
       //on affecte les marqueurs précis sur les filtres
     
       $list=$_POST['selectList'];
       $salle=$_POST['salle'];
     
       $stmt->execute(array($salle , $list));
       // on peut récupérer le nombre de lignes affectées 
       $nb_insert = $stmt->rowCount();
       echo $nb_insert.' insertion effectuée<br/>';
       unset($db);
    } 
    catch (Exception $e) {
       //s'il y a un problème PHP ou SQL, tout s'affichera ici
       print "Erreur ! " . $e->getMessage() . "<br/>";
    }
    }
    else {
       header('Location: identification.php');
    }
    ?>
    Je vous remercie d'avance
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  2. #2
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Bonjour,

    tu exécutes une première fois sans paramètre puis une seconde avec, essaye plutôt comme ç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
    <?php
    session_start();  // démarrage d'une session
     
    if(isset($_SESSION['login'])) {
         header('Location: identification.php');
    }
     
    $identifiant = $_SESSION['login'];
    $list          = $_POST['selectList'];
    $salle         = $_POST['salle'];
     
    try { 
        $db  = include 'connect.php';
        $sql = 'INSERT INTO salle(listedb, salledb) VALUES (:liste, :salle)';
        //la ligne qui lance la requête préparée
        $stmt = $db->prepare($sql);
        $stmt->execute(array(
    	    ':liste' => $salle , 
    	    ':salle' => $list
        ));
     
        // on peut récupérer le nombre de lignes affectées 
        $nb_insert = $stmt->rowCount();
        echo $nb_insert.' insertion effectuée<br/>';
        unset($db);
    } catch (Exception $e) {
        //s'il y a un problème PHP ou SQL, tout s'affichera ici
        echo "Erreur ! " . $e->getMessage() . "<br/>";
    }
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  3. #3
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Bonjour a toi freudd,

    J'ai testé ton code malheureusement ça ne marche toujours pas je sais toujours pas d'où peut venir le problème
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  4. #4
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Et ton fichier identification.php existe bien dans le même répertoire que ton code d'insertion de données ?
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  5. #5
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Freudd Voir le message
    Et ton fichier identification.php existe bien dans le même répertoire que ton code d'insertion de données ?
    Enfaite identification.php c'est ma page d'identification ou plutôt de connexion
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  6. #6
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Si, j'ai bien compris ton message précédent, le code que tu montres est contenu dans le fichier identification.php ça doit provoquer une redirection infinie du genre :

    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
    /* Mon login existe ? */
    if(isset($_SESSION['login'])) {
         /* Non donc je redirige dans la même page. */
         header('Location: identification.php');
    }
    /* Mon login existe ? */
    if(isset($_SESSION['login'])) {
         /* Non donc je redirige dans la même page. */
         header('Location: identification.php');
    }
    /* Mon login existe ? */
    if(isset($_SESSION['login'])) {
         /* Non donc je redirige dans la même page. */
         header('Location: identification.php');
    }
    /* Mon login existe ? */
    if(isset($_SESSION['login'])) {
         /* Non donc je redirige dans la même page. */
         header('Location: identification.php');
    }
    /*... Boucle infinie*/
    Donc sépare ton formulaire et le code de ton traitement dans des fichiers séparés.
    Si c'est pas le cas, peux-tu publier ton formulaire et ton fichier de traitement actuel ?
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  7. #7
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Enfaite j'ai une page index.php avec mon formulaire add.php avec le PDO et ma page identification.php c'est ma page de connexion avec l'identifiant et le mdp

    EDIT : Maintenant les données ne s'envoie pas ça me fait une page blanche et aucunes données et aussi il me dise que localhost ma trop dirigé et me demande de supprimer les cookies
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  8. #8
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Montre nous un peu des captures d’écrans et ton code s'il te plait (le formulaire + le traitement), car là dans l'état je pourrais pas t'aider plus.
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  9. #9
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Code index.php : 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
    <?php
    session_start();  // démarrage d'une session
     
    if(isset($_SESSION['login'])) {
    $login = $_SESSION['login'];
    }
    else {
        header('Location: identification.php');//page de connexion
    }
    ?>
     
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <form action="add.php" method="post">
                    <select id="selectList" >
                        <option value="lstA" selected="selected">A</option>
                        <option value="lstB">B</option>
                        <option value="lstC">C</option>
                        <option value="lstD">D</option>
                        <option value="lstE">E</option>
                        <option value="lstF">F</option>
                    </select>
                <input type="text" name="numSalle"/>
            </div>
        <button><span>Valider</span></button>
        </form>
    </body>
    </html>

    Code add.php : 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
     
    <?php
    session_start();  // démarrage d'une session
     
    $lettre          = $_POST['selectList'];
    $numSalle         = $_POST['numSalle'];
     
    try { 
        $bdd  = include 'connect_bdd.php';
        $sql = 'INSERT INTO salle(listedb, salledb) VALUES (:lettre, :numSalle)';
        //la ligne qui lance la requête préparée
        $stmt = $bdd->prepare($sql);
        $stmt->execute(array(
    	    ':lettre' => $lettre , 
    	    ':numSalle' => $numSalle
        ));
     
        // on peut récupérer le nombre de lignes affectées 
        $nb_insert = $stmt->rowCount();
        echo $nb_insert.' insertion effectuée<br/>';
        unset($bdd);
    } catch (Exception $e) {
        //s'il y a un problème PHP ou SQL, tout s'affichera ici
        echo "Erreur ! " . $e->getMessage() . "<br/>";
    }
    ?>

    Voila j'ai un peu modifier ton code après je pense pas avoir fait d'erreur en le modifiant
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Les derniers scripts postés ont l'air bien. Quel est le problème maintenant ?
    Le formulaire ne s'affiche pas ? Le formulaire s'affiche bien, mais l'enregistrement ne se fait pas ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Celira Voir le message
    Les derniers scripts postés ont l'air bien. Quel est le problème maintenant ?
    Le formulaire ne s'affiche pas ? Le formulaire s'affiche bien, mais l'enregistrement ne se fait pas ?
    Salut Celira

    Donc effectivement le formulaire s'affiche parfaitement mais quand j'envoie mon formulaire cela m'affiche un page blanche sans erreur et il n'y a aucun enregistrement dans la BDD
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  12. #12
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Ajout le code suivant avant ta déclaration de session dans le fichier add.php pour forcer l'affichage d'erreur (si elle existe) dans ton script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /* Afficher les erreurs à l'écran */
    ini_set('display_errors', 1);
    /* Afficher les erreurs et les avertissements. */
    error_reporting(e_all);
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  13. #13
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Merci de m'avoir consacré autant de temps ^^

    J'ai trouvé mon erreur grace a la méthode de "freuud", j'utilisé une méthode qui appelé différemment la BDD
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

  14. #14
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Au passage : Par défaut, PDO ne renvoie pas d'erreur quand il rencontre un problème, il faut donc penser à activer les exceptions PDO au niveau de la connexion. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pdo = new PDO('mysql:host=localhost;port=3306;dbname=ma_base;charset=utf8','root', '', [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                ]);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  15. #15
    Membre du Club Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Celira Voir le message
    Au passage : Par défaut, PDO ne renvoie pas d'erreur quand il rencontre un problème, il faut donc penser à activer les exceptions PDO au niveau de la connexion. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pdo = new PDO('mysql:host=localhost;port=3306;dbname=ma_base;charset=utf8','root', '', [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                ]);
    Ah donc ça sert à ça du coup et bien merci pour le renseignement ^^
    Il faut se tromper dans la vie, pour apprendre et s'améliorer.

    Etudiant BTS-SIO option SLAM

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

Discussions similaires

  1. [XL-2003] insertion de données via un Formulaire
    Par crashfire dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 17/01/2010, 20h59
  2. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18
  3. [Cookies] insertion de données automatique dans formulaire
    Par chouchouboy dans le forum Langage
    Réponses: 8
    Dernier message: 09/06/2006, 11h50
  4. [Formulaire] Alerte avant suppression d'une donnée via un formulaire
    Par leloup84 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/01/2006, 10h50
  5. insertion de donnée d'un formulaire dans un base mysql
    Par frans2111 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/10/2005, 23h34

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