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 :

deplacer un champ dans une table de BDD


Sujet :

PHP & Base de donn�es

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut deplacer un champ dans une table de BDD
    Bonjour le forum,

    Je dispose de deux tables, une ancienne et une nouvelle.

    L'ancienne devait r�pondre a l'�poque a une demande sp�ciale, je n'avais donc pas reflechi a organiser le positionnement des champs.

    L'evolution de mes fichiers PHP lisant ma table a reclam� la cr�atin d'une autre table, dont l'organistaion est diff�rente de la premiere table.

    Exemple le champ nom se trouve 5eme dans la premiere table et 20eme dans la deuxieme table.

    Je voudrais savoir, s'il vous plait, comment faire pour adapter la premiere table a la seconde (d�placer les champs d'une table, je ne peux par les d�truire pour les reconstruire a l'endroit ou je veux, cqr toutes mes infos seraient par la meme eff�c�es.) faire en sorte que le champ nom de la premiere soit d�plac� dans cette meme table a la 20eme place.

    Merci beaucoup de votre aide, et tr�s bonne journ�e le forum.

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par d�faut
    Salut,

    Ce que tu cherches � faire d�pend de ton SGBD. Et ce n'est utile que pour des requ�tes qui r�cup�reraient tous les champs ( par exemple un SELECT * ou un INSERT sans liste des �l�ments � ins�rer )

    Pour changer l'ordre des champs, il faut, en fonction de ton SGBD, aller voir les tables syst�mes; Ce sont elles qui contiennent les d�finitions de tes tables, et donc la liste des colonnes. Il se peut que tu puisses changer l'ordre mais je ne sais pas si c'est toujours possible; Je ne suis m�me pas s�r que tu puisses avoir le droit de modifier ces tables syst�mes a la mano.

    Quel SGBD utilises-tu ?

    A+

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    phpMyAdmin 2.2.3

  4. #4
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ALTER TABLE tbl_name CHANGE col_name col_definition AFTER other_col_name
    http://mysql.com/alter table

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    Merci Mr N, je connaissais cette fonction, mais elle ne marche pas, j'ai regulierement une erreur., je pense que je vais laisser tomber, et modifier mes select * en select nom de colonne et le tour sera jou�.

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    J'ai trouv� plus simplet plus rapide.

    Je vais export� en CSV, modifier l'ordre des colonne, rec�er une table conforme et recoller le fichier CSV a la nouvelle table.

    Je teste de suite.

    Bonne journ�e

  7. #7
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Citation Envoy� par kaolivier
    Merci Mr N, je connaissais cette fonction, mais elle ne marche pas, j'ai regulierement une erreur., je pense que je vais laisser tomber, et modifier mes select * en select nom de colonne et le tour sera jou�.
    Je vois pas le rapport entre un select * et l'ordre des colonnes. A moins que... ne me dit pas que tu n'utilises pas mysql_fetch_assoc en lieu et place de mysql_fetch_row ???

  8. #8
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    PIRE QUE TOUT
    j'utilise while($ligne = mysql_fetch_array($result, MYSQL_ASSOC)

    C'est pas grave, je me suis debrouill� autrement, par contre, je n'arrive pas a faire en sorte que phpmyadmin accepte de lire un fichier CSV pou rle traduire en table et donn�es !!!!

    Tr�s embetant

  9. #9
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Ben je ne vois toujours pas pourquoi l'ordre de tes colonnes � de l'importance.
    Suffit d'acceder � tes donn�es via $ligne['nom_du_champ']
    et de faire des requ�tes d'insertion compl�tes (comme �a devrait �tre fait normalement) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    insert into table(champ1, champ2) values (val1, val2)
    au lieu de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    insert into table values (val1, val2)

  10. #10
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    Je suis d'accord mais quand on g�re deux ou trois requetes avec 3 ou 4 colonne ca va, mais j'ai en gros une trentaire de requete pour 200 colonnes, donc un peu lourd quand meme.


    Mais je suis pass� a autre chose, j'ai telecharg� ma BDD en CSV, modifi� les colonne, et j'essaie en vain d'importer mon fihcier CSV dans ma bdd, mais marche pas, j'ai trouv� cette fonction sur le net : http://dev.mysql.com/doc/refman/5.0/fr/load-data.html

    mis je n'arrive pas trop a l'utiliser.

    Ma table est d�ja �crite, mon fihcier csv traduit en txt donne a peu pr�s ceci :
    var1;var2;var3;var4.....
    etc...

    comment puis je la traduire et l'importer dans mon SQL, car en SQL c'est plutot ca que je devrais avoir :
    INSERT INTO table VALUES ('var1', 'var2', 'var3', 'var4',...);


    Merci d'avance

  11. #11
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Pourquoi faire simple quand on peut faire compliqu� ?
    Utilise plutot les outils qui r�pondent � ton besoin : ALTER TABLE
    Je viens de le faire sur une table de test et tout roule... Colle nous la requ�te utilis�e.

  12. #12
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    Ok alors faisons un test pour que je comprennes ALTER TABLE.

    Premi�re table :
    CREATE TABLE NOUVELLE (
    VARA text NOT NULL,
    VARB text NOT NULL,
    VARC text NOT NULL,
    VARD text NOT NULL,
    VARE text NOT NULL
    ) TYPE=MyISAM;

    CREATE TABLE ANCIENNE (
    VARB text NOT NULL,
    VARD text NOT NULL,
    VARE text NOT NULL,
    VARC text NOT NULL,
    VARA text NOT NULL
    ) TYPE=MyISAM;

    Que dois je taper pour que la table ANCIENNE soit ordonn�e comme la table nouvelle?

    ALTER TABLE ANCIENNE CHANGE VARB AFTER VARD ???

    Merci de ton aide

  13. #13
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Citation Envoy� par Mr N.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ALTER TABLE tbl_name CHANGE col_name col_definition AFTER other_col_name
    Tu as oubli� la partie col_definition :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ALTER TABLE ANCIENNE CHANGE VARB VARB TEXT NOT NULL AFTER VARD

  14. #14
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    Est il possible que ma version de PHPMYADMIN (2.2.3) ne permette pas cette fonction, car chez moi ce la ne fonctionne pas.


    Erreur
    requ�te SQL :

    ALTER TABLE ANCIENNE CHANGE VARB VARB TEXT NOT NULL AFTER VARD

    MySQL a r�pondu:


    You have an error in your SQL syntax near 'AFTER VARD' at line 1

    --------
    J'ai meme essay� �a :

    Posted by Kevin Welch on March 18 2005 12:21am [Delete] [Edit]

    To reorder the columns of your table, you can use the ALTER TABLE syntax, since as of MySQL 4.0.1, the keywords FIRST and AFTER can be used in a CHANGE or MODIFY command.

    Example:

    mysql> describe example_table;


    +-------------+------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+------------+------+-----+---------+----------------+| id | int(11) | | PRI | NULL | auto_increment || columnA | bigint(20) | | | 0 | || columnB | text | | | 0 | |+-------------+------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)

    mysql> ALTER TABLE example_table CHANGE COLUMN columnB columnB TEXT NOT NULL AFTER id;
    Query OK, 3 rows affected (0.01 sec)
    Records: 3 Duplicates: 0 Warnings: 0

    mysql> describe example_table;

    +-------------+------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+------------+------+-----+---------+----------------+| id | int(11) | | PRI | NULL | auto_increment || columnB | text | | | 0 | || columnA | bigint(20) | | | 0 | |+-------------+------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)

    ----
    mais j'ai une erreur :
    ALTER TABLE ANCIENNE CHANGE COLUMN VARB VARB TEXT NOT NULL AFTER VARD

    MySQL a r�pondu:


    You have an error in your SQL syntax near 'AFTER VARD' at line 1

  15. #15
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Ce n'est pas li� � phpMyAdmin mais � la version de MySQL. Chez moi �a marche (4.1)
    Quelle est ta version ?

  16. #16
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    MySQL 3.23.49-

  17. #17
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Tu as les moyens de passer � une version plus r�cente ?
    Sinon une solution est de faire un export :
    [X] Structure
    [X] Add drop table
    [X] Add AUTO_INCREMENT value
    [X] Enclose table and field names with backquotes
    [X] Data
    [X] Complete inserts

    Puis dans cet export il te suffit de modifier l'ordre des tables et de rebalancer la sauce � mysql. Un backup s'impose mais j'espere qu'il est d�j� fait

  18. #18
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par d�faut
    Merci pour toute ces suggestions, je me suis d�brouill� autrement, mais les informations fournies en r�ponse a mon post me sont pr�cieuse et je les testerai plutard.

    Merci beaucoup et tr�s bonne journ�e a tous.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Deplacer un champs dans une table ?
    Par isa150183 dans le forum Langage SQL
    R�ponses: 4
    Dernier message: 24/07/2006, 15h44
  2. Modification du nom d'un champ dans une table
    Par reef1 dans le forum Langage SQL
    R�ponses: 2
    Dernier message: 25/06/2004, 10h55
  3. R�ponses: 2
    Dernier message: 19/05/2004, 10h13
  4. changement de type pour un champ dans une table
    Par Missvan dans le forum PostgreSQL
    R�ponses: 2
    Dernier message: 23/02/2004, 15h26
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    R�ponses: 5
    Dernier message: 30/07/2003, 06h53

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