mySQL-Dump mit PHP

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

  • mySQL-Dump mit PHP

    Hallo mal wieder,

    ich habe eine Adress-Datenbank (mySQL) und möchte diese aus einem selbstgebastelten Adress-Tool per Button als Dump zum Download anbieten, so dass ich diese später in Excel öffnen kann.

    Wer hat da eine Idee für mich?

    BITTE KOMMT NICHT AUF DIE IDEE MIR DEN PHPMYADMIN VORZUSCHLAGEN.
    ES SOLL AUS MEINER ONLINEANWENDUNG HERAUS GESCHEHEN!!!

    Gibts einen generellen mySQL-Dump Befehl in PHP und wie mache ich das, dass Textdateien trotzdem heruntergeladen werden und nicht im Browser angezeigt werden?

    Es dankt und grüßt, der Andi

  • #2
    mit phpmyadmin kannst du aber ne funktionierende DUMP-Anweisung bekommen! Schau sie dir doch an und bau sie für dich um.

    gruss

    Kommentar


    • #3
      So schlau war ich auch schon, aber ich blick da nix.
      Da werden so viele Dinge berücksichtigt, ob CSV, nur Struktur oder mit Inhalten, danach Tabelle löschen oder nicht.

      Ich find da einfach nichts, was irgendwie Licht ins Dunkel brigt.

      Gibts denn keine einfache Lösung? :-(

      Gruß, Andi

      Kommentar


      • #4
        SHOW FIELDS FROM tabelle;

        Zeigt dir alle Felder der Tabelle an, daraus müsstest du eine CREATE-Anweisung konstruieren können.

        Die Daten musst du mit SELECT * FROM tabelle abfragen, escapen und als gültigen SQL Insert Befehl ausgeben.
        [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


        • #5
          Das habe ich mir auch gedacht !!!???!!!

          Quatsch, ich hab davon doch keine Ahnung. :-(

          Gibts denn da keinen fertigen Code für, ich bin doch wohl nicht der einzige, der aus einer Tabelle einen Dump ziehen will, oder???


          Greetings, so long...
          Andi

          Kommentar


          • #6
            Probiere mal sowas ... allerdings wie immer ungetestet ...

            PHP-Code:
            <?php
            // Datenbank connect ... 
            if ( mysql_connect( ... ) ) {
                if ( 
            mysql_select_db( ... ) ) {
                    
            $tabellenname="IRGENDEINETABELLE";
                    
                    
            // Header senden ... 
                    
            header("Content-Type: application/octetstream");
                    
            header("Content-Disposition: attachment; filename=\"$tabellenname.txt\"");
                    
            header("Pragma: no-cache");
                    
            header("Expires: 0");
                    
            header("Pragma: public");

                    if ( 
            $res=mysql_query("SELECT * FROM $tabellenname") ) {
                        
            $fields=mysql_num_fields($res);

                        
            // CSV Header
                        
            for ( $idx=0$idx<$fields$idx++ ) {
                            if ( 
            $idx ) echo "\t";
                            echo 
            "\"".mysql_field_name($res$idx)."\"";
                        }
                        echo 
            "\n";

                        
            // CSV Daten
                        
            while ( $row=mysql_fetch_row($res) ) {
                            for ( 
            $idx=0$idx<$fields$idx++ ) {
                                if ( 
            $idx ) echo "\t";
                                echo 
            "\"".$row[$idx]."\"";
                            }
                            echo 
            "\n";
                        }
                    }
                }
                
            mysql_close();
            }
            ?>
            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


            • #7
              Das sieht schon nicht schlecht aus, leider bekomme ich einen Parse Error in Line 6.
              Ich habe schon mal alle if bedigungen weg genommen. Wo er jetzt hängt ist in der CSV-Header Schleife.

              Bitte schau doch noch mal, ob Du da den Fehler findest.

              Dank & Gruß,
              Andi

              Kommentar


              • #8
                Ich habe auch eine zeitlang an der Fragestellung herumgemacht. Die folgende Lösung ist nicht hohe Schule, aber funktioniert immerhin , pragmatisch gesehen sind es 3 Handgriffe.
                a) die Tabelle ausgeben nur als <table><tr><td> usw. Diese dann (mit IE gehts) mit "speichern unter" als (*.txt)-Datei mit Namen bla.xls speichern. Funktioniert (manchmal ) mit Excel 2000
                b) die Tabelle gleich wie oben als <table border> ... ausgeben. Alles anzeichnen ctrl+a, copy ctrl+c und in einem leeren Excel einfügen ctrl+v. Et voila

                Das ganze als txt mit tab speichern und dann mit Excel öffnen funktioniert vllt. auch.

                mfg
                Zuletzt geändert von CHnuschti; 21.06.2002, 03:04.

                Kommentar


                • #9
                  Ich glaube, das kann ich wohl keinem Kunden zumuten, der ein professionelles Adressystem haben will.
                  Aber trotzdem Danke für den Tip. Mit der Script von goth funktioniert das schon ganz gut. Das ganze in eine Datei schreiben und darauf verlinken.
                  Die Datei muss einfach die Endung .xls haben und mit Semikolons separiert sein, dann öffnet Excel die schon richtig.

                  Gruß, Andi

                  Kommentar


                  • #10
                    also wenn es dein eigener server ist und du auch befehle absetzen kannst ist das ganz einfach

                    unter linux zumindest da gibt es einen befehl der liegt im mysql bin verzeichniss

                    mysqldump -A -c

                    wenn du es auf deinem webserver im internet nicht machen kannst kannst du auch phpmyadmin nehmen oder brauchst du unbeding eine eigene funktion??

                    gruß
                    shortie
                    Wusstet ihr schon?
                    Wer später bremst ist länger schnell!

                    Die wahrscheinlich beste Funktion in PHP ist mysql_error(), doch leider auch die unbekannteste!

                    Kommentar


                    • #11
                      Eigene Funktion: Yes, siehe ersten Thread.
                      Domain ist bei 1&1 gehostet, mit einem Premium-Paket, keine Ahnung was bei denen im mysql bin verzeichniss liegt?

                      Ich werde es mal probieren, thanks so long.

                      Kommentar


                      • #12
                        Zur Excel-Lösung gibt es noch einen Nachtrag von mir:
                        Wenn die HTML-Tabelle mit Endung .xls gespeichert wird, führt eine Weiterleitung oder ein Link darauf unter Windows dazu, dass diese automatisch mit Excel geöffnet wird und nur noch "Speichern als ..." benutzt werden muss.
                        mein Sport: mein Frühstück: meine Arbeit:

                        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                        Kommentar


                        • #13
                          Hmnnn ... den Parser error in Zeile 6 verstehe ich nicht ganz ...
                          allerdings sind die Zeilen:
                          PHP-Code:
                          if ( mysql_connect( ... ) ) {
                              if ( 
                          mysql_select_db( ... ) ) { 
                          natürlich nicht vollständig ...
                          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


                          • #14
                            @ goth:

                            Jo, des hat sich schon erledigt. Komischerweise waren alle Leerziechen in dem Code (direkt aus dem Browser kopiert) nicht leer sondern mit einem † gefüllt. Nur das hat mir mein Editor nicht angezeigt, so fand ich halt auch den Fehler nicht. Erst als ich das in einem Textprogramm geöffnet habe, sah ich die Bescherung.
                            Jetzt läuft das Script super.

                            @ Titus:
                            Muß gar nicht in einer Tabelle sein, mit Tab getrennt und Text enclosed by "" langt völlig. Ich lass jetzt den Dump in eine Datei schreiben und biete einen Link zum Download an. Die Datei lässt sich direkt und richtig formatiert mit Excel öffnen.
                            Einziger Nachteil, manche browser haben ein Excel PlugIn, da wird die Seite direkt im Browserfenster Dargestellt und muss von dort aus gesichert werden.
                            Leider funktioniert das Downloadscript noch nicht :-(

                            Thank so long,
                            Andi

                            Kommentar


                            • #15
                              Hallo,

                              das habe ich ja schon lange gesucht.

                              Meine Frage dazu ist, wie ich das Script so anpassen kann, dass es mir eine sql-Datei ausspuckt, die der ähnelt, die auch phpmyadmin ausgibt?

                              So long

                              Kommentar

                              Lädt...
                              X