Partage
  • Partager sur Facebook
  • Partager sur Twitter

insérer une variable php dans une requête mysqli

Sujet résolu
    19 septembre 2018 à 11:40:14

    Salut à tous, 

    Je me demande s'il est possible de faire cela.

    <?php
        
    $create_table = $_POST['$name_table_input'];
        
    $connexion = mysqli_connect('localhost', 'root', 'root');
    
        mysqli_select_db($connexion, 'TPON');
        
    $command = "CREATE TABLE IF NOT EXISTS ".$create_table.""; 
        
        mysqli_query($connexion, $command);
        
    ?>


    Si quelqu'un en sait un peu plus je suis preneur car j'ai pas trop trouver ces cas là sur internet.

    Merci

    • Partager sur Facebook
    • Partager sur Twitter

    Désolé, mais je ne vois pas mes erreurs

    www.community-technologie.fr 

      19 septembre 2018 à 12:45:11

      Bonjour,

      Il est possible d'exécuter des commandes CREATE TABLE, par contre ici tu as deux problèmes.

      D'abord la syntaxe d'une commande CREATE TABLE doit présenter la structure de la table à créer :

      CREATE TABLE exemple (
          colonne1 type,
          colonne2 type,
          etc.
      );

      Ensuite, même si tu corriges le premier point tu t'exposes à des injections SQL graves ... Il te faut avant tout contrôler la valeur saisie par le formulaire et t'assurer de sa sécurité avant de l'utiliser dans ta requête ...

      Enfin, vouloir créer une table "à la volée" est souvent signe d'un problème de conception ... L'application ne doit pas modifier le modèle de la base de données ... Si il manque une table, c'est qu'il y a un problème ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        19 septembre 2018 à 12:58:33

        Je suis tout à fait d'accord avec toi pour la sécurité et la structure, mon exemple était juste pour l'insertion de la variable dans EXISTS ".$create_table."";

        De ce que tu me dis, il est plus judicieux de faire une table, avec 10 20 30 colonnes, quitte à ce qu'il y est des colones avec des NULL dedans, plutôt que de faire des tables et des tables avec juste ce qu'il faut dedans ? 

        • Partager sur Facebook
        • Partager sur Twitter

        Désolé, mais je ne vois pas mes erreurs

        www.community-technologie.fr 

          19 septembre 2018 à 13:45:35

          Reader a écrit:

          De ce que tu me dis, il est plus judicieux de faire une table, avec 10 20 30 colonnes, quitte à ce qu'il y est des colones avec des NULL dedans, plutôt que de faire des tables et des tables avec juste ce qu'il faut dedans ? 

          Ce n'est pas ce que je dis ... Cela va dépendre de ton contexte ... Peux-tu expliquer plus précisément ton projet, les fonctionnalités, le type de données, etc.

          Par ailleurs, la première chose à faire c'est de la conception, un MCD. Regarde le document "Conception BDD" dans ma signature, et essaye d'utiliser un petit logiciel de modélisation genre JMerise, cela t'aidera à bien formaliser les choses et te facilitera grandement la création de ta base ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            19 septembre 2018 à 15:36:55

            Si tu veux j'essaye de construire un page ou des joueurs peuvent créées des championnat de voiture sur console afin de developper l'e-sport, un peu délaisser dans cette catégorie par les éditeurs.

            En cliquant sur un lien j'aimerais amener l'utilisateur sur une page avec des inputs où il va renseigner :

            une petite image pour la vignette, une grande pour l'image de fond, le règlement de son championnat ( TEXT ), le calendrier des épreuves (DATE), les restrictions (TEXT). 

            Et en même temps, j'aimerais qu'une table avec le nom du championnat se créée pour pouvoir recevoir les inscriptions et pouvoir classer les futurs pilotes sans se mélanger avec les autres championnat qui seront déjà créés

            Pour la modélisation j'utilise https://www.draw.io moi

            Merci

            • Partager sur Facebook
            • Partager sur Twitter

            Désolé, mais je ne vois pas mes erreurs

            www.community-technologie.fr 

              19 septembre 2018 à 16:43:38

              Reader a écrit:

              j'aimerais qu'une table avec le nom du championnat se créée pour pouvoir recevoir les inscriptions et pouvoir classer les futurs pilotes sans se mélanger avec les autres championnat qui seront déjà créés

              Ce n'est pas comme cela qu'il faut voir les choses ... En tout cas si tu veux modéliser en respectant les règles de normalisation et les bonnes pratiques de bases de données relationnelles ...

              Reader a écrit:

              Pour la modélisation j'utilise https://www.draw.io 

              Ce n'est pas un logiciel qui va te permettre de concevoir proprement une base de données ... Personnellement je te conseille JMerise qui te permettra de générer ton code SQL directement une fois ton modèle conceptuel validé ... magique :p

              Pour ton cas, un début de MCD serait :

              Ce que JMerise te transforme en MLD directement :

              Et te génère le SQL :

              #------------------------------------------------------------
              # Table: joueur
              #------------------------------------------------------------
              
              CREATE TABLE joueur(
                      id_joueur Int  Auto_increment  NOT NULL ,
                      email     Varchar (100) NOT NULL ,
                      pseudo    Varchar (50) NOT NULL
              	,CONSTRAINT joueur_PK PRIMARY KEY (id_joueur)
              )ENGINE=InnoDB;
              
              
              #------------------------------------------------------------
              # Table: championnat
              #------------------------------------------------------------
              
              CREATE TABLE championnat(
                      id_championnat Int  Auto_increment  NOT NULL ,
                      date_creation  Datetime NOT NULL ,
                      titre          Varchar (50) NOT NULL ,
                      description    Text NOT NULL ,
                      id_joueur      Int NOT NULL
              	,CONSTRAINT championnat_PK PRIMARY KEY (id_championnat)
              
              	,CONSTRAINT championnat_joueur_FK FOREIGN KEY (id_joueur) REFERENCES joueur(id_joueur)
              )ENGINE=InnoDB;
              
              
              #------------------------------------------------------------
              # Table: epreuve
              #------------------------------------------------------------
              
              CREATE TABLE epreuve(
                      id_epreuve     Int  Auto_increment  NOT NULL ,
                      titre          Varchar (50) NOT NULL ,
                      date_prevue    Datetime NOT NULL ,
                      description    Text NOT NULL ,
                      id_championnat Int NOT NULL
              	,CONSTRAINT epreuve_PK PRIMARY KEY (id_epreuve)
              
              	,CONSTRAINT epreuve_championnat_FK FOREIGN KEY (id_championnat) REFERENCES championnat(id_championnat)
              )ENGINE=InnoDB;
              
              
              #------------------------------------------------------------
              # Table: participe
              #------------------------------------------------------------
              
              CREATE TABLE participe(
                      id_epreuve Int NOT NULL ,
                      id_joueur  Int NOT NULL ,
                      score      Numeric NOT NULL
              	,CONSTRAINT participe_PK PRIMARY KEY (id_epreuve,id_joueur)
              
              	,CONSTRAINT participe_epreuve_FK FOREIGN KEY (id_epreuve) REFERENCES epreuve(id_epreuve)
              	,CONSTRAINT participe_joueur0_FK FOREIGN KEY (id_joueur) REFERENCES joueur(id_joueur)
              )ENGINE=InnoDB;

              MAGIQUE !!!

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                19 septembre 2018 à 16:49:42

                Effectivement j'avais pas vu ça comme ça :ange: Je vais me pencher la dessus et essayer de comprendre les schémas envoyer.

                Je reviens surement vers toi ^^ Merci

                • Partager sur Facebook
                • Partager sur Twitter

                Désolé, mais je ne vois pas mes erreurs

                www.community-technologie.fr 

                insérer une variable php dans une requête mysqli

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown