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 :

[PHP] Envoi de données de formulaire dans une bdd


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Par défaut [PHP] Envoi de données de formulaire dans une bdd
    bonjour, je souhaiterais envoyer les données de mon formulaire vers ma bdd sur phpmyadmin .

    Code :

    Code 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
     
     
    <?php
    $base = mysql_connect ('localhost', 'root', 'root');
    mysql_select_db ('netflix', $base) ;
    ?>
     
    <?php
     
            $error = 0;
            foreach($_POST as $k => $v) {
                    if(empty($_POST[$k])) $error = 1;
            }
     
            if($error == 0) {
                    echo 'c bon';
            } else {
                    echo 'c pas bon';
            }
    $sql = "INSERT INTO series (nomserie, Saison, Episode) VALUES (NULL, '".$_POST['nomserie']."', '".$_POST['Saison']."', '".$_POST['Episode']."')";
     
    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    // on ferme la connexion à la base
    mysql_close();
     
        ?>



    mais je n'ai aucune donnée dans ma bdd :c



    Code html si besoin :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    <form action = "traitement.php"  method="post">
    	<br /> 
    	<b>
    	       <style color ="red" ><center><p>Informations des S&eacute;ries</p></center></style>
    	<fieldset id="section-1">
     
    	<p><label>Nom de la S&eacute;rie</label> : <input type="text" name="nomserie" id="nomserie" placeholder="Ex : Casa de Papel"autofocus required /></p>
    	<p><label>Saison</label> : <input type="number" name="Saison" id="Saison" placeholder="Ex : 2" required /></p>
    	<p><label>Episode</label> : <input type="number" name="Episode" id="Episode" placeholder="Ex : 12" required /></p>
        <input type="submit" value="Envoyer" />
     
    	<a href="https://www.netflix.com/browse" target="_blank">Le site de Netflix</a>
    	</fieldset>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 572
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 572
    Par défaut
    La première étape pour résoudre ce genre de problème est d'afficher le contenu des variables utilisées. Si elles ne contiennent pas l'information attendue, il faut ensuite remonter à l'endroit où la variable a été modifiée et continuer l'affichage de la même façon.

    En PHP, vous pouvez essayer cette fonction qui affichera dans le code HTML, n'importe quelle variable composée d'objets, tableaux, code XML ou valeurs TRUE, FALSE ou NULL,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function aff($var) {
    	echo "<pre>";
    	echo htmlspecialchars(var_export($var, TRUE));
    	echo "</pre>";
    }

  3. #3
    Membre très actif Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Par défaut
    D'accord.

    j'ai changer le code php :

    Code 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
    33
    34
    35
     
     
     
    <?php
    // connexion à la bdd
    $objetPDO = new PDO('mysql:host=localhost;dbname=netflix','root','root'); 
     
     
    $pdoStat = $objetPDO->prepare('INSERT INTO series VALUES (NULL,:nomserie, :Saison, :Episode)');
     
    $pdoStat->bindValue(':nomserie', $_GET['nomserie']);
    $pdoStat->bindValue(':Saison', $_GET['Saison']);
    $pdoStat->bindValue(':Episode', $_GET['Episode']);
     
    //execution de la requete 
    $insertOK = $pdoStat->execute();
     
    if($insertOK){
     
    	$message = ' Cela a fonctionné avec succès !';
    }
    else{
     
    	$message = 'Echec de l envoie du formulaire';
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>S&eacute;ries Netflix</title>
    	<link rel="stylesheet" href="style.css">
    </head>
    <body>
    <p><?php echo $message; ?></p>
    </body>

    et cela ne fonctionne pas : Nom : hihi.PNG
Affichages : 1722
Taille : 10,0 Ko alors que l'on voit bien les données dans l'url

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Salut,
    Dans ton premier message, tu as utilisé la méthode post pour le form
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action = "traitement.php"  method="post">
    alors que dans le fichier d’insertion, tu utilises $_GET pour récupérer les données ?? Eh ben non, il faut utiliser $_POST.

    Essaies d'ajouter PDO::PARAM_INT pour les entiers et PDO::PARAM_STR pour les chaines de caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pdoStat->bindValue(':nomserie', $_POST['nomserie'],PDO::PARAM_INT);
    $pdoStat->bindValue(':Saison', $_POST['Saison'],PDO::PARAM_STR);
    $pdoStat->bindValue(':Episode', $_POST['Episode'],PDO::PARAM_STR);//PDO::PARAM_STR si $_POST['Episode'] est une chaîne de caractère, sinon tu met PDO::PARAM_INT

  5. #5
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour le debug, tu peux ajouter un affichage des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else{
        $message = 'Echec de l envoie du formulaire';
        var_dump($pdoStat->errorInfo());
    }
    PDOStatement::errorInfo()

    Citation Envoyé par Toufik83 Voir le message
    Essaies d'ajouter PDO::PARAM_INT pour les entiers et PDO::PARAM_STR pour les chaines de caractères.
    A choisir par rapport au type de la colonne en base, même si en général, PDO se débrouille très bien tout seul avec la valeur par défaut.

    Il sera judicieux d'ajouter une validation du formulaire avant de faire l'insertion en base, notamment des champs obligatoires (en l'état, tu peux insérer "" dans le nom de la série, ça m'étonnerait que ce soit une bonne idée ) et peut-être une vérification par rapport à ce qui se trouve déjà en base (tu n'as peut-être pas envie d'avoir 8 fois la même entrée )
    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]

  6. #6
    Membre très actif Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    Salut,
    Dans ton premier message, tu as utilisé la méthode post pour le form
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action = "traitement.php"  method="post">
    alors que dans le fichier d’insertion, tu utilises $_GET pour récupérer les données ?? Eh ben non, il faut utiliser $_POST.
    Non j'ai changé ma méthode, j'utilise get c'est plus simple , pas besoin que ce soit sécuriséje ne mettrais pas le site en ligne.

    Il sera judicieux d'ajouter une validation du formulaire avant de faire l'insertion en base, notamment des champs obligatoires (en l'état, tu peux insérer "" dans le nom de la série, ça m'étonnerait que ce soit une bonne idée ) et peut-être une vérification par rapport à ce qui se trouve déjà en base (tu n'as peut-être pas envie d'avoir 8 fois la même entrée )
    Le site ne sera pas en ligne , donc je vais pas me tromper hihi

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par theocbr Voir le message
    ...pas besoin que ce soit sécurisé...
    C'est sûr, tu n'es pas à une approximation près... :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    	       <style color ="red" ><center><p>Informations des S&eacute;ries</p></center></style>

    Cela dit, ne t'étonne pas alors si tes codes ne donnent pas toujours le résultat voulu.
    Dernière modification par Invité ; 13/11/2019 à 21h05.

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

Discussions similaires

  1. [MySQL] Insertion des données du formulaire dans une BDD
    Par OG__fenomeno dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/05/2013, 11h52
  2. Récupération des données de formulaire dans une page JSP
    Par fauthie dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/09/2009, 14h02
  3. [PHP 5.2] Envoi de données en XML dans une socket
    Par saturnino dans le forum Langage
    Réponses: 2
    Dernier message: 10/09/2009, 10h03
  4. [MySQL] envoi d'un formulaire dans une BDD
    Par angelusflm dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/02/2009, 10h45
  5. Récupération de données de formulaire dans une fenetre fille
    Par xave dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/01/2008, 16h22

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