Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2011, 13h42   #1
 
Femme rouna
Étudiant
Inscription : mai 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Femme rouna
Localisation : Tunisie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 26
Points : -2
Points : -2
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 :
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 :
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 :
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
ronze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2011, 01h07   #2
Membre confirmé
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 196
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Italie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 196
Points : 298
Points : 298
Il est possible d'appeler la commande INSERT INTO de deux manières :
Code :
1
2
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
Ou bien
Code :
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 :
$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 :
$liste_reponses ="'" . implode("','", $reponse_utilisateur) . "'";
et la requête sera ainsi :
Code :
$sql1="INSERT INTO table_name VALUES ($liste_reponses)";
et dans le cas ou le premier colonne est un AUTOINCREMENT
Code :
$sql1="INSERT INTO table_name VALUES (NULL,$liste_reponses)";
fab256 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2011, 08h06   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 003
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 003
Points : 18 265
Points : 18 265
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2011, 12h31   #4
 
Femme rouna
Étudiant
Inscription : mai 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Femme rouna
Localisation : Tunisie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 26
Points : -2
Points : -2
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++
ronze est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h32.


 
 
 
 
Partenaires

Hébergement Web