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 :

Insérer des valeurs sans donner le nom de l'attribut [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut Insérer des valeurs sans donner le nom de l'attribut
    bonjour
    j'aimerai faire une requete INSERT dans la quelle je remplit une ligne mais seulement colones par colones car je connais pas les identifiants je m'explique avec un example
    normalement c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO ma_table ('nom','prenom','adresse') VALUE ('Chirac','jacques',19) WHERE id=1202");  //avec id etant clefprimaire et autonum
    ce que moi je veux c'est ne pas avoir a ecrite le nom des champs mais un compteur pour avoir quelques chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      for($i=0;i<$max;$i++)
          mysql_query("INSERT INTO ma_table (".colonne[$i+1]."') VALUE (".$data[$i].") WHERE id=1202");
    $data etant un tableau contenant mes donnees (nom prenom et age). ce que je cherche c'est comme remplacer colonnes par l'equivalent php ou sql car je ne que l'element i du tableau soit dans la colonne i+1 de la table car 1 etant reserver pour ma clef primaire qui est auto incremente.
    merci pour votre aide

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    INSERT INTO ma_table VALUES ("Dupont","René","15 rue des lilas")

  3. #3
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    desole pour le S oublie. mais la reponse n'est pas bonne car j'aurai une erreure. car le premier champs c'est ID ma clef primaire qui est auto donc je dois laisser vide en ecrivant ton code j'aurai une erreur. il faut un moyen de le faire ecrire apres le premier champs sinon trouver un moyen d'identifier les champs par un compteur plutot que par leur nom

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,
    INSERT INTO ma_table VALUES ("","Dupont","René","15 rue des lilas")

    Tout simplement.

    Par contre, ta seconde requête n'a aucun sens, créer un enregistrement où l'id est égale à 10.. ?

    Tu chercherais pas à faire un UPDATE plutot ?

    UPDATE ma_table SET champ="value" WHERE id=10..

  5. #5
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    la seconde requete c'est bien UPDATE. je test pour voir. sinon est il possible d'avoir des indices plutot que des noms de champs?

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Non je ne crois pas, mais quel est l'intérêt, tu les connais les noms des champs ?

  7. #7
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    oui mais je veux par une classe qui contiendra des fonctions qui remplissent 3 tables du meme base de donnee, l'interet c'est que je veux faire une fonction comme ce la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     remplir_tbl($database,$table,$donnees)
    donc pour qu'elle soit reutilisable je ne veux pas ecrire le nom des champs

    entre autre ce code ne marche pas j'ai une eurreus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query ("INSERT INTO ".$table." VALUES ( '',".$data[0].",'".$data[1]."')");
    j'ai une erreur a cause de values ('',) je pense que c'est parceque le type attendu c'est indice en non chaine de caractere. j'ai essaye avec NULL mais ca passe pas non plus.

  8. #8
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Bonne prise de tête tout ca^^ bon courage! même si je pense qu'il surement une manière de faire plus simple!

  9. #9
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    toutes manieres plus simple est la bienvenue

  10. #10
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Ben déja, ce que je trouve vraiment louche, c'est lors d'une insertion, préciser dans quel ID tu le met, sachant qu'il est auto-incrément^^
    Aussi, tu n'est pas obligé, toujours dans le cadre d'une insertion, d'insérer du vide en mettant 2 guillemets^^

    Ensuite, en plus du champ id auto-incrément (que tu ne touchera plus lors d'une insertion), pourquoi pas rajouter un autre champ id (que tu appellera différemment que l'id principal, bien sur), qui lui ne sera pas auto-incrément, et dans lequel tu pourra y insérer toutes les valeurs que tu souhaites ? En fait, toucher à l'identifiant auto-incrément est plutôt risqué (risques d'effacement, ou mise à jour d'un champ que tu n'aurais pas souhaité), vaut mieux laisser faire tout seul!

  11. #11
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    il n'y a rien de louche, c'est tres simple je veux par exemple lire un fichier qui a des donnees ranger par ordre :
    nom,prenom,age,datenaissance,....,....
    la table personne comprend en plus la colone id et peut etre d'autre en plus
    j'ai la solution au probleme que j'avais pose la voici pour ce que ca interesse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for($j=0;$j<$num;$j++)
                               {
                                 $sColName .=  $colname[$j].",";
                                 $value.= "'".mb_convert_encoding(iconv('gb2312','utf-8',$data[$j]),'html-entities','utf-8')."',";
                               }
                               $sColName = substr($sColName,0,strlen($sColName)-1);
                               $value=substr($value,0,strlen($value)-1); //echo $sColName; exit();
                               $sql="INSERT INTO ".$table."(".$sColName.")VALUES (".$value.")";
    j'explique $cloname est un tableau contenant le nom de tous les champs de la table(ex: id, nom,prenom....) donc j'ecris un string pour avoir le nom de toutes les colonnes dans une seul variable genre je fais de meme pour les valeurs a inserer avec $data etant le buffer qui a recuperer la ligne dans un fichier .csv les donnees a inserer. les deux sont dans la meme boucle for pour avoir nombre de colones = nombre de valeur et comme je l'ai dit le fichier csv a ses valeurs ordonnee sans le ID qui est auto. a la fin on efface la derniere virgule et on insert. l'encodage c'est parceque je suis en chine et que parfois j'ai des caracteres qui n'apparaissent pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2007, 16h18
  2. Insérer des valeurs sur un True DBGrid
    Par lilas_violet dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/03/2007, 22h51
  3. Réponses: 1
    Dernier message: 19/08/2006, 02h02
  4. Réponses: 1
    Dernier message: 08/07/2006, 18h55
  5. Réponses: 13
    Dernier message: 21/09/2005, 15h39

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