select aus DB und dann via Pear in Excel ausgeben

Alles, was PHP betrifft, kann hier besprochen werden.

select aus DB und dann via Pear in Excel ausgeben

Postby SonjaM » 26. June 2005 08:40

Hallo

Auf XAMPP gehen die Testfile von pear, aber ich bringe es nicht hin eine eigene tabelle zu machen

Code: Select all
<?php
  include_once "Spreadsheet/Excel/Writer.php";
require("header.php");

 $query = "select Mitgliedname,Zusatz,Person1_Anrede,Person1_Vorname,Person1_Nachname from tab
order by Mitgliedname";
$result = mysql_query($query,$link);
$num = mysql_numrows($result);

  $xls =& new Spreadsheet_Excel_Writer();
  $xls->send("mitglieder.xls");
  $sheet =& $xls->addWorksheet('Mitglieder');
    $format =& $xls->addFormat();
  $format->setBold();
  $sheet->write(0,0,'Mitgliedname');
  $sheet->write(0,1,'Zusatz');
   $sheet->write(0,2,'Anrede1');
 $sheet->write(0,3,'Vorname1');
  $sheet->write(0,4,'Name1');

for ($i = 0; $i < $num; $i++)
 {
  $row = mysql_fetch_array($result);
  $sheet->write(1,0,$row[Mitgliedname]);
  $sheet->write(1,1,$row[Zusatz]);
   $sheet->write(1,2,$row[Person1_Anrede]);
 $sheet->write(1,3,$row[Person1_Vorname]);
  $sheet->write(1,4,$row[Person1_Nachname]);
}
 $xls->close();
?>


Excel öffnet nicht, die Mitglieder werden im Browser dargestellt, aber mit vielen Quadrätchen

Restaurationen HerrPartice


Ziel wäre es, eine immer aktuelle Mitgliederliste zu erhalten. Doch wie kann ich den select machen und wie von einer Zeile zur nächsten gehen?

Danke
SonjaM
 
Posts: 5
Joined: 25. June 2005 21:53

Postby jakimo72 » 26. June 2005 10:38

1. Du verwendest die Variable $link, ohne sie
jemals zu definieren.
Daher mysql_connect() und mysql_select_db() verwenden.
2. Du verwendest für das Select "Persone1_Name", aber für die
Ausgabe "Person1_Nachname". Besser gleiche Namen verwenden.
3. Ohne mysql_numrows($result); geht es einfacher und sicherer.
4. Beim Zugriff auf ein assoziatives Array, den Schlüssel lieber als String
angeben, ansonsten sucht PHP immer nach definierten Konstanten.
($row[Mitgliedname] lieber als $row['Mitgliedname'] schreiben)

Code: Select all
<?php
  include_once "Spreadsheet/Excel/Writer.php";

  $xls =& new Spreadsheet_Excel_Writer();
  $xls->send("test.xls");
  $sheet =& $xls->addWorksheet('Test results');
    $format =& $xls->addFormat();
  $format->setBold();
  $sheet->write(0,0,'Mitgliedname');
  $sheet->write(0,1,'Zusatz');
   $sheet->write(0,2,'Anrede1');
 $sheet->write(0,3,'Vorname1');
  $sheet->write(0,4,'Name1');
 
$link = mysql_connect("localhost", "root", "")
   or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("test")
  or die("Auswahl der Datenbank fehlgeschlagen");
 
 $query = "select Mitgliedname,Zusatz,Person1_Anrede,Person1_Vorname,Person1_Name  from tabelle
order by Mitgliedname";
$result = mysql_query($query,$link);
$num = 0;
while($row = mysql_fetch_array($result))
{
  $num++;
  $sheet->write($num,0,$row['Mitgliedname']);
  $sheet->write($num,1,$row['Zusatz']);
   $sheet->write($num,2,$row['Person1_Anrede']);
 $sheet->write($num,3,$row['Person1_Vorname']);
  $sheet->write($num,4,$row['Person1_Name']);
}
  $xls->close();
?>
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby SonjaM » 26. June 2005 11:30

Danke, aber es hilft nicht weiter, der Output geht immer noch zum Browser und gibt alle aneinander aus, getrennt mit vielen quadrätchen

PS: die Verbindung zum Server habe ich im Header, die geht, es keine frage des Select, sondern des Output in Excel

Code: Select all
<?
  include_once "Spreadsheet/Excel/Writer.php";

$xls =& new Spreadsheet_Excel_Writer();
  $xls->send("mitglieder.xls");
  $sheet =& $xls->addWorksheet('Mitglieder');

require("header.php");
$query = "select Mitgliedname,Zusatz,Person1_Anrede,Person1_Vorname,Person1_Nachname from tabelle
order by Mitgliedname";
$result = mysql_query($query,$link);

$num = 0;
while($row = mysql_fetch_array($result))
{
$num++;
$sheet->write($num,0,$row[Mitgliedname]);
$sheet->write($num,1,$row[Zusatz]);
$sheet->write($num,2,$row[Person1_Anrede]);
$sheet->write($num,3,$row[Person1_Vorname]);
$sheet->write($num,4,$row[Person1_Nachname]);
}
$xls->close();
?> 
SonjaM
 
Posts: 5
Joined: 25. June 2005 21:53

Postby jakimo72 » 27. June 2005 01:50

Wie sieht denn der besagte Header aus?
werden dort bereits HTTP-Header gesendet,
dann gibt es Probleme.
Oder werden dort sogar Zeichen auf die Ausgabe
geschrieben?

Oder hast Du aus Versehen in Deinem Browser eingestellt,
dass der Browser xls-Dateien öffnen soll? Mal anderen
Browser versucht?
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby SonjaM » 27. June 2005 07:17

Danke

Habe im Header auch noch weitere Infos, zum Beispiel Farben der Tabellenzellen und Mailadressen, die ich dann dort schneller gewechselt habe. Jetzt geht es bestens

Es schöne Tag, bei uns wird es heute 34 Grad!
SonjaM
 
Posts: 5
Joined: 25. June 2005 21:53


Return to PHP

Who is online

Users browsing this forum: No registered users and 42 guests