Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » FAQ PHP » Postgresql & Php & Pdf

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.10.2003, 22:06 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Ich wollte nur mal kurz meine bis jetzt gesammelten Erfahrungen mit PHP & PostgreSQL posten. Voraussetzung für diese Sample ist ein Server mit Apache und PHP, wobei PHP mit -with-pgsql kompiliert sein muss.
Wie ihr sicher schon mitbekommen habt, ist Postgre einer der mächtigsten Open Source DBs. Ich möchte anhand eines Samples erklären, wie man Daten einfügen und auslesen kann und in einer PDF Datei zum Drucken zur Verfügung stellt.

Wenn PostgreSQL installiert ist, sollte man einen User postgres anlegen. Ebenfalls ist ein Ordner /var/lib/pgsql erforderlich (owner postgres), in dem die Datenbankdateien gespeichert werden. Um PostgreSQL im Hintergrund laufen zu lassen, müssen sämtliche Fehlermeldungen in eine Datei umgeleitet werden, daher wird mit folgendem Befehl die Log-Datei erstellt:
touch /var/lib/pgsql.log
chown postgres /var/lib/pgsql.log
Zum erstmaligen Initialisieren wird folgender Befehl angewandt:
./initdb -d template1 -U postgres
Nun sollte PostgreSQL seine Datenbank initialisieren. Mit dem Tool psql können Datenbanken uvm. erstellt werden.
./postmaster -i -D /var/lib/pgsql 1>/var/lib/pgsql.log 2>&1 &
startet die DB. -i ermöglicht die TCP Anbindung. Für genaue config Datei Einstellungen www.postgresql.org

Folgende Befehle sind die wichtigsten PHP Commands um mit der DB zu kommunizieren:
pg_Connect = verbindet
pg_Close = Verbindung trennen
pg_Exec = Execute des SQL Statements
pg_Fetch_Array = gibt das Ergebnis in ein Array aus
pg_NumRows = Anzahl der gefunden Ergebnisse

zu erstellen ist folgende Tabelle:
CREATE TABLE public.tbluser
(
userid serial NOT NULL,
vorname varchar(256) NOT NULL,
nachname varchar(256) NOT NULL,
CONSTRAINT tbluser_pkey PRIMARY KEY (userid)
) WITH OIDS;

Folgender Source fügt einen User ein:

PHP 4:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Das ist ein Postgre Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php
  if(isset($Submit)) { //Wenn Submit gedrückt wurde, dann...
    $db = pg_Connect("host=localhost dbname=mainhm user=postgres password=XXX") //wenn trust - kein passwort
       or die ("ERROR: Die Datenbank ist nicht erreichbar");
    $query = "INSERT INTO tbluser (vorname,nachname) VALUES('$vorname','$nachname');";
    pg_Exec($query); //SQL Statement ausführen
    pg_Close($db); //VErbindung wiedr Trennen
  }
?>
<body>
<form name="form1" method="post" action="">
  <input name="vorname" type="text" id="vorname">
  <input name="nachname" type="text" id="nachname">
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>


Folgender Source liest alle User aus:

PHP 4:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Auslesen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
     $db = pg_Connect("host=localhost dbname=mainhm user=postgres password=XXX")
       or die ("ERROR: Die Datenbank ist nicht erreichbar");
  
    $query = "SELECT * FROM tbluser;";
    $result = pg_Exec($query);
    $rowcount = pg_NumRows($result);

    echo "<table width='100%' border='0' cellspacing='1' cellpadding='3' bgcolor=||LC01||    
    $index = 0;
    while ($index < $rowcount)
    {
      $user = pg_Fetch_Array($result, $index);
      if($index % 2)
           echo "
<tr bgcolor=||LC01||      else
        echo "<tr bgcolor=||LC01||
      echo "
<td width=50%>$user[vorname]</td>";    
      echo "
<td width=50%>$user[nachname]</td>";
      echo "
</tr>";
      $index++;
    }
  
    echo "
</table>";
    
    pg_Close($db);
?>
</body>
</html>


Anschließend wäre es noch schön, das ganze zu drucken. Hier bietet sich das PDF File Format an. Am einfachsten geht es mit den Klassen von www.ros.co.nz/pdf/
Zu erstellen ist eine neue PHP File, z.B. preview.php

PHP 4:
<?php
   include ('class.ezpdf.php');
   $pdf =& new Cezpdf();
   $pdf->selectFont('./fonts/Helvetica.afm');
   $pdf->ezText('Vorschau',14);
   $pdf->ezSetDy(-30,'makeSpace');
   $data = array();
    
    $db = pg_Connect("host=localhost dbname=mainhm user=postgres password=XXX")
       or die ("ERROR: Die Datenbank ist nicht erreichbar");
  
    $query = "SELECT * FROM tbluser;";
    $result = pg_Exec($query);
    $rowcount = pg_NumRows($result);
    
    $index = 0;
    while ($index < $rowcount)
    {
      $user = pg_Fetch_Array($result, $index);
      $data[$index] = array('Vorname'=>$user[vorname],'Nachname'=>$user[nachname]);
      $index++;
    }
    pg_Close($db);
    $pdf->ezTable($data);
   $pdf->ezStream();  
?>



Mit freundlichen Grüßen mike
--

Dieser Post wurde am 09.10.2003 um 15:49 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.10.2003, 13:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


schaut mir verdächtig nach einem FAQ-Eintrag aus
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ FAQ PHP ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: