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 :

Créer une table dont la 1ere colonne est la recopie de celle d'une autre table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Points : 14
    Points
    14
    Par défaut Créer une table dont la 1ere colonne est la recopie de celle d'une autre table
    Bonjour,

    j'ai une table de navigation, et je cherche à créer une table de statistiques en dupliquant la première colonne index de la table de navigation.

    Plusieurs possibilités s'ouvrent à moi:
    1)Peut-on dupliquer une table? Il suffit alors de renommer et modifier la nouvelle table.

    2)J'ai plutôt essayé de créer la nouvelle table de toutes pièces, lire la colonne de la première, et la recopier dans la seconde (elles ont même nom, type, etc)
    Pour créer ça va, mais pour lire et recopier...
    voici ce que j'ai pu faire de mieux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // lire la colonne index de la table de navigation: 
    $requete = " SELECT `index` FROM `".$tableNav."`";
    $ColonneIndex = mysql_query($requete) ;
    //echo "result = ".$ColonneIndex[1]." ".$ColonneIndex[2];
    //echo mysql_result($ColonneIndex,0,'index');
    // écrire le résultat dans la colonne index de la table de stats:
    mysql_query("INSERT INTO ".$tableStat."(index) VALUES (".$ColonneIndex.")" );
    Ce code ne marche pas; la table d'arrivée reste vide, et même les "echo" n'écrivent rien. Apparemment ce qui est en jeu est la nature de $ColonneIndex:
    est-ce un tableau, ou une ressource? Comment le manipuler, et l'écrire dans la table d'arrivée, si possible sans faire une boucle? (j'ai plusieurs centaines d'index)

    Si quelqu'un peut me dépanner, merci

  2. #2
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Bonjour,

    ta variable $ColonneIndex est une ressource contenant le résultat de ta requête, pour accéder à ses valeurs utilise la fonction mysql_fetch_assoc. Si j'ai bien compris ton problème, tu veux dupliquer les valeurs d'un champ d'une table A dans une table B ... tu peux faire ça en une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
     
    $maRequete = mysql_query("INSERT INTO tableB(champ_destination) SELECT champ_source FROM tableA ");
     
    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Points : 14
    Points
    14
    Par défaut Déjà résolu? !!!
    Oui, cette requête fonctionne...

    j'ai juste du l'adapter un peu, car mes colonnes à recopier s'appellent toutes les deux "index", un nom à déconseiller, car c'est aussi un mot-clé de MySQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    $maRequete = mysql_query("INSERT INTO tableB(`index`) SELECT `index` FROM tableA ");
     
    ?>
    Ce signe: ` s'appelle un backtick en anglais, en français je sais pas. Sur PC on le fait avec Alt Gr et la touche "è", puis un coup de barre d'espace.

    Après il ne me restait qu'à faire de la manipulation de chaîne pour insérer mes noms de table.

    Je pense que c'est une bien meilleure solution que d'analyser le contenu de $maRequete, et même que de dupliquer la table (ce qui prendrait bien plus de temps, puisqu'on recopierait inutilement tous les champs de TableA, donc certains sont assez trapus)

    Voilà, mes sincères remerciements donc, makmaoui!

    Je laisse cette discution ouverte quelques jours, au cas ou quelqu'un voudrait commenter, avant de la marquer "résolu".

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2013, 14h20
  2. Réponses: 9
    Dernier message: 16/11/2010, 16h58
  3. [AC-2007] Modifier une liste dont l'origine source est une Table/Requête
    Par Cinesra dans le forum VBA Access
    Réponses: 6
    Dernier message: 09/11/2010, 14h20
  4. Réponses: 1
    Dernier message: 12/05/2009, 11h05
  5. Réponses: 3
    Dernier message: 23/04/2007, 15h53

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