Tabellen Informationen

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

  • #16
    Mit folgendem Code kannst du dir selbst helfen:
    PHP-Code:
    reset($row);
    while(list(
    $key,$value)=each($row))
    {
    echo 
    "$key > $value<br>";

    fertig sieht es so aus:
    PHP-Code:
    $res mysql_query("SHOW TABLES FROM `php-shop`")
    or die(
    mysql_error());
    while (
    $row mysql_fetch_array($res))
        {
    reset($row);
    while(list(
    $key,$value)=each($row))
    {
    echo 
    "$key > $value<br>";
    }
        } 

    PS: Wie meinst du das ? Du brauchst da was anderes als die 0 ? Sorry, versteh ich nicht. 0 ist einfacher als ein dynamischer Key à la: Tables_in_php-shop
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #17


      hä? Wieso stellst du eigentlich Fragen zu Dinge, die du noch gar nicht gepostet hast??

      Meine Antwort geradeben bezieht sich auf die erste While-Schleife, wo du das Ergebnis von SHOW fields FROM xxx ausgibst. Außerdem, wenn du dann von der Tabelle shop_artikel die spalten anzeigen willst, warum benutzt du da plötzlich SHOW COLUMNS FROM ???? Mußt doch auch SHOW fields FROM sein.

      Ach, und außerdem sehe ich gerade, daß mittlerweile Troublegum geantwortet hat. Vielleicht klärt sich ja dein Problem...

      P.S.: Sorry, das mit SHOW tables FROM tabelle hatte ich irgendwie übersehen und mit SHOW fields FROM verwechselt. Also, wie Troublegum schreibt: bei SHOW tables FROM benutzt du die $row[0] Variante und bei SHOW fields FROM die von meiner letzten Antwort.
      Zuletzt geändert von BrainBug; 10.04.2002, 15:51.

      Kommentar


      • #18
        Field Type Null Key Default Extra
        Das gilt für den Inhalt von Spalten.

        Was gilt für den Inhalt von Tabellen?
        Es gibt doch die Spalten, Tabellenkommentar,Tabellentyp.
        *winks*
        Gilbert
        ------------------------------------------------
        Hilfe für eine Vielzahl von Problemen!!!
        http://www.1st-rootserver.de/

        Kommentar


        • #19
          @Wotan: /me meint: aufmerksamer lesen
          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

          © Harald Schmidt

          Kommentar


          • #20
            @Troublegum
            ich habe das Posting aufmerksam gelesen.

            @Brainbug
            Es geht um folgenden Hintergrung:
            Ich will ein Installscript schreiben, bei dem ich erst prüfen müß ob die Tabellen/Spalten schon da sind oder nicht.
            Wenn Sie da sind muß noch der Typ überprüft werden. Da sich die Änderungen auch mal nur auf die Typen der Spalten beziehend ändern.

            Weiter im Text.

            Habe jetzt das Script so geändert:
            PHP-Code:
            $data="php-shop";

            echo 
            "Abfrage der Tabellen in der Datenbank<br>";

            $res mysql_query("SHOW TABLES FROM `$data`")
            or die(
            mysql_error());
            while (
            $row mysql_fetch_array($res))
                {
                echo 
            "$row[0]<br>";
                echo 
            "<hr>";
                echo 
            "Abfrage der Spalten in der Tabelle von $row[0]<br>";
                
            $r mysql_query("SHOW COLUMNS FROM `$row[0]`")
            or die(
            mysql_error());
                while (
            $ro mysql_fetch_array($r))
                    {
                    echo 
            "$ro[Field] $ro[Type]<br>";
                    }
                echo 
            "<hr>";
                }
            echo 
            "<hr>"
            Jetzt bekomme ich zwar die Ausgabe die ich haben will, aber noch nicht so ganz das Richtige. In der ersten while-Schleife habe ich immer noch die 0 in der $row-Abfrage. Wie kann ich die 0 ersetzen gegen Beispielsweise Field oder Columns (Columns geht aber nicht, schon probiert.).
            Zuletzt geändert von Wotan; 10.04.2002, 16:06.
            *winks*
            Gilbert
            ------------------------------------------------
            Hilfe für eine Vielzahl von Problemen!!!
            http://www.1st-rootserver.de/

            Kommentar


            • #21
              @Wotan: Dann machst du dir das Leben künstlich schwer
              Ich würde es so machen:

              Für alle Tabellen die Felder definieren, Name und Type...
              Dann alle Tabellen mit SHOW FIELDS FROM tabelle abfragen.
              Sollte die Abfrage schiefgehen, wird die Tabelle erstellt.
              Sollte die Abfrage erfolgreich sein, alle Felder überprüfen...
              Wenn eines abweicht, Tabelle löschen und erstellen.
              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

              © Harald Schmidt

              Kommentar


              • #22
                Original geschrieben von Troublegum
                ...
                Wenn eines abweicht, Tabelle löschen und erstellen.
                Wenn ich das mache, gehen mir alle Daten verloren und das ist nicht Sinn der Aufgabe. Ich habe momentan im Netz drei meiner ersten Script an laufen. Hier muss ich nur die Typen dreier Spalten ändern und weiter Spalten hinzufügen. Aber das ist was noch nicht klappt.
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #23
                  Hier mal das Script im Zip-Format

                  *editiert*
                  Sch.... Proxy-Server Leitung getrennt
                  */editiert*

                  Zuletzt geändert von Wotan; 10.04.2002, 16:20.
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #24
                    Zumindest einmal Dein Skript.
                    PHP-Code:
                    <?
                    $data = "php-shop";
                    echo "Abfrage der Tabellen in der Datenbank<br>";
                    $res = mysql_query("SHOW TABLES FROM $data") or die(mysql_error());
                    while ($row = mysql_fetch_array($res)) {
                        echo "<hr>";
                        echo "Abfrage der Spalten in der Tabelle von $row[0]<br>";
                        $r = mysql_query("SHOW COLUMNS FROM $data.$row[0]") or die(mysql_error());
                         while ($ro = mysql_fetch_array($r)) {
                            echo "&nbsp;&nbsp;&nbsp;&nbsp;$ro[Field] $ro[Type]<br>";
                        }
                    }
                    echo "<hr>";
                    ?>

                    Kommentar


                    • #25
                      ja, eigentlich habe ich schon kapiert, was du machen willst. Aber eigentlich hat auch Troublegum schon alles erschlagend beantwortet ->

                      bei SHOW tables FROM `$data` erhälst du ein Resultset mit eben nur einem einzigen Feld, welches natürlich den Tabellennamen der Datenbank beinhaltet. Das Feld selbst trägt sinnigerweise den Namen "Tables_in_$data". Ob du nun $row[0] oder $row[Tables_in_$data] ausgibst ist doch Jacke wie Hose, oder etwa nicht? Aber wenn du es uuuunbedingt willst, dann mach's halt mittels Variable:

                      $tablename="Tables_in_".$data;
                      echo $row[$tablename];

                      Oder willst du was ganz anderes?

                      P.S.: Ups, da haben ja schon dutzend andere vor mir geantwortet. Hier geht's ja schlag auf schlag...

                      Kommentar


                      • #26
                        Hier jetzt Komplettes Posting

                        Hier mal das Script im Zip-Format

                        Installiert wird aus dem Verzeichnis install mit der Datei index.setup.php
                        Angehängte Dateien
                        *winks*
                        Gilbert
                        ------------------------------------------------
                        Hilfe für eine Vielzahl von Problemen!!!
                        http://www.1st-rootserver.de/

                        Kommentar


                        • #27
                          Mein Problem im der Installationsdatei ist in der Datei setup.2.php.

                          Wenn die Tabellen schon dasind, wir trotzdem das INSERT ausgeführt und nicht wie gewollt, eine Fehlermeldung ausgegeben.

                          Auch so es fehlt noch folgende Datei zur Install:
                          Die Ordnerstruktur sollte so aus sehen

                          shopordner
                          &nbsp;&nbsp;lang
                          &nbsp;&nbsp;install
                          Angehängte Dateien
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #28
                            Nur noch ein kleiner Hinweis am Rande: Du gibts als Datenbanknamen "php-shop" an.

                            Meines Wissens ist ein "-" im Namen nicht erlaubt.

                            Aus dem mySQL Manual:

                            o Ein Name (Datenbankname, Tabellenname, Spaltenname) kann aus Alphanumerischen Zeichen bestehen und den Sonderzeichen "_" und "$".

                            o Ein Name darf nicht aus ausschließlich Zahlen bestehen.

                            (Mein geänderter Code, der ja jetzt nicht mehr benötigt wird funzt, soferne Du einen synatx korrekten DB-Namen eintragst)

                            Kommentar


                            • #29
                              Schein aber nicht an dem. Sowohl auf LAMP als auch auf WAMP läuft es mit dem - in der mitte. PS dein Script läuft.
                              *winks*
                              Gilbert
                              ------------------------------------------------
                              Hilfe für eine Vielzahl von Problemen!!!
                              http://www.1st-rootserver.de/

                              Kommentar


                              • #30
                                Ich würde Dir empfehlen je eine Unique id in alle Tabellen, speziell aber bei der Tabelle
                                shop_zahlung einzubauen, soferne das noch möglich ist. Du hast dadurch in der Folge viele Vorteile.
                                Einer davon könnte schon Dein Problem lösen:
                                PHP-Code:
                                $res "CREATE TABLE shop_zahlung(
                                            id int(10) unsigned NOT NULL auto_increment,
                                            zahlung varchar(30) NOT NULL,
                                            aktiv tinyint(4) NOT NULL,
                                            PRIMARY KEY (id))"
                                ;

                                        
                                $result mysql_query($res$conn);

                                        
                                $res "INSERT INTO shop_zahlung VALUES (0, 'Rechnung', 1)";

                                        
                                $result mysql_query($res$conn);

                                        
                                $res "INSERT INTO shop_zahlung VALUES (1, 'Nachnahme', 1)";

                                        
                                $result mysql_query($res$conn);

                                        
                                $res "INSERT INTO shop_zahlung VALUES (2, 'Kreditkarte', 1)";

                                        
                                $result mysql_query($res$conn);

                                        
                                $res "INSERT INTO shop_zahlung VALUES (3, 'Lastschrift', 1)";

                                        
                                $result mysql_query($res$conn); 
                                Der Insert würde bei Wiederholung auf einen Fehler auflaufen, da der unique Key id bereits vorhanden ist.
                                Bei Skripten die diese Tabelle befüllen schreibst Du dann:
                                $res = "INSERT INTO shop_zahlung VALUES (NULL, 'Lastschrift', 1)";
                                damit die id über autoincrement automatisch erhöht wird, oder:
                                $res = "INSERT INTO shop_zahlung (zahlung, aktiv) VALUES ('Lastschrift', 1)";

                                Alternativ dazu könntest Du aber auch das Feld zahlung als PRIMARY KEY definieren und alles ansonsten so belassen, dann wäre es auch nicht möglich einen Record doppelt zu inserten, soferne das ohnehin nicht möglich sein soll.
                                Zuletzt geändert von hand; 10.04.2002, 17:25.

                                Kommentar

                                Lädt...
                                X