Fast vollkommen !

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

  • Fast vollkommen !

    Hallo PHP-Coder,

    seit einigen Wochen sitze ich an einer Möglichkeit eine SQL-Tabelle in Excel zu öffnen oder als CSV-Datei speichern zu lassen.

    Ich hatte auch schon mehrfach gepostet und bekam immer eine Super Unterstützung - DANKE !

    Jedoch blieb der Erfolg, trotz zeilreicher Hilfe aus,
    nun habe ich es fast geschaft, zumindest kann ich die Tabelle nun in Excle öffnen, jedoch würde ich gerne noch eine Möglichkeit einbauen um nur die Daten vom letzten Monat anzeigen zu lassen.

    Hier das Script :

    PHP-Code:
    <?php


        Header
    ("Content-Type: application/vnd.ms-excel");

        
    $db_link mysql_connect("localhost""$benutzer""$passwort")
        or die(
    "Keine Verbindung möglich!");
        
    mysql_select_db("$DB")
        or die(
    "Auswahl der Datenbank fehlgeschlagen");

        
    $query_text "SELECT * FROM pphl_39585_logs";

        
    $result mysql_query($query_text$db_link);
        
    $fieldcounts mysql_num_fields($result);
        for(
    $i 0$i $fieldcounts$i++) {
            
    $fieldtype mysql_fetch_field($result$i);
            if (
    $i < ($fieldcounts-1)) echo "$fieldtype->name [$fieldtype->type]\t";
                else  echo 
    "$fieldtype->name [$fieldtype->type]\n";
        }
        
    $myrow mysql_fetch_array($result);
        do {
            for(
    $i 0$i $fieldcounts$i++) {
                
    $fieldname mysql_field_name($result$i);
                if (
    $i < ($fieldcounts-1)) echo $myrow[$fieldname] . "\t";
                    else echo 
    $myrow[$fieldname] . "\n";
            }
        } while (
    $myrow mysql_fetch_array($result));
    ?>
    Link

    nun habe ich es folgender maßen verändert, jedoch bekomme ich einen Parse-Error in der Zeile nach der letzten.

    PHP-Code:
    <?php


        Header
    ("Content-Type: application/vnd.ms-excel");

        
    $db_link mysql_connect("localhost""$benutzer""$passwort")
        or die(
    "Keine Verbindung möglich!");
        
    mysql_select_db("$DB")
        or die(
    "Auswahl der Datenbank fehlgeschlagen");

        function 
    csv_export($id) {

        
    $monat date("m"); $jahr date("Y");
        
    $monat $monat 1;
        if (
    $monat == 0) {
            
    $monat 12;
            
    $jahr $jahr 1;
        }
        switch (
    $monat) {
        case 
    1:
            
    $lastday 31;
            break;
        case 
    2:
            
    $lastday 28;// Schaltjahre beachten...
            
    break;
        case 
    4:
        case 
    6:
        case 
    9:
        case 
    11:
        
    $lastday 30;
        break;
        default:
           
    $lastday 31;
            break;
        case 
    3:
            
    $lastday 31;
            break;
        case 
    4:
            
    $lastday 30;
            break;
        case 
    5:
            
    $lastday 31;
            break;
        case 
    6:
            
    $lastday 30;
            break;
        case 
    7:
            
    $lastday 31;
            break;
        case 
    8:
            
    $lastday 31;
            break;
        case 
    9:
            
    $lastday 30;
            break;
        case 
    10:
            
    $lastday 31;
            break;
        case 
    11:
            
    $lastday 30;
            break;
        case 
    12:
            
    $lastday 31;
            break;
        default:
            
    $lastday 30;
        }

        
    $first_of_month mktime (0,0,0,$monat,1,$jahr);
        
    $last_of_month mktime (23,59,59,$monat,$lastday,$jahr);

        if (
    $monat 10$monat "0".$monat;

        
    $query_text "SELECT * FROM pphl_39585_logs WHERE time >= $first_of_month AND time <= $last_of_month ";

        
    $result mysql_query($query_text$db_link);
        
    $fieldcounts mysql_num_fields($result);
        for(
    $i 0$i $fieldcounts$i++) {
            
    $fieldtype mysql_fetch_field($result$i);
            if (
    $i < ($fieldcounts-1)) echo "$fieldtype->name [$fieldtype->type]\t";
                else  echo 
    "$fieldtype->name [$fieldtype->type]\n";
        }
        
    $myrow mysql_fetch_array($result);
        do {
            for(
    $i 0$i $fieldcounts$i++) {
                
    $fieldname mysql_field_name($result$i);
                if (
    $i < ($fieldcounts-1)) echo $myrow[$fieldname] . "\t";
                    else echo 
    $myrow[$fieldname] . "\n";
            }
        } while (
    $myrow mysql_fetch_array($result));
    ?>
    Link

    Für eine Hilfestellung wäre ich dankbar :-)

    Gruß Manuela
    Zuletzt geändert von manuelakersten; 01.12.2002, 22:44.

  • #2
    Es fehlt etweder ein Semikolon oedr ein Klammer. Schau mal dein Script durch.
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

    Kommentar


    • #3
      Hab es mal kurz überarbeitet und richtig eingerückt:
      PHP-Code:
      <?php
      Header
      ("Content-Type: application/vnd.ms-excel");
      $db_link mysql_connect("localhost""web152""morlock")or die("Keine Verbindung möglich!");
      mysql_select_db("usr_web152_1")or die("Auswahl der Datenbank fehlgeschlagen");
      function 
      csv_export($id)
          {
          
      $monat date("m"); $jahr date("Y");
          
      $monat $monat 1;
          if (
      $monat == 0)
              {
              
      $monat 12;
              
      $jahr $jahr 1;
              }
          switch (
      $monat)
              {
              case 
      1:
              
      $lastday 31;
              break;
              case 
      2:
              
      $lastday 28;// Schaltjahre beachten...
              
      break;
              case 
      4:
              case 
      6:
              case 
      9:
              case 
      11:
              
      $lastday 30;
              break;
              default:
              
      $lastday 31;
              break;
              case 
      3:
              
      $lastday 31;
              break;
              case 
      4:
              
      $lastday 30;
              break;
              case 
      5:
              
      $lastday 31;
              break;
              case 
      6:
              
      $lastday 30;
              break;
              case 
      7:
              
      $lastday 31;
              break;
              case 
      8:
              
      $lastday 31;
              break;
              case 
      9:
              
      $lastday 30;
              break;
              case 
      10:
              
      $lastday 31;
              break;
              case 
      11:
              
      $lastday 30;
              break;
              case 
      12:
              
      $lastday 31;
              break;
              default:
              
      $lastday 30;
              }
          
      $first_of_month mktime (0,0,0,$monat,1,$jahr);
          
      $last_of_month mktime (23,59,59,$monat,$lastday,$jahr);

          if (
      $monat 10$monat "0".$monat;

          
      $query_text "SELECT * FROM pphl_39585_logs WHERE time >= $first_of_month AND time <= $last_of_month ";

          
      $result mysql_query($query_text$db_link);
          
      $fieldcounts mysql_num_fields($result);
          for(
      $i 0$i $fieldcounts$i++)
              {
              
      $fieldtype mysql_fetch_field($result$i);
              if (
      $i < ($fieldcounts-1))
                  {
                  echo 
      "$fieldtype->name [$fieldtype->type]\t";
                  }
              else
                  {
                  echo 
      "$fieldtype->name [$fieldtype->type]\n";
                  }
              }
          
      $myrow mysql_fetch_array($result);
          do
              {
              for(
      $i 0$i $fieldcounts$i++)
                  {
                  
      $fieldname mysql_field_name($result$i);
                  if (
      $i < ($fieldcounts-1))
                      {
                      echo 
      $myrow[$fieldname] . "\t";
                      }
                  else
                      {
                      echo 
      $myrow[$fieldname] . "\n";
                      }
                  }
              }
          while (
      $myrow mysql_fetch_array($result));
          }
      ?>
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        ruf mal über console:

        describe pphl_39585_logs

        auf, das Ergebnis sieht dann in etwa so aus:
        Code:
        mysql> describe termine;
        +-------------+--------------+------+-----+---------------------+----------------+
        | Field       | Type         | Null | Key | Default             | Extra          |
        +-------------+--------------+------+-----+---------------------+----------------+
        | termId      | int(11)      |      | PRI | NULL                | auto_increment |
        | termStart   | datetime     |      |     | 0000-00-00 00:00:00 |                |
        | termEnd     | datetime     |      |     | 0000-00-00 00:00:00 |                |
        | termSubject | varchar(100) |      |     |                     |                |
        | termDetail  | text         | YES  |     | NULL                |                |
        | termLink    | varchar(100) |      |     |                     |                |
        | termUpdate  | datetime     |      |     | 0000-00-00 00:00:00 |                |
        +-------------+--------------+------+-----+---------------------+----------------+
        7 rows in set (0.00 sec)
        Mir geht es primär darum wie bei Dir das feld "time" definiert ist. Vielleicht weißt Du es auch so. Ist es zufällig vom Type datetime oder timestamp? Wenn ja kannst Du vermutlich auf die komplizierte Art und Weise wie Du das letzte Monat berechnest verzichten:
        http://www.mysql.com/doc/en/Date_and...functions.html

        d.h. Dein select könnte womöglich so lauten
        PHP-Code:
        query_text "SELECT * FROM pphl_39585_logs WHERE time >= DATE_SUB(now(), INTERVAL 1 MONTH)"
        und das ist alles

        Kommentar


        • #5
          Hab Dir Dein Skript etwas getuned, vielleicht funzt es auch bereits mit der Monatsabfrage.
          PHP-Code:
          <?php
          Header
          ("Content-Type: application/vnd.ms-excel");

          mysql_connect("localhost""web152""morlock")
                or print 
          "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";

          mysql_select_db("usr_web152_1")
                or print 
          "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";

          $query "SELECT * FROM pphl_39585_logs WHERE time >= DATE_SUB(now(), INTERVAL 1 MONTH)";

          $result mysql_query($query);
          $fieldcounts mysql_num_fields($result);

          for(
          $i 0$i $fieldcounts$i++) {
             
          $fieldtype mysql_fetch_field($result$i);
             echo 
          "$fieldtype->name [$fieldtype->type]\t";
          }
          echo 
          "\n";
             
          while (
          $myrow mysql_fetch_array($result)) {
              for(
          $i 0$i $fieldcounts$i++) {
                 
          $fieldname mysql_field_name($result$i);
                 echo 
          "$myrow[$fieldname]\t";
              }
              echo 
          "\n";
          }
          ?>

          Kommentar


          • #6
            Hallo Leute,

            danke für die Zahlreichen Antworten,
            jedoch bekomme ich bei dem letzten Script nur
            die Tabellenbezeichnungen angezeigt und nicht den Inhalte.

            Link

            Die Zeitangabe ist 'unix-timestamp' vielleicht gibt es ja noch die
            Möglichkeit im Excel-Export die Zeit als Datum/Uhrzeit sichtbar zu machen ?

            Danke Gruß Manuela

            Kommentar


            • #7
              und wenn DU anstatt
              PHP-Code:
              $query "SELECT * FROM pphl_39585_logs WHERE time >= DATE_SUB(now(), INTERVAL 1 MONTH)"
              diese query verwendest?
              PHP-Code:
              $query "SELECT * FROM pphl_39585_logs"

              Kommentar


              • #8
                Original geschrieben von manuelakersten
                Die Zeitangabe ist 'unix-timestamp' vielleicht gibt es ja noch die
                Möglichkeit im Excel-Export die Zeit als Datum/Uhrzeit sichtbar zu machen ?
                [/B]
                Ich nehme an Unix-Timestamp in einem Integer Feld (time [int]) tja, das erschwert die Sache in vieler Hinsicht.
                Wäre es Möglich das Feld "time" als datetime zu definieren? Ginge das noch? Dann stünden Dir alle Datumsberechnungsmöglichkeiten in einer einfachen Art und Weise offen.

                Kommentar


                • #9
                  mmmhhh,

                  bei zurecht gerücktem Script von Wotan
                  bekomme ich auch keinen Inhalt angezeigt.

                  Link

                  Komisch oder ?

                  Gruß Manuela

                  Kommentar


                  • #10
                    Irgendwie hab ich das Gefühl Du gehst nicht ganz auf meine Fragen ein - kann das sein?

                    Kommentar


                    • #11
                      Hallo Hand,

                      entschuldige bitte :-)

                      Nein kann ich leider nicht mehr umstellen,
                      da ich ca. 1500 User habe, jedenfalls wüsste ich nicht wie
                      ich es bei vorhandenen Einträgen ändern soll.

                      Desweiteren müsste ich das komplette Script umschreiben,
                      gibt es keine andere möglichkeit, egal wie groß das Script wird
                      es sollte nur funktionieren.


                      Danke nochmal

                      Gruß Manuela

                      Kommentar

                      Lädt...
                      X