[Apache, phpmyadmin, html, PHP, ...] Datenbank mit webbasiertem Zugriff erstellen

  • Ersteller Ersteller boss3D
  • Erstellt am Erstellt am
teatprodid bekommt er durch den check (bei mir heisst das auch ganz simpel projektid ^^ oder eben kurz prID). entweder er findet einen eintrag, dann nimmt er dessen id als "prID" oder er erstellt eben das projekt neu, und nimmt die id des zuletzt eingetragenen. in beiden fällen hat er dann ne projektid.

und wegen dem if($check) - ich hab doch keinen blassen ob das so funzt. deswegen solltest du das berichtigen ^^ mit den alten (ach so pösen) mysql funktionen hätte ich nach num_rows() gefragt. aber ich hab keinen blasse, wie das mit den neuen funktionen geht. sinn dieser if wäre es, einfach rauszufinden, OB die anfrage ein ergebnis liefert oder ob das ergebnis leer ist. wie gesagt, mit diesem mysqli hab ich keine erfahrung selber, daher darfste das gerne berichtigen, dass die if ihrer bestimmung nachgeht.

beim checken der tage dann natürlich das selbe in grün ^^
 
^^ Ob wir nun ...

$row = mysqli_fetch_assoc($check); // oder
$row = mysqli_num_rows($check); // oder
$row = num_rows($check);

... sagen, macht alles gar keinen Unterschied. :(

INSERT funktioniert jedenfalls immer. UPDATE und DELETE gar nicht. Ich probiere morgen in der Arbeit noch weiter rum. Bis am Abend haben wir den Fehler hoffentlich gefunden. Dann bliebe noch 1 Tag, um die Excel-Ausgabe zu richten ...

[EDIT]
Einen Fehler habe ich noch gerade gesehen: Beim Auswerten wird scheinbar nur die Anzahl der Zeitwerte gezählt, aber nicht überprüft, an welchen Tagen sich diese befinden. Habe ich z. B. für MO und DI was eingetragen, wird bis 2 gezählt und mir dann auch die Werte bei MO und DI angezeigt.
Habe ich aber z. B. bei MI und DO was eingetragen, wird ebenfalls bis 2 gezählt, dann aber nur zwei leere Felder bei MO und DI angezeigt. Erst wenn ich dann auf "edit" klicke, kriege ich die Werte in MI und DO zu sehen. *seufz*

Das liegt wohl irgendwo hierin in auswerten(2).php, aber ich krieg's trotz allem Rumprobieren nicht raus:
PHP:
for ($i = 0; $i < count($td); $i++) {
    echo '    <td>'.$td[$i].'</td>';
}
Und da kriege ich ja auch diese Meldung her, wobei die Zahl variiert:
Notice: Undefined offset: 3 in C:\xampp\htdocs\db\auswerten.php on line 107
:huh:
 
Zuletzt bearbeitet:
mein problem is, morgen und 2 tage später is prüfung :/ ich kann erstmal nich mehr :( und scheinbar isses danach zu spät :/
 
Okay, dann bleibt mir nichts anderes, als das ganze "edit"/"save" Zeugs wieder rauszuschmeißen und den Zustand von davor herzustellen. Ich selber krieg's leider nicht raus, warum's nicht geht. Hab ja jetzt drei Tage selber gesucht und rumprobiert ... :(

Morgen Mittag muss es jedenfalls allerspätestens in einem fehlerfreien und benutzbaren Zustand sein. Dann eben leider ohne EDIT.

Ich probiere jetzt nochmal Tessa's Ansatz mit der vorbelegten Zeile. Da hatte ich ja schon ein bisschen was. Vielleicht kriege ich das noch hin ...
 
Zuletzt bearbeitet:
haste mal das mit num rows probiert? also statt if(check) ein if(num rows(check))? generell, lass mir den jetzigen stand nochmal plz zukommen als zip/rar... wenn ich wieder mehr zeit hab, kann ichs mir nochmal in ruhe anschauen.
 
mit GIT wäre das nicht passiert ;) *duckundwech*

dann könntest du zurückgehen, zu 10 oder wieviele auch immer Ständen vorher
 
@ DOcean
Da habe ich wenig Probleme, weil ich eh immer nach jedem größeren Arbeitsschritt die Codes hier als zip upgeloaded habe. Habe mein funtkionierendes schon längst wieder ... ;)

BTW ist mir gerade noch eingefallen: Der Excel-Export müsste auch noch gerichtet werden, sieht ja grausig aus:

Unbenannt.PNG

^^ Ich weiß aber leider nicht, wieso mir der die gesamte Seite mit allen Buttons und sonstigem Zeugs exportiert. :what: Das muss irgendwie an DarkMo's Ansatz liegen?! Früher, bei meinen "Chaos Codes", hat zumindest Excel noch vernünftig ausgesehen.
-----------

@ DarkMo

1) Funktionierende Version ohne EDIT --> Anhang anzeigen db.7z

