wie Tabellenspalte verschieben?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wie Tabellenspalte verschieben?

    ich hab vor längerem mal ein Script geschrieben, das die Ausgabe der Daten in der Reihenfolge der vorhandenen Tabellenspalten vornimmt.
    D.h. es werden mit mysql_list_fields() die vorhandenen Spalten ausgelesen und abgearbeitet.

    Wie kann ich nun z.b. eine so aufgebaute Tabelle

    Name | Vorname | Strasse | Ort | Abteilung

    in diese Reihenfolge

    Name | Vorname | Abteilung | Strasse | Ort

    ändern, ohne die Spalte zu löschen und neu anzulegen, was natürlich den Verlust der Daten zur Folge hätte?

    Umwege über CSV-Datei Export/Ändern/Import sind natürlich möglich, aber nur für den äußersten Notfall angedacht.

    ALTER TABLE stellt keine Möglichkeit zu einer solchen Änderung bereit.

    any ideas?

    Danke vorab!

  • #2
    Warum überhaupt mysql_list_fields()?

    Warum nimmst du nicht einfach mysql_query() und weist die Ergebnisse mit mysql_result() zu?
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Re: wie Tabellenspalte verschieben?

      Die einfache Methode: Nutze PMA dafür, der bietet doch auch das "Verschieben" von Spalten an.

      Die etwas kompliziertere: Bilde das, was PMA dabei auch im Hintergrund macht, nach - Daten in temporäre Tabelle kopieren (oder dumpen), anschließend Originaltabelle droppen und mittels CREATE-Statement mit veränderter Spaltenreihenfolge wieder erstellen, dann Daten wieder hineinladen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Das passiert im nächsten Schritt bei der Ausgabe der Datensätze. Die Daten werden in der Reihenfolge der Tabellenspalten (horizontal) angezeigt, vertikal dann die selektierten Datensätze ausgegeben.

        Ist aber irrelevant. Das Script läuft seit längerem ohne Probleme, da soll auch nichts dran geändert werden. Hintergrund dieses Aufbaues war, problemlos weitere Felder an-/einfügen zu können ohne am Script Änderungen vorzunehmen.

        edit: @wahsaga
        sorry, was ist PMA?

        Kommentar


        • #5
          PMA = PHPMyAdmin
          it's not a bug,
          it's a feature!

          Kommentar


          • #6
            Original geschrieben von HenryH
            sorry, was ist PMA?
            Hier gängige Abkrzng für phpMyAdmin.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              ok, dann ists klar. Aber weder bei V 2.5.7 noch bei V 2.6.1, die ich auf dem Server am Laufen habe, gibts eine Option zum Verschieben von Spalten.

              Hab ich da was übersehen? Wo hat sich die Option versteckt?

              Kommentar


              • #8
                Re: Re: wie Tabellenspalte verschieben?

                Original geschrieben von wahsaga
                Die einfache Methode: Nutze PMA dafür, der bietet doch auch das "Verschieben" von Spalten an.

                Die etwas kompliziertere: Bilde das, was PMA dabei auch im Hintergrund macht, nach - Daten in temporäre Tabelle kopieren (oder dumpen), anschließend Originaltabelle droppen und mittels CREATE-Statement mit veränderter Spaltenreihenfolge wieder erstellen, dann Daten wieder hineinladen.
                Das ist mir neu ... wo ist die Funktion?!

                Im übrigen .. einfacher als eine neue Tabelle anlegen:

                Attribut "attr_neu" an entsprechender Position anlegen,
                Code:
                ALTER TABLE tabelle ADD attr_neu TYPEDEF AFTER wurst;
                UPDATE tabelle SET attr_neu = attr_alt;
                Attribut attr_alt löschen.
                Code:
                ALTER TABLE tabelle DROP attr_alt;
                Attribut attr_neu in attr_alt umbenennen ...
                Code:
                ALTER TABLE tabelle CHANGE attr_neu attr_alt TYPEDEF;
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Super

                  Da sieht man mal wieder, dass allzu kompliziertes Denken (wie in meinem Fall) den Blick auf die einfachsten Lösungen vernebelt...

                  Kommentar


                  • #10
                    es ist aber auf jeden Fall besser auf "deprecated" Funktionen zu verzichten, mit SELECT-Abfrage kannst du die Reihenfolge nach Lust und Laune festlegen.

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      es ist aber auf jeden Fall besser auf "deprecated" Funktionen zu verzichten,
                      ???
                      Original geschrieben von asp2php
                      mit SELECT-Abfrage kannst du die Reihenfolge nach Lust und Laune festlegen.
                      Das ist klar ... aber grundsätzlich tut auch ein "schönes" Tabellen Layout zu einem "schönen" Datenbank-Entwurf ... und zu mehr Übersichtlichkeit.
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        Original geschrieben von asp2php
                        es ist aber auf jeden Fall besser auf "deprecated" Funktionen zu verzichten, mit SELECT-Abfrage kannst du die Reihenfolge nach Lust und Laune festlegen.
                        Das passiert bei der Ausgabe der Datensätze. Die Anzeigenreihenfolge der Daten hat damit aber nichts zu tun und lässt sich mit SELECT hier auch nicht steuern.

                        Obwohl ich ja bereits die Lösung habe. Hier nochmal zum besseren Verständnis der Aufbau:

                        Tabelle:

                        Name | Vorname | Strasse | Ort | Abteilung


                        Ausgabe aus der DB

                        Name | Vorname | Strasse | Ort | Abteilung
                        Müller | Peter | Hauptstr.7 | Musterhausen | Lager
                        Meyer | Hans | Dorfstr.1 | Musterstadt | Verwaltung
                        ...
                        ...

                        Soll nun die Abteilung direkt hinter dem Vornamen ausgegeben werden muss die Reihenfolge der Tabellenspalten geändert werden.

                        Andernfalls müsste dem Script bekannt sein, welche Felder in der Tabelle vorhanden sind, und per Script oder Template die Anzeigereihenfolge gesteuert werden.

                        Kommentar


                        • #13
                          Original geschrieben von goth
                          ???
                          Auszug aus Manual

                          mysql_list_fields

                          (PHP 3, PHP 4, PHP 5)
                          mysql_list_fields -- List MySQL table fields
                          Description
                          resource mysql_list_fields ( string database_name, string table_name [, resource link_identifier] )

                          Retrieves information about the given table name.

                          [color=red]This function is deprecated.[/color] It is preferable to use mysql_query() to issue a SQL SHOW COLUMNS FROM table [LIKE 'name'] statement instead.

                          Kommentar


                          • #14
                            Weil ich grad mitles:

                            Ich wüsste auch gern wo in PMA ne Funktion zum Spalten verschieben ist - verwende 2.6.0 pl2 - gibts das erst später? Momentan gibts ja 2.7.irgendwas
                            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                            Schön - etwas Geschichte kann ja nicht schaden.
                            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                            Kommentar


                            • #15
                              Interessant, danke für den Hinweis. Hilft mir aber in dem Fall auch nicht weiter, da es in diesem Fall keine logisch erfassbare Sortierreihenfolge gibt.
                              Gut, ich könnte hier in einem Datensatz zu jedem Feld eine Prio ablegen. Eine gute Idee für zukünftige Scripte.

                              Kommentar

                              Lädt...
                              X