Thread Verfasser: Catzenjaeger
Thread ID: 1081
Thread Info
Es gibt 21 Beiträge zu diesem Thema, und es wurde 14970 Mal angesehen.  Ausserdem wurden Dateien angehängt.

 Thema drucken
DB Abfrage als Excel ausgeben
Catzenjaeger
ich suche schon seit Stunden einen Möglichkeit wie ich eine DB Abfrage als Excel mit Hilfe eines Buttons (Export to Excel) ausgeben kann.
kann mir da jemand helfen?

Die meisten Scripte die ich dazu gefunden habe sind uralt und funzen nicht

Hab mal das hier eingebaut aber da kommt nur mist

Code 

   $result = dbquery("SELECT 
                           tb.figure_id,
                           tb.figure_submitter,
                           tb.figure_freigabe,
                           tb.figure_pubdate,
                           tb.figure_scale,
                           tb.figure_title,
                           tb.figure_manufacturer,
                           tb.figure_brand,
                           tb.figure_datestamp,
                           tb.figure_cat,
                           tbc.figure_cat_id,
                           tbc.figure_cat_name,
                           tbu.user_id,
                           tbu.user_name,
                           tbu.user_status,
                           tbu.user_avatar,
                           tbm.figure_manufacturer_name,
                           tbb.figure_brand_name,
                           tbs.figure_scale_id,
                           tbs.figure_scale_name,                      
                           fuf.figure_userfigures_figure_id,
                           fuf.figure_userfigures_user_id
                        FROM ".DB_FIGURE_ITEMS." tb
                        LEFT JOIN ".DB_USERS." tbu ON tb.figure_submitter=tbu.user_id
                        INNER JOIN ".DB_FIGURE_USERFIGURES." fuf ON fuf.figure_userfigures_figure_id=tb.figure_id
                        INNER JOIN ".DB_FIGURE_CATS." tbc ON tb.figure_cat=tbc.figure_cat_id
                        INNER JOIN ".DB_FIGURE_MANUFACTURERS." tbm ON tbm.figure_manufacturer_id = tb.figure_manufacturer
                        INNER JOIN ".DB_FIGURE_BRANDS." tbb ON tbb.figure_brand_id = tb.figure_brand
                        INNER JOIN ".DB_FIGURE_SCALES." tbs ON tbs.figure_scale_id = tb.figure_scale
                        ".(multilang_table("FI") ? "WHERE figure_language='".LANGUAGE."' AND" : "WHERE")." tb.figure_freigabe='1' AND ".groupaccess("tb.figure_visibility")."
                        AND figure_userfigures_user_id='".$userdata['user_id']."'
                        LIMIT ".$_GET['rowstart'].",".$figurelibSettings['figure_per_page']."
                        ");
                                 while($data = dbarray($resultlast)){

$current = $row->$data['figure_title']."\t".$row->$data['figure_manufacturer_name']."\t".$row->$data['figure_brand_name']."\n";
                                       file_put_contents('MyAlienCollection.xls', $current);
header('Refresh: 0; url=MyAlienCollection.xls'); 


Bearbeitet von Catzenjaeger am 03.10.2016 um 16:54
 
Rolly8-HL
Vielleicht kann das ja weiter helfen.
https://www.php.de/forum/webentwicklu...post744559
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
Zitat: Rolly8-HL schrieb:

Vielleicht kann das ja weiter helfen.
https://www.php.de/forum/webentwicklu...post744559


genau von dort habe ich es ja :) geht aber nicht

es geht einen excel auf aber ohne inhalt .. egal wie ich diese zeile hier schreibe:

also ob so:

Code 

$current = $row->$data['figure_title']."\t".$row->$data['figure_manufacturer_name']."\t".$row->$data['figure_brand_name']."\n";
                                       file_put_contents('MyAlienCollection.xls', $current);


oder so:

Code 

$current = $row->figure_title."\t".$row->figure_manufacturer_name."\t".$row->figure_brand_name."\n";

 
Rolly8-HL
Um in eine Datei etwas rein schreiben zu können muss diese erst einmal zum schreiben geöffnet werden.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
:( ich kanns nicht .. beschäftige mich seit Stunden damit und bekomme es nicht hin ... ich würde es auch zu einen PDF ausgeben .. auch das bekomme ich nicht hin. Will einfach nur das was in einer usercollection steht als Liste für den User ausgeben (als Excel und PDF)

Am besten via Button druck

Code 

               
                                 $current = $data->f.figure_title."\t".$data->fbm.figure_manufacturer_name."\t".$data->fbb.figure_brand_name."\n";
                                       file_put_contents('MyAlienCollection.xls', $current);
                                       header('Refresh: 0; url=MyAlienCollection.xls');   



so kommt zumindest schon einmal das raus:

figure_title figure_manufacturer_name figure_brand_name
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Catzenjaeger am 03.10.2016 um 20:03
 
Rolly8-HL
Ist ja Richtig, aber wie willst Du was wo hin schreiben wenn nichts da ist oder nicht beschreibbar.
http://www.php-kurs.com/dateien-mit-p...aehler.htm[url]
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=218&group=38[/url]

So etwas wie das meinte ich.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
figure_title figure_manufacturer_name figure_brand_name


das bekomme ich jetzt raus wenn ich das nehme

Code 

$current = $data->f.figure_title."\t".$data->fbm.figure_manufacturer_name."\t".$data->fbb.figure_brand_name."\n";
                                       file_put_contents('MyAlienCollection.xls', $current);
                                       header('Refresh: 0; url=MyAlienCollection.xls'); 



danke für den link aber ich kappier daas ganze nicht damn
 
Rolly8-HL
Es geht ja nicht darum WAS Du da rein haben willst, sondern das da erst ein mal überhaupt was rein kommt.

Schau Dir doch mal das mit "robots.txt-Datei bearbeiten" gemacht haben, sollte in etwa das sein was Du suchst.

Kenne mich nicht Direkt damit aus, denke aber mal erst Datei erzeugen (erstellen) dann öffnen zum schreiben dann beschreiben dann schließen dann aufrufen dann löschen (wenn nötig)

Zitat: 
Eine neue Datei anzulegen ist mithilfe der Funktionen fopen() und fwrite() recht einfach.

Code 

$datei = fopen("daten.txt","w");
echo fwrite($datei, "Hallo Welt",100);
fclose($datei);


Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
ich raffe es nicht. Die Daten liegen doch schon vor sie müssen doch
nur eingetragen werden. Mein Code oben macht zumindest einen Zeile aber nicht mit den richtigen Daten
 
Rolly8-HL
Bis eben war sie für mich noch leer.

Es gibt aber auch noch andere Möglichkeiten wie "while" vielleicht geht es in diesem Fall so damit nicht.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
wenn ich das hier unter meine vorhandene DB Abfrage einbaue

Zitat: $current = $data->f.figure_title."\t".$data->fbm.figure_manufacturer_name."\t".$data->fbb.figure_brand_name."\n";
file_put_contents('MyAlienCollection.xls', $current);
header('Refresh: 0; url=MyAlienCollection.xls');


kommt das hier in einer excel raus:

Zitat: figure_title | figure_manufacturer_name | figure_brand_name


heisst hier kommt ja anscheinend irgendwas
 
Rolly8-HL
Ist schon mal ein Anfang, aber warum dieser Unterschied?
Zitat: $result = dbquery("SELECT
while($data = dbarray($resultlast)){

Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
Das war wohl ein Tippfehler

meine Abfrage:

Code 

                        $result = dbquery("SELECT 
                           tb.figure_id,
                           tb.figure_submitter,
                           tb.figure_freigabe,
                           tb.figure_pubdate,
                           tb.figure_scale,
                           tb.figure_title,
                           tb.figure_manufacturer,
                           tb.figure_brand,
                           tb.figure_datestamp,
                           tb.figure_cat,
                           tbc.figure_cat_id,
                           tbc.figure_cat_name,
                           tbu.user_id,
                           tbu.user_name,
                           tbu.user_status,
                           tbu.user_avatar,
                           tbm.figure_manufacturer_name,
                           tbb.figure_brand_name,
                           tbs.figure_scale_id,
                           tbs.figure_scale_name,                      
                           fuf.figure_userfigures_figure_id,
                           fuf.figure_userfigures_user_id
                        FROM ".DB_FIGURE_ITEMS." tb
                        LEFT JOIN ".DB_USERS." tbu ON tb.figure_submitter=tbu.user_id
                        INNER JOIN ".DB_FIGURE_USERFIGURES." fuf ON fuf.figure_userfigures_figure_id=tb.figure_id
                        INNER JOIN ".DB_FIGURE_CATS." tbc ON tb.figure_cat=tbc.figure_cat_id
                        INNER JOIN ".DB_FIGURE_MANUFACTURERS." tbm ON tbm.figure_manufacturer_id = tb.figure_manufacturer
                        INNER JOIN ".DB_FIGURE_BRANDS." tbb ON tbb.figure_brand_id = tb.figure_brand
                        INNER JOIN ".DB_FIGURE_SCALES." tbs ON tbs.figure_scale_id = tb.figure_scale
                        ".(multilang_table("FI") ? "WHERE figure_language='".LANGUAGE."' AND" : "WHERE")." tb.figure_freigabe='1' AND ".groupaccess("tb.figure_visibility")."
                        AND figure_userfigures_user_id='".$userdata['user_id']."'
                        LIMIT ".$_GET['rowstart'].",".$figurelibSettings['figure_per_page']."
                        ");
                        



dann mein Code der einen Excel erstellt

Code 

while($data = dbarray($result)){
               
                                 //$current = $data->f.figure_title."\t".$data->fbm.figure_manufacturer_name."\t".$data->fbb.figure_brand_name."\n";
                                 //      file_put_contents('MyAlienCollection.xls', $current);
                                 //      header('Refresh: 0; url=MyAlienCollection.xls'); 
}



aber wie gesagt es kommt nich das was ich erwartete .. hier muss sicher sowas wie i++ oder so hin.. aber wie das geht weis ich eben nicht.

Mein Ziel ist es 2 Buttons zu machen der die gleichen daten die auf dem Bildschirm zu sehen sind ... einmal als Excel/CSV Daten ausgibt und einmal als PDF. Das wäre mein Traum.

Bis jetzt kommt nur eine Zeile
figure_title | figure_manufacturer_name | figure_brand_name
 
John Doe
Im Grunde ist ein CSV-Export direkt aus der Datenbank kein so grosses Problem. Versuch es mal mit dem Code hier. Einfach als zb "csv-export.php" speichern nachdem du deine Änderungen vorgenommen hast und verlinken über zb einen Button. Wichtig: Es darf in dieser Datei kein echo oder sonstiger Code hinterlegt werden!

Ich habe den Code mal vor längerer Zeit geschrieben als Mitgliederliste die ich bzw der Kunde als CSV benötigte. Das Ding hat alle (angegebenen) Profildaten ausgelesen und entsprechend ausgegeben. Sollte aber mit kleinen Anpassungen auch für dich brauchbar sein.

Code 

<?php

define("select_table", "präfix_tabelle");  // z.B. "fusionj7i6e_users" für die User
define("csv_delimeter", ";"); // Trennzeichen
define("db_user", "datenbankuser"); // Username
define("db_password", "datenbankpasswort");  // Passwort
define("db_server", "localhost");  // Host
define("db_db_name", "datenbankname");  // Name der Datenbank
           
mysql_connect(db_server, db_user, db_password) or die(mysql_error());
mysql_select_db(db_db_name) or die(mysql_error());

// Datenbankabrfrage. Hier wird die Userdatenbank abgefragt, entsprechend bitte ändern!
$sql = "SELECT user_fax, user_identnr, user_firma, user_vorname, user_nachname, user_strasse, user_plz, user_location "
        ."FROM " . select_table . " ORDER by user_fax ASC "
        ."LIMIT 65534 ";

// Umwandlung zum Windows-Charset                 
function convertToWindowsCharset($string) {
  $charset =  mb_detect_encoding(
    $string,
    "UTF-8, ISO-8859-1, ISO-8859-15",
    true
);
 
$string =  mb_convert_encoding($string, "Windows-1252", $charset);
  return $string;
}
                 
$result = mysql_query($sql) or die(mysql_error());

$result_row = array();
while ( $array_result = mysql_fetch_assoc($result) )
    {
       if ( empty($result_row) )
      {
        $result_row[] = "";
        $row_data = array();
        $index = count($result_row)-1; // Index holen
                   
        foreach ( array_keys($array_result) as $key_name )
          {
             $row_data[] .= "\"" . $key_name . "\"";
          }
                  $result_row[$index] = implode(csv_delimeter, $row_data);
                    unset($row_data);
      }
               
                $result_row[] = "";
                $row_data = array();
                $index = count($result_row)-1;
                foreach ( $array_result as $key => $value )
                {
                  $row_data[] .= "\"" . $value . "\"";
                }
                $result_row[$index] = implode(csv_delimeter, $row_data);
                unset($row_data);
    }

header('Content-Type: text/x-csv');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
//Hier wird die Datei zum Download angeboten. Dateiname kann frei gewählt werden!
header('Content-Disposition: attachment; filename=mitarbeiter.csv');
header('Pragma: no-cache');

echo implode(PHP_EOL, $result_row);

?>


Dieses Mitglied wurde gelöscht!
 
Catzenjaeger
Super passt alles Dankeschön

aber wie kann ich das ganze als PDF ausgeben? Oder besser neues Thema dazu aufmachen?
Bearbeitet von Catzenjaeger am 04.10.2016 um 17:48
 
John Doe
Ein PDF-Export ist ungleich schwieriger und auch etwas umständlicher.
Es gibt da verschiedene Ansätze über PHP, unter Anderem mit dieser PHP-Class: http://www.phpclasses.org/package/663...cords.html

Ich habe jetzt leider keinen Code, den ich dir auf die Schnelle aus dem Ärmel schütteln kann aber ich denke wenn man mal ein bisschen bei Google sucht findet man eine passende Lösung wie die schon genannte.

Allerdings haben solche Fragen auch nicht mehr wirklich viel mit PHP-Fusion zu tun weshalb ich dich bitten möchte, solche Fragen vielleicht doch in einem dafür "geeigneteren" Forum zu stellen. Nicht zuletzt deshalb, weil du dort sicherlich die "besseren" Antworten bekommst wenn es um solche Dinge geht. Ein guter Ansatz wären Foren für Webentwickler allgemein oder eben die einschlägigen PHP-Foren.
Dieses Mitglied wurde gelöscht!
 
Catzenjaeger
Danke hat sich erledigt ich habe einen Lösung gefunden .. funzt sogar mache das ganze mit fpdf ... nur das erstellen des templates wird zeit
kosten

Excel klappt soweit auch ... Smile
 
Rolly8-HL
Wenn Du eine Lösung für das erstellen einer PDF hast, habe Interesse daran da ich auch etwas suche um es als PDF Datei ausgeben lassen möchte.

Also wenn Du magst, kannst Du mir das mal rüber reichen.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Catzenjaeger
Zitat: Rolly8-HL schrieb:

Wenn Du eine Lösung für das erstellen einer PDF hast, habe Interesse daran da ich auch etwas suche um es als PDF Datei ausgeben lassen möchte.

Also wenn Du magst, kannst Du mir das mal rüber reichen.



LADE dir FPDF runter packe das in dein Root Verzeichnis und mache einen php seite wo immer du willst und lass dort den inhalt anzeigen. Mfpdf.de ... ist alles deutsch und alles ist beschreiben ... ich habe heute das gefunden und zumindest schonmal eine geile tabelle ausgeben lassen.

Allerdings Bilder und so klappt irgendwie nicht .. weis nicht warum
 
matze_two
Bilder===>>>>Link
 

Springe ins Forum: