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

Requêtes MySQL Discussion :

insertion sans savoir les nom de colonnes et leurs nombre


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut insertion sans savoir les nom de colonnes et leurs nombre
    bonjour tout le monde!
    j'ai une fonction de récupération de nombre de colonnes et une autre pour les noms de champs mai j'arrive pas a faire l'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql1 = "INSERT INTO utilisation_individuelle($nomsdeschamps)//ici j'ai trouver pas quoi metrre
     
    VALUES 
    (";
    for($i=0;$i<=($nombredechamps-2);$i++)
    {
    $sql1.= "'$reponse_utilisateur[$i]',";
    }
    $sql1.= "'$reponse_utilisateur[$nombredechamps2]',";
    les 2 fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function recup_nbchamps($bdd,$table)
      {
     
        //récupère tous les champs de la table $table dans la base de données $bdd.
        $champs = mysql_list_fields($bdd,$table);
     
        // Enumère le nombre de champs de la table.
        $nb_champs = mysql_num_fields($champs)or die (mysql_error());
     
        return $nb_champs-1;//je met -1 pour ne pas prendre le premier colonne id:clé primaire auto_incrémente  
     
      }
    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
     
    function recup_noms_champs($bdd,$table)
      {
     
        //récupère tous les champs de la table $table dans la base de données $bdd.
        $champs = mysql_list_fields($bdd,$table);
     
        // Enumère le nombre de champs de la table.
        $nb_champs = mysql_num_fields($champs)or die (mysql_error());
     
        // rempli le tableau temporaire des noms de champs.
        for ($i = 1; $i < $nb_champs; $i++)
        {
          $tableau_noms_temp[$i] = mysql_field_name($champs, $i);
        }
     
        $tableau_noms = array();
     
        for ($i = 1; $i < $nb_champs; $i++)//mem chose je commence de 1 pas par 0
        {
          array_push($tableau_noms,$tableau_noms_temp[$i]);
        }
        return $tableau_noms;
     
      }
    comment faire pour que l'insertion soit dans ses colones
    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Par défaut
    Il est possible d'appeler la commande INSERT INTO de deux manières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table_name (column1, column2, column3,...)
    VALUES (value1, value2, value3,...)
    Ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table_name
    VALUES (value1, value2, value3,...)
    Je pense que cette dernière forme est plus adapté car tu on n'a même pas besoin de spécifier les noms des colonnes.
    Pour le cas ou column1 est par exemple est un AUTO INCREMENT on met la valeur value1 a NULL

    il y'a aussi la fonction implode qui permet de transformer un tableau en chaine de caractères avec le séparateur voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste_reponses = implode(",", $reponse_utilisateur);
    par exemple si $reponse_utilisateur = array('lastname', 'email', 'phone');
    alors $liste_reponses = 'lastname,email,phone';

    Si on voudrait que chaque élément soit entouré de guillemet (colonnes chaine de caractères)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste_reponses ="'" . implode("','", $reponse_utilisateur) . "'";
    et la requête sera ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1="INSERT INTO table_name VALUES ($liste_reponses)";
    et dans le cas ou le premier colonne est un AUTOINCREMENT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1="INSERT INTO table_name VALUES (NULL,$liste_reponses)";

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    On peut savoir pourquoi tu veux faire une telle chose ?

    Vouloir insérer dans une table sans la connaître c'est un peu vouloir traverser l'autoroute les yeux bandés !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut
    bonjour!
    je veux faire l'insertion de cette manière car ma table est dynamique le nombre de colonnes n'est pas stable a tout moment je peu modifier les noms de champs et leurs nombres.
    merci Fab256 je vais essayer
    a++

Discussions similaires

  1. [JTable] les noms des colonnes de s'affichent pas
    Par macben dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h03
  2. Query SQL sans connaitre les noms de colonnes
    Par lem01 dans le forum JDBC
    Réponses: 9
    Dernier message: 12/07/2007, 15h55
  3. [WD10] Afficher les noms des colonnes
    Par devalender dans le forum WinDev
    Réponses: 4
    Dernier message: 24/02/2006, 14h38
  4. Changer les noms de colonnes dans un formulaire
    Par cakeby dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2006, 21h32
  5. Réponses: 6
    Dernier message: 28/09/2005, 14h15

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