2) Fehlerhafte Version mit EDIT --> Anhang anzeigen db.7z

Nein, das aus deinem letzten Posting muss ich erst noch probieren ...

[EDIT]
Mit num_rows($check) läuft's auch nicht besser. Dann funktionieren DELETE und INSERT nicht. Scheint sogar egal zu sein, ob ich's negiere oder nicht. Kurios.
 
Zuletzt bearbeitet:
Ich habe jetzt versucht, eine vorbelegte Zeile zu basteln, aber beim Auslesen/Ausgeben der Tätigkeit, des Produkts und einer möglicherweise eingegebenen Zeit scheitert es gewaltig. Das einzige, das funktioniert, ist das Vorbelegen der Beschreibung ...
PHP:
 <?php    
    echo '<table>';

    $taetigkeiten = array();
    $res_t = mysqli_query($mysqli, "SELECT * FROM taetigkeiten;") or die ("Get Taetigkeiten failed.<br>".mysqli_error());
    if (mysqli_num_rows($res_t))
        while ($row_t = mysqli_fetch_assoc($res_t)) {
            $taetigkeiten[count($taetigkeiten)] = $row_t;
        }

    $products = array();
    $res_p = mysqli_query($mysqli, "SELECT * FROM produkte;") or die ("Get Produkte failed.<br>".mysqli_error());
    if (mysqli_num_rows($res_p))
        while ($row_p = mysqli_fetch_assoc($res_p)) {
            $products[count($products)] = $row_p;
        }
        
    $zeiten = array();
    $res_z = mysqli_query($mysqli, "SELECT zeit FROM zeiten;") or die ("Get Zeiten failed.<br>".mysqli_error());
    if (mysqli_num_rows($res_z))
        while ($row_z = mysqli_fetch_assoc($res_z)) {
            $zeiten[count($zeiten)] = $row_z;
        }
    
    //$queryid = mysqli_insert_id();
    $taetid = mysqli_query($mysqli, "SELECT taetigkeit FROM projekte WHERE id=140;");
    $row_taetid = mysqli_fetch_row($taetid); 
    $prodid = mysqli_query($mysqli, "SELECT produkt FROM projekte WHERE id=140;");
    $row_prodid = mysqli_fetch_row($prodid);
    $beschid = mysqli_query($mysqli, "SELECT beschreibung FROM projekte WHERE id=140;");
    $row_beschid = mysqli_fetch_row($beschid);
    
    for ($a = 1; $a <= 1; $a++) {
        echo '<tr><td><select name="taetigkeit'.$a.'">';
        foreach ($taetigkeiten as $taetigkeit) {    
            if ($taetigkeiten[$row_taetid] == $_POST['taetigkeit']) {
                echo '<option value="'.$taetigkeit[$row_taetid].'" selected>'.$taetigkeit['taetigkeit'].'</option>';
            } else {
                echo '<option value="'.$taetigkeit['id'].'">'.$taetigkeit['taetigkeit'].'</option>';  
            }         
        }
        echo '</select></td>';

        echo '<td><select name="product'.$a.'">';
        foreach ($products as $product) {
            if ($product[$row_prodid] == $_POST['product']) {
                echo '<option value="'.$product[$row_prodid].'" selected>'.$product['produkt'].'</option>';
            } else {
                echo '<option value="'.$product['id'].'">'.$product['produkt'].'</option>';;  
            }
        }
        echo '</select></td>';

        echo '<td><input name="beschreibung'.$a.'" value="'.$row_beschid[0].'" type="text" size="50" maxlength="250"></td>';

        /*for ($i = 0; $i < 7; $i++) {
            $ts = $wochenanfang + ($i * 60 * 60 * 24);
            if ($zeiten[$ts] == $_POST[$ts]) {
                echo ' <td><input type="text" name="'.$ts.'_'.$a.'" value="'.$zeiten[$ts].'" maxlength="6" size="4"></td>';
            } else {
                echo ' <td><input type="text" name="'.$ts.'_'.$a.'" maxlength="6" size="4"></td>';
            }
        }*/
    } 
    echo '</table><br>';
Der Code liefert bei Tätigkeit und Produkt immer das letzte aus dem Dropdown, aber nicht das vorher ausgewählte und in der DB gespeicherte.

Irgendwas hat's also hier bei irgendeinem Index:
PHP:
echo '<tr><td><select name="taetigkeit'.$a.'">';
foreach ($taetigkeiten as $taetigkeit) {    
    if ($taetigkeiten[$row_taetid] == $_POST['taetigkeit']) {
        echo '<option value="'.$taetigkeit[$row_taetid].'" selected>'.$taetigkeit['taetigkeit'].'</option>';
    } else {
        echo '<option value="'.$taetigkeit['id'].'">'.$taetigkeit['taetigkeit'].'</option>';  
    }         
}
echo '</select></td>';

echo '<td><select name="product'.$a.'">';
foreach ($products as $product) {
    if ($product[$row_prodid] == $_POST['product']) {
        echo '<option value="'.$product[$row_prodid].'" selected>'.$product['produkt'].'</option>';
     } else {
         echo '<option value="'.$product['id'].'">'.$product['produkt'].'</option>'; 
     }
}
echo '</select></td>';
 
Zuletzt bearbeitet:
Was, so?
PHP:
if ($taetigkeiten[$row_taetid] == $_POST[$row_taetid]) {
Das ändert gar nichts ...

Und folgendes würde mir wieder die erste Tätigkeit anzeigen, also auch nicht stimmen:
PHP:
if ($row_taetid == $_POST['taetigkeit']) {
[EDIT]
Es ist ja bei Zeit der selbe Schmarrn, da weiß ich auch nicht, wie ich zu den jeweiligen Feldern kommen soll. Dieses ts_a mag er jedenfalls nicht:
PHP:
for ($i = 0; $i < 7; $i++) {
     $ts = $wochenanfang + ($i * 60 * 60 * 24);
     if ($zeiten[$ts.'_'.$a] == $_POST[$ts.'_'.$a]) {
         echo ' <td><input type="text" name="'.$ts.'_'.$a.'" value="'.$zeiten[$ts].'" maxlength="6" size="4"></td>';
     } else {
         echo ' <td><input type="text" name="'.$ts.'_'.$a.'" maxlength="6" size="4"></td>';
     }
}
^^ Da kommt das hier:

Unbenannt.PNG

[EDIT2]
Ich hätte jetzt auch noch deinen Error-Vorschlag-Code probiert, aber der macht auch nichts, außer Notices zu liefern ... :(
PHP:
if (isset($_POST['confirm'])) {
        $errors = array();
        for ($a = 1; $a <= $add; $a++) {

            $index = count($errors);
            $errors[$index] = array();
            // form-check
            if(!isset($_POST['taetigkeit'.$a]) or $_POST['taetigkeit'.$a] == 0) {
                $form_ok = false;
                $errors[$index]['t'] = $_POST['taetigkeit'.$a];
            }
            if(!isset($_POST['produkt'.$a]) or $_POST['produkt'.$a] == 0) {
                $form_ok = false;
                $errors[$index]['p'] = $_POST['produkt'.$a];
            }
            // alles weitere sind keine pflicht-angaben

            // eintragen
            if($form_ok) {
                $eintragen1 = mysqli_query($mysqli, "INSERT INTO projekte (taetigkeit, produkt, userid, beschreibung, erstellt) VALUES ('".$_POST['taetigkeit'.$a]."', '".$_POST['product'.$a]."', '$userid', '".$_POST['beschreibung'.$a]."', '$erstellt');");  
                $taetprodid = mysqli_insert_id($mysqli);
        
                for ($b = 0; $b < 7; $b++) {
                    $ts = $wochenanfang + ($b * 60 * 60 * 24);
                    if (isset($_POST[$ts.'_'.$a]) and $_POST[$ts.'_'.$a] != "") {
                        $dauer = $_POST[$ts.'_'.$a];                              
                        $eintragen2 = mysqli_query($mysqli, "INSERT INTO zeiten (userid, taetprodid, zeit, datum) VALUES ('$userid', '$taetprodid', '$dauer', '$ts');");
                    }
                }
                // wenn alles ok, war, brauchen wir die "fehlerzeile" nicht
                unset($errors[$index]);
            } else {
                // sollte die form doch fehler enthalten haben, speicher den rest auch (egal ob leer oder angegeben)
                if(isset($_POST['beschreibung'.$a])) $errors[$index]['b'] = $_POST['beschreibung'.$a];
                $errors[$index]['d'] = array(); // d wie days ^^
                for ($b = 0; $b < 7; $b++) {
                    $ts = $wochenanfang + ($b * 60 * 60 * 24);
                    if(isset($_POST[$ts.'_'.$a])) $errors[$index]['d'][$b] = $_POST[$ts.'_'.$a];
                }
            }
        }
        // am ende noch add so manipulieren, dass wir genug platz haben, um unsere "fehlerzeilen" einzutragen
        $add = count($errors);
    }
 
Zuletzt bearbeitet:
Zum Excel-Problem hatte ich schonmal was geschrieben, ist bestimmt untergegangen. In der Datei index.php werden ja u. A. die Dateien html_header.php, html_footer.php und projektzeiterfassung.php includet. Dies passiert auch dann, wenn exportiert werden soll. Zur Lösung also einfach diese Dateien nur dann includen, wenn $_POST['export'] nicht gesetzt ist.
 
^^ Nein, das hat das Problem leider nicht gelöst. :(
Zumindest nicht so, wie ich das jetzt umgesetzt habe ...

index.php
PHP:
<?php
    session_start();
    session_regenerate_id();

    include('config.php');
    include('formular.php');
    if (!isset($_POST['export'])) {
        include('html_header.php');
    }

    if (!isset($_SESSION['name'])) {
        if (isset($_POST['btnRegForm']) or $section == "register") {
            include('registrieren.html');
        } else {
            include('login.html');
        }
    } else {
        if (isset($_POST['auswerten']) or $section == "output") {
            include('auswerten.php');
        } elseif (isset($_POST['auswertenadmin']) or $section == "output_admin") {
            include('auswerten2.php');
        } else {
            include('projektzeiterfassung.php');
        }
    }
    
    if (!isset($_POST['export'])) {
        include('html_footer.php');
    }
Und in formular.php habe ich das hier reingegeben:
PHP:
if (isset($_POST['export'])) {
     include('export.php');
}
Sieht immer noch so aus:

Capture.JPG

Und was ich auch nicht verstehe: Warum wird bei Kommazahlen (also z. B. 3.5 h) ein Datum statt der Kommazahl nach Excel exportiert?

:huh:

[EDIT]
Ich glaube eher, dass da im Code von export.php selbst was schief läuft?!
PHP:
<?php       
    $header = '';
    $result ='';
    $exportData = mysqli_query($mysqli, "SELECT * FROM projekte, zeiten") or die ("Sql error : ".mysqli_error());
     
    $fields = mysqli_num_fields($exportData);
     
    for ($i = 0; $i < $fields; $i++) {
        $header .= mysql_field_name($exportData, $i)."\t";
    }
     
    while ($row = mysql_fetch_row($exportData)) {
        $line = '';
        foreach ($row as $value) {
            if ((!isset($value)) || ($value == "")) {
                $value = "\t";
            } else {
                $value = str_replace('"', '""', $value);
                $value = '"'.$value.'"'."\t";
            }
            $line .= $value;
        }
        $result .= trim($line)."\n";
    }
    $result = str_replace("\r", "", $result);
     
    if ($result == "") {
        $result = "\nNo Record(s) Found!\n";
    }
     
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=".$user.".xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    print "$header\n$result";
 
Zuletzt bearbeitet:
hmm, das könnte sone autoersetzung sein. notfalls, probiers mal den . durch nen , zu ersetzen -> PHP: str_replace - Manual
also wenn row['zeit'] bspw diese 5.3 sind, dann gib nicht row direkt aus, sondern str_replace('.', ',', row['zeit']);
 
Folgendes noch ändern, damit die Buttons nicht mehr angezeigt werden

PHP:
  } elseif(!isset($_POST['export'])) {
     include('projektzeiterfassung.php');
  }

Alles weitere kann ich gerade momentan nicht testen.
 
@ BenRo
Nein, das geht leider nicht. Da müssen wir durch DarkMo's Aufbau sehr vorsichtig sein, das wirkt sich nämlich auf alles aus ...

Du hast gemeint, das in formular.php anzuhängen?! So:
PHP:
if (isset($_POST['export'])) {
     include('export.php');
} elseif(!isset($_POST['export'])) {
     include('projektzeiterfassung.php');
}
Liefert gleich mal:

Capture.JPG

@ DarkMo
Ich durchschau den export.php-Code leider absolut gar nicht. Oder anders gesagt: Er macht nicht das, was ich mir anhand der Code-Zeile erwarten würde. Ein row['zeit'] gibt's darin jedenfalls nicht. Ich google noch, ob ich was besseres zum Exportieren finde ...
 
Nein, ich meinte die entsprechenden Zeilen in index.php zu ändern:
PHP:
 <?php
    session_start();
    session_regenerate_id();

    include('config.php');
    include('formular.php');
    if (!isset($_POST['export'])) {
        include('html_header.php');
    }

    if (!isset($_SESSION['name'])) {
        if (isset($_POST['btnRegForm']) or $section == "register") {
            include('registrieren.html');
        } else {
            include('login.html');
        }
    } else {
        if (isset($_POST['auswerten']) or $section == "output") {
            include('auswerten.php');
        } elseif (isset($_POST['auswertenadmin']) or $section == "output_admin") {
            include('auswerten2.php');
        } elseif(!isset($_POST['export'])) { // hier
            include('projektzeiterfassung.php');
        }
    }
    
    if (!isset($_POST['export'])) {
        include('html_footer.php');
    }
 
^^ Nutzt auch nichts. Das ist alles Katastrophe ... ich hoffe, ich finde wenigstens für den Export morgen noch schnell eine funktionierende Lösung ...

Capture.JPG

Der Fehler an der jetzigen Version liegt ziemlich sicher in export.php selbst und nicht an was anderem.
 
@ DarkMo
... Ein row['zeit'] gibt's darin jedenfalls nicht ...
nimm doch nich immer alles so wörtlich >< ich hab doch ausm kopf jetz keinen plan, wie bei dir die spalte für die zeit hieß bzw wie wir die abgefragt hatten ^^ ich hatte einfach nur gehofft, mit row (wohl irgendein db wert) und zeit (wohl der db wert, der sich um die zeit dreht) könnte ich da unkompliziert und dennoch verständlich aus der affäre kommen :P
 
row['zeit'] müsste sogar wortwörtlich stimmen, aber was mir das jetzt im Code nutzen soll ... Der holt sich alle (*) Daten aus der DB und wurschtelt das dann durch die Schleifen, bis er einen Ausgabe-Stream hat, so wie ich das verstehe. Wo konkret ich da das Ausgabeformat der Zeit ändern könnte, falls überhaupt, weiß ich nicht.

Ich suche jetzt lieber mal nach alternativen Lösungen für den Export ...

[EDIT]
Habe jetzt mehrere Codes durchprobiert. Die anderen hatten zwar auch zig Fehler und haben keine Daten geliefert, aber zumindest optisch im Excel korrekt ausgesehen. Jetzt habe ich eine verkürzte Version des "alten" Codes:
PHP:
<?php 
    while ($row = mysql_fetch_row($export)) { 
        $line = ''; 
        foreach ($row as $value) {                                             
            if ((!isset($value)) OR ($value == "")) { 
                $value = "\t"; 
            } else { 
                $value = str_replace('"', '""', $value); 
                $value = '"' . $value . '"' . "\t"; 
            } 
            $line .= $value; 
        } 
        $data .= trim($line)."\n"; 
    } 
    $data = str_replace("\r","",$data);  

    header("Content-type: application/octet-stream"); 
    header("Content-Disposition: attachment; filename=extraction.xls"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    print "$header\n$data";
^^ Aber dieser exportiert wieder alles, also auch Buttons und so Zeugs. Wobei's mich irritiert, dass sich das File irgendwie "selbst zu exportieren" scheint, oder warum wird es in mysql_fetch_rows aufgerufen? Bzw. was soll das sonst für eine Variable $export sein? Wo kommt die her?

[EDIT2]
Au, Mann, ist das zum Kotzen ...

Dieser Code ...
PHP:
<?php     
    $result = mysqli_query($mysqli, "SELECT * FROM projekte, zeiten;");
     
    $out = '';
     
    $fields = mysqli_num_rows($result);
     
    $columns = mysqli_num_fields($fields);
     
    for ($i = 0; $i < $columns; $i++) {
        $l = mysqli_field_name($fields, $i);
        $out .= '"'.$l.'",';
    }
    $out .= "\n";
     

    while ($l = mysqli_fetch_array($result)) {
        for ($i = 0; $i < $columns; $i++) {
            $out .= '"'.$l["$i"].'",';
        }
        $out .= "\n";
    }
     
    $f = fopen('export.csv','w');
     
    fputs($f, $out);
    fclose($f);
     
    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename="export.csv"');
    readfile('export.csv');
... gibt auch alles aus, aber in html-Codeform.

Unbenannt.PNG

[EDIT3]
Der Code ...
PHP:
<?php
    $DB_Server = "localhost"; //MySQL Server 
    $DB_Username = "root"; //MySQL Username 
    $DB_Password = "root";             //MySQL Password 
    $DB_DBName = "projektzeiterfassung";         //MySQL Database Name 
    $DB_TBLName = "projekte"; //MySQL Table Name
    $filename = "export";         //File Name

    $sql = "Select * from $DB_TBLName";
    $Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die ("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());

    $Db = @mysql_select_db($DB_DBName, $Connect) or die ("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());

    $result = @mysql_query($sql,$Connect) or die ("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());

    $file_ending = "xls";

    header("Content-Type: application/xls");
    header("Content-Disposition: attachment; filename=$filename.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    $sep = "\t";

    for ($i = 0; $i < mysql_num_fields($result); $i++) {
        echo mysql_field_name($result,$i) . "\t";
    }

    print("\n");

    while ($row = mysql_fetch_row($result)) {
        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$j++) {
            if (!isset($row[$j]))
                $schema_insert .= "NULL".$sep;
            elseif ($row[$j] != "")
                $schema_insert .= "$row[$j]".$sep;
            else
                $schema_insert .= "".$sep;
        }
        $schema_insert = str_replace($sep."$", "", $schema_insert);
        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
        $schema_insert .= "\t";
        print(trim($schema_insert));
        print "\n";
    }
... liefter wieder sowas hier:

Unbenannt.PNG

^^ Was hat's da bloß? :huh:

Scheint jedenfalls nicht an den Codes selbst zu liegen, sondern doch an was anderem, dass ständig die gesamte Seite exportiert wird, anstatt nur dem DB-Inhalt ...
 
Zuletzt bearbeitet:
Ich war zu Faul zum nachdenken und probiere es mal mit der Guttenbergmethode (Str+C und Strg+V)

PHP:
<?php

$select = "SELECT * FROM TABLE_NAME";                  
$export = mysql_query($select);  
$fields = mysql_num_fields($export); 

for ($i = 0; $i < $fields; $i++) {  
    $header .= mysql_field_name($export, $i) . "\t";  
}  
while($row = mysql_fetch_row($export)) {  
    $line = '';  
    foreach($row as $value) {                                              
        if ((!isset($value)) OR ($value == "")) {  
            $value = "\t";  
        } else {  
            $value = str_replace('"', '""', $value);  
            $value = '"' . $value . '"' . "\t";  
        }  
        $line .= $value;  
    }  
    $data .= trim($line)."\n";  
}  
$data = str_replace("\r","",$data); 

if ($data == "") {  
    $data = "\n(0) Records Found!\n";                          
}
header("Content-type: application/octet-stream");  
header("Content-Disposition: attachment; filename=extraction.xls");  
header("Pragma: no-cache");  
header("Expires: 0");  
print "$header\n$data"; 

?>
 
Zurück