mysql2csv export ?

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

  • mysql2csv export ?

    Ich würde gerne eine Tabelle meiner Datenbank per Klick in eine csv Datei exportieren. Kann mir jemand sagen wie ich da zu grundsätzlich vorzugehen habe ? Bitte steht einem Newbie zur Seite. Vielleicht gibt es da ja auch schon etwas fertiges. Allerdings mag ich selbermachen lieber ...

    cu

    Raik

  • #2
    mach am besten mit phpmyadmin : http://phpwizard.net/projects/phpMyAdmin/

    Gruß
    Berni

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Der phpMyAdmin kann's zwar besser, aber:

      Code:
      $tablename = 'Tabelle';
      $q = mysq_query ("select * $tablename');
      if ($q)
      {
        if ($f = fopen ("$tablename.csv", 'w'))
        {
          while ($r = mysql_fetch_row ($q))
          {
            for ($i=0; $i<count($r); $i++)
              $r[$i] = '"'.str_replace ('"','\"', $r[$i]).'"';
            fputs ($f, implode(';',$r)."\r\n"));
          }
          fclose ($f);
        } else
          echo "Datei konnte nicht geöffnet werden";
      } else
        echo "MySQL-Fehler: ".mysql_error();
      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


      • #4
        muß es nicht

        $q = mysq_query ("select * from $tablename');

        heissen?? Oder geht hier auch eine Kurzvariante ohne das "from"?

        Kommentar


        • #5
          Parse error ..

          Habe das folgenden Scrip jetzt mal eingebaut. Funkt aber noch nicht.

          <?php
          include("config.inc.php");
          $mydb = mysql_connect("$host", "$root", "");
          if (!$mydb) die("Keine Verbindung zu MySQL");
          mysql_select_db($dbname, $mydb) or die("Keine Verbindung zur Datenbank");

          $q = mysql_query ("select * form newsletter");
          if ($q)
          {
          if ($f = fopen ("newsletter.csv", 'w'))
          {
          while ($r = mysql_fetch_row ($q))
          {
          for ($i=0; $i<count($r); $i++)
          $r[$i] = '"'.str_replace ('"','\"', $r[$i]).'"';
          fputs ($f, implode(';',$r)."\r\n"));
          }
          fclose ($f);
          } else
          echo "Datei konnte nicht geöffnet werden";
          } else
          echo "MySQL-Fehler: ".mysql_error();
          ?>

          In der Zeile mit dem fputs meldet er eien Parse error .....

          Kommentar


          • #6
            Code:
            <?php 
            include("config.inc.php"); 
            $mydb = mysql_connect("$host", "$root", ""); 
            if (!$mydb) die("Keine Verbindung zu MySQL"); 
            mysql_select_db($dbname, $mydb) or die("Keine Verbindung zur Datenbank"); 
            
            $q = mysql_query ("select * from newsletter"); 
            if ($q) 
            { 
            if ($f = fopen ("newsletter.csv", 'w')) 
            { 
            while ($r = mysql_fetch_row ($q)) 
            { 
            for ($i=0; $i<count($r); $i++) 
            $r[$i] = '"'.str_replace ('"','\"', $r[$i]).'"'; 
            fputs ($f, implode(';',$r)."\r\n"); 
            } 
            fclose ($f); 
            } else 
            echo "Datei konnte nicht geöffnet werden"; 
            } else 
            echo "MySQL-Fehler: ".mysql_error(); 
            ?>
            es muß "select * from newsletter" heissen und nicht "form".
            und im fputs war die hintere Klammer zuviel

            Kommentar


            • #7
              Perfekt ...

              10000000000 Dank, funkt perfekt !!!

              Kommentar


              • #8
                hallo zusammen,

                also das letze script was gepostet wurde haut ja supergut hin ..
                ich war mal so frei und habe das ganze gleich bei mir eingebaut ,o)

                allerdings habe ich noch ein klitzekleines problem damit ...

                ich muß vor dem schreiben in der csv datei 3 tabellen spalten "umarbeiten"

                diese heissen un der datenbank wie folgt:[list=1][*]regdate[*]lastvisit[*]lastactivity[/list=1]

                in diesen spalten sind lange Zahlenkombinationen drinn die mit diesem codeschnipsel in ein reguläres datum umgeändert werden.

                PHP-Code:
                $format "d.m.Y";
                // Registrierung
                $rdatum date($format,$regdate);
                // Letzer Besuch
                $vdatum date($format,$lastvisit);
                 
                // Letze Aktivität
                $adatum date($format,$lastactivity); 
                hat jemand eine idee wie ich das ganze so realisieren kann mit dem export script?

                danke dafür schonmal im vorraus
                jens

                Kommentar


                • #9
                  PHP-Code:
                  $format "d.m.Y";
                  while (
                  $r mysql_fetch_row ($q)) 

                      for (
                  $i=0$i<count($r); $i++) 
                      {
                          if (
                  $i==4$val date($format,$r[$i]); // Registrierung
                          
                  else if ($i==5$val date($format,$r[$i]); // Letzer Besuch
                          
                  else if ($i==6$val date($format,$r[$i]); // Letze Aktivität
                          
                  else $val $r[$i];
                          
                  $r[$i] = '"'.str_replace ('"','\"'$val).'"'
                      }
                      
                  fputs ($fimplode(';',$r)."\r\n"); 

                  wobei die Abfrage if ($i==4) bedeutet, dass in der fünften Spalte deiner Tabelle der Wert für die Registrierung steht. Zählung beginnt bei 0 ! Die Werte musst du also noch anpassen.

                  Noch einfacher wäre es, wenn du den Query anpasst und den Resultset schon dementsprechend erzeugst:
                  PHP-Code:
                  $q mysql_query ("select Feld1, Feld2, ....., from_unixtime(Feld_Registrierung, '%d.%m.%Y'), ... from newsletter"); 
                  dann kannst du die Export-Schleife auch so lassen wie vorher.

                  Kommentar


                  • #10
                    Hi BrainBug,

                    ich habs gestern abend noch hinbekommen gehabt, hat mich einfach nicht in ruhe gelassen das ganze. hab dann mit nem bekannten gesprochen der mir dabei geholfen hatte ;o)

                    ich habs jetzt so gelößt:
                    PHP-Code:
                    while ($r mysql_fetch_row ($q))
                    {
                    $r[5]= date("d.m.Y",$r[5] );
                    .......
                    for (
                    $i=0$i<count($r); $i++)
                    $r[$i] = '"'.str_replace ('"','\"'$r[$i]).'"';
                    fputs ($fimplode(';',$r)."\r\n"); 
                    und haut auch supi hin ;o)

                    danke nochmal für die hilfe
                    jens

                    Kommentar

                    Lädt...
                    X