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 :

Saisie de données vers une BDD


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 32
    Points
    32
    Par défaut Saisie de données vers une BDD
    Bonjour à tous, bon c'est un peu ambigue mon problème donc voici tout d'abord 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <!DOCTYPE html>
    <html>
     
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>sans titre 1</title>
    </head>
    <body>
     
    <?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    ?>
    <?php
    $serveur = "localhost";
    $base = "xxxx";
    $user = "root";
    $pass = "xxxx";
     
    /*
    $mysqli est une nouvelle instance de la classe mysqli
    prédéfinie dans php et hérite donc de ses propriétés et méthodes
    connexion à la base de données
    */
    $mysqli = new mysqli($serveur, $user, $pass, $base);
    // si la connexion se fait en UTF-8, sinon ne rien indiquer
    $mysqli->set_charset("utf8");
    /*
    utilisation de la méthode connect_error
    qui renvoie un message d'erreur si la connexion échoue
    */
    if ($mysqli->connect_error) {
        die('Erreur de connexion ('.$mysqli->connect_errno.')'. $mysqli->connect_error);
    }
    else {
        //echo 'connexion réussie : '.$mysqli->host_info .'</br>';
    }
     
    //$id = $_GET['id_test'];
    //$choix = $_GET['sous_choix'];
     
    $sql2 = "SELECT * ,\n"
        . " CASE `choix_test`\n"
        . " WHEN 'champ_texte' THEN '<input name=\"nom_reponse\" type=\"text\"/>'\n"
        . " WHEN 'zone_email' THEN '<input name=\"reponse_email\" type=\"text\"/>'\n"
        . " WHEN 'liste' THEN '<select name=\"reponse_select\" id=\"select\"><option value=sous_choix[$choix]>sous_choix[$list]</option></select>'\n"
        . " WHEN 'bouton' THEN '<input type=\"radio\" name=\"reponse_radio\" value=\"\"/>'\n"
        . " WHEN 'case' THEN '<input type=\"checkbox\" name=\"reponse_case\" value=\"\"/>'\n"
        . " WHEN 'zone_texte' THEN '<textarea rows=\"4\" cols=\"50\"></textarea>'\n"
        . " END AS 'Status'\n"
        . "FROM `test23`";
     
    $result = $mysqli->query($sql2);
     
    $list = explode(";", $data['sous_choix']);
     
    while($data = $result->fetch_array())
    {
        echo $data['nom_test']." : ";
        echo $data['Status']."<br/>";
        echo $data['sous_choix']."<br/>";
    }
     
     
     
    //$result->close(); 
    $mysqli->close();
     
    ?>
     
    <form id="idTest2" name="reponse" method="post" action="traitement_reponse23.php">
        <input type="submit" value="envoyer">
    </form>  
     
    </body>
    </html>
    Alors en fait, mon problème c'est que j'aimerai pouvoir enregistrer les données que rentre l'utilisateur grâce à mon formulaire et ensuite récupérer ses données pour afficher son formulaire rempli, dans son espace perso.

    J'ai trouvé un moyen de rentrer les données mais c'est pas propre (au niveau du code) et je suis obligé de créer n formulaires si j'ai n "WHEN" dans ma condition, donc n boutons "Envoyer".

    Voici la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    " WHEN 'champ_texte' THEN '<form id=\"idTest2\" name=\"reponse\" method=\"post\" action=\"traitement_reponse23.php\"><input name=\"nom_reponse\" type=\"text\"/><input type=\"submit\" value=\"envoyer\"></form>'\n"
    J'ai essayé de mettre mon form autour de ma requête sql (je vais me faire traiter d'hérétique ^^), et d'autres conneries.

    Bref, j'aurai vraiment besoin de votre aide pour trouver un moyen de remédier à ça svp!

    Merci d'avance.
    Et je reste à votre disposition pour des questions sur le fonctionnement de mon code.

    Cordialement,

    Jean Baptiste

  2. #2
    Membre averti
    Avatar de Dumbeldor
    Homme Profil pro
    Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance
    Inscrit en
    Novembre 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 88
    Points : 301
    Points
    301
    Par défaut
    Salut xKryckx,

    Dans du code HTML tu peux insérer des variables PHP très facilement en tapant <?php echo $taVariable; ?>
    Par exemple tu peux mettre une variable entre des " ", en tapant cette ligne.
    Donc normalement avec cette méthode tu pourras faire ce que tu souhaite.

    Si tu as des soucis, n'hésite pas à demander !
    N'oubliez pas de mettre un petit pouce vert si mon message vous a aidé !

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Votre demande me semble très basique. Il y a des cours sur Developpez !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre averti
    Avatar de Dumbeldor
    Homme Profil pro
    Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance
    Inscrit en
    Novembre 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 88
    Points : 301
    Points
    301
    Par défaut
    Comme dit CinePhil, il serait plus judicieux de suivre un cours sur Developpez pour acquérir des bases solides, sinon vous risquez de jamais comprendre et être dépendant des autres...

    Bonne chance !
    N'oubliez pas de mettre un petit pouce vert si mon message vous a aidé !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Bonjour à tous, désolé de ne pas avoir répondu plus tôt.

    Tout d'abord, je voudrais vous signaler que je prends note de tout ce qui a été dit.

    Ensuite, je n'ai pas compris ton premier message Dumbeldor. ^^

    Sinon, ce qui me dérange beaucoup, c'est le fait que cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $sql2 = "SELECT * ,\n"
        . " CASE `choix_test`\n"
        . " WHEN 'champ_texte' THEN '<input name=\"nom_reponse\" type=\"text\"/>'\n"
        . " WHEN 'zone_email' THEN '<input name=\"reponse_email\" type=\"text\"/>'\n"
        . " WHEN 'liste' THEN '<select name=\"reponse_select\" id=\"select\"><option value=sous_choix[$choix]>sous_choix[$list]</option></select>'\n"
        . " WHEN 'bouton' THEN '<input type=\"radio\" name=\"reponse_radio\" value=\"\"/>'\n"
        . " WHEN 'case' THEN '<input type=\"checkbox\" name=\"reponse_case\" value=\"\"/>'\n"
        . " WHEN 'zone_texte' THEN '<textarea rows=\"4\" cols=\"50\"></textarea>'\n"
        . " END AS 'Status'\n"
        . "FROM `test23`";
    Ben elle me gêne car ici j'ai 6 "WHEN" et donc je dois ouvrir 6 formulaires et leur attribuer 6 boutons "envoyer" (alors que je n'en veux qu'1!!!) si je veux pouvoir enregistrer mes données.
    Ici, ce n'est pas afficher mes données qui me pose problème mais bel et bien la façon d'enregistrer mes données à partir de cette requête.

    Merci.

    Cordialement.

    PS: il semble que je pose des questions qui ont l'air incompréhensible, alors svp, n'hésitez pas à me demander de clarifier ou de vous faire un schéma!

  6. #6
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Je ne vois pas pourquoi tu mets autant de boutons envoyer pour chacun de tes champs, un seul bouton pour tout ton formulaire est suffisant. Je sais pas si c'est moi qui comprend pas très bien ton code mais j'ai l'impression que tu te compliques la vie si ton but est de simplement créer un formulaire et d'envoyer les données alors reprend bien tout depuis le début en suivant un cours comme le préconise CinePhil. Parce-que traiter tes données directement dans ta requête sql avec un CASE, de un ce n'est pas très commun et personnellement je pense que le faire en PHP sera plus lisible et plus facile, ce n'est que mon avis.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Bonjour et merci de ta réponse.

    Bon, je vais expliquer comment j'en suis arrivé là.

    Je suis en train de créer un outil formulaire (le client crée son propre formulaire en donnant le nom à son premier champ et en choisissant le type de ce champ : texte, select, boutons radios...). Du coup, j'entre les différentes données et je le sauvegarde.
    Une fois sauvegardée, j'ai besoin de faire appel à ce formulaire! Pour ça j'ai besoin de la requête ci dessus car "champ_texte", "zone_email", "liste", "bouton", "case" ... sont stockées comme données et sont inutilisables telles quelles.
    Donc j'ai du recourir au CASE, pour pouvoir "dessiner" un champ de nom, un select ou encore des boutons radios!

    Et maintenant, là, mon problème c'est que je ne peux pas écrire ç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
     
     
    <form id="idTest2" name="reponse" method="post" action="traitement_reponse23.php">
    $sql2 = "SELECT * ,\n"
        . " CASE `choix_test`\n"
        . " WHEN 'champ_texte' THEN '<input name=\"nom_reponse\" type=\"text\"/>'\n"
        . " WHEN 'zone_email' THEN '<input name=\"reponse_email\" type=\"text\"/>'\n"
        . " WHEN 'liste' THEN '<select name=\"reponse_select\" id=\"select\"><option value=sous_choix[$choix]>sous_choix[$list]</option></select>'\n"
        . " WHEN 'bouton' THEN '<input type=\"radio\" name=\"reponse_radio\" value=\"\"/>'\n"
        . " WHEN 'case' THEN '<input type=\"checkbox\" name=\"reponse_case\" value=\"\"/>'\n"
        . " WHEN 'zone_texte' THEN '<textarea rows=\"4\" cols=\"50\"></textarea>'\n"
        . " END AS 'Status'\n"
        . "FROM `test23`";
        <input type="submit" value="envoyer">
    </form>
    Car, ça, ça marche pas.
    Par contre, ce qui fonctionne, c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " WHEN 'champ_texte' THEN '<form id=\"idTest2\" name=\"reponse\" method=\"post\" action=\"traitement_reponse23.php\"><input name=\"nom_reponse\" type=\"text\"/><input type=\"submit\" value=\"envoyer\"></form>'\n"
    Mais, ceci ne m'aide pas beaucoup (car 6 boutons envoyer --> 6 pour chaque WHEN)

    Bref, si vous arrivez à me dire que je peux extraire les données de la requête dans un code php, j'en serai ravi mais pour l'instant, j'ai toujours pas trouvé!

    Bon j'espère avoir éclairci les esprits.
    Merci encore.

    Et bonne soirée!

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    À cette heure là, pas envie de chercher à faire une réponse plus complète.
    Utilise Drupal ou un autre CMS évolué pour faire ce que tu veux faire !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [MySQL] Transfert des données vers une BDD
    Par johnrock dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/02/2013, 01h23
  2. import de données d'une bdd vers une autre
    Par cedill23 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/08/2009, 14h09
  3. Mettre des données d'une bdd vers JTable (via hibernate)
    Par tinwul dans le forum Composants
    Réponses: 6
    Dernier message: 03/01/2008, 23h16
  4. transferer les donnes d'une BDD vers un fichier XML?
    Par bylka dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 12/11/2007, 09h11
  5. importation des données vers une BDD Mysql
    Par moabomotal dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/12/2006, 21h03

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