[php]

Résolu
Bonjour,
j'aimerais creer une table dans une bd mysql avec php.
je sais creer cela classiquement mais cette fois ci, je veux creer la table
avec des variables.
c'est à dire le nom du champ est une variable et meme le type,et toutes ses caractéristique.
merci d'avance
Configuration: Windows Vista
Opera 9.62

4 réponses

  1. Bonsoir

    Une requête mysql est une chaîne de caractères comme une autre. Il n'y a pas plus de problème à remplacer `ma table`par une variable ou remplacer MEDIUMINT UNSIGNED not null AUTO_INCREMENT par une variable, c'est exactement la même chose.
    Attention de ne pas oublier de mettre les noms de tables et de champs entre `` (accents graves, pas apostrophes) sinon tu auras des problèmes avec les noms de table avec un espace dans le nom comme `ma table`.
    Attention aussi à ne pas oublier les espaces quand on met des morceaux de requête bout à bout

    $typechamp1='MEDIUMINT UNSIGNED not null AUTO_INCREMENT';
    $typechamp2='TEXT not null ';
    (je m'arrête aux deux premiers)
    $requete = "$CREATE TABLE `$matable` (";
    $requete .= "`$champ1` $typechamp1, `$champ2` $typechamp2 , `$champ3` VARCHAR (40) not null , `$champ4` VARCHAR (40) , `$champ5` ENUM ('yes','no') DEFAULT 'no' not null , PRIMARY KEY (`$champ1`) )";
    0
    1. Et donc tu n'arrive pas à modifier les champs de variables.
      Si tu veut tu me dit ce que tu veut mettre dans tes champs et je te crée ton fichier SQL que tu auras juste à l'importer dans ta BDD. Et hop le tour est joué :)
      0
      1. Un peut plus de détails ne serait pas de refus, dit moi exactement ce que tu veut faire meme si la liste est longue ^^
        0
        1. ok merci déjà.
          je veux creer une table a partir de variable:

          un exemple de création classique:
          CREATE TABLE "nom table" (
          champ1 MEDIUMINT UNSIGNED not null AUTO_INCREMENT,
          champ2 TEXT not null ,
          champ3 VARCHAR (40) not null ,
          champ4 VARCHAR (40) ,
          champ5 ENUM ('yes','no') DEFAULT 'no' not null ,
          PRIMARY KEY (champ1)
          )

          jusque là pas de problème pour remplacer nomtable, champ1, champ2 par des variables.
          exemple: $nomtable="ma table", $champ1= " id", $champ2= "nom"...
          toujours pas de problème quand il s'agit de remplacer le nom de la table par une variable et les champs également.
          en ce moment il suffit de faire:
          CREATE TABLE $nomtable (
          $champ1 MEDIUMINT UNSIGNED not null AUTO_INCREMENT,
          $champ2 TEXT not null ,
          ¨......
          )

          le problème maitenant est de changer les types de champ par des variables

          genre remplacer ce que je vais mettre en gras par des variables:
          CREATE TABLE $matable (
          $champ1 MEDIUMINT UNSIGNED not null AUTO_INCREMENT,
          $champ2 TEXT not null ,
          $champ3 VARCHAR (40) not null ,
          $champ4 VARCHAR (40) ,
          $champ5 ENUM ('yes','no') DEFAULT 'no' not null ,
          PRIMARY KEY ($champ1)
          )
          0