phpbar.de logo

Mailinglisten-Archive

[php] PHP und Oracle

[php] PHP und Oracle

Joerg Behrens behrens_(at)_noell.de
Wed, 24 Nov 1999 12:25:24 +0100


> From: jan.viaccava_(at)_stone-eca.de
> Hi Leute,
> 
> Ich habe ein Problem im Zusammenspiel von Apache, PHP und Oracle.
> Auf einem Linux-Rechner (Red-Hat 6.0) ist ein Apache-Webserver mit PHP
> installiert. Von hier aus möchte ich einen Zugriff auf eine entfernt
> liegende Oracle 7.3.4.4-Datenbank auf einem HP-UX-Server schaffen.
> Dabei meldet PHP immer :
> Fatal error: Call to unsupported or undefined function ora_open() in
> /apache/php3/speichern2.php3 on line 10
> 
> Wie kann ich die entsprechenden Oracle-Funktionen einbinden ???

Moin,moin
dazu musst du auf deiner Kiste den Oracle-Client installieren und
anschliessend PHP neu compilieren. Der Client ist immer notwendig um
sich mit einer Oracle-DB zu unterhalten selbst wenn die DB auf deinem
Webserver direkt mitlaufen wuerde. Solltest du das ./setup von PHP
ausfuhren die Frage mit Oracle Support mit Yes beantworten sowie den
Pfad angeben. Evtl. lohnt auch mal ein Blick in die engl.
Mailingliste... da wird ofter ueber Oracle und PHP gesprochen als hier.

Die Anhaenger des "Winzigweichs Clan" haben es hier ein bisschen
einfacher. Der Client ist einfach zuinstallieren und PHP bringt die
passende *.DLL mit. Komischer Weise steht sie nicht in der PHP3.INI,
also flux eintragen "extension=php3_oci73.dll".

Folgendes Script sollte dir den Inhalt einer Tabelle bzw. View an.
Funktion zum "weiterblaettern" ist eingebaut sowie Statusmonitor mit
Tabellenname, Nummer der Spalten und Anzeige von bis... Anmerk. Ich
nummiere die Spalte von 1-x durch, also nicht irritieren lassen, das
sind keine Infos aus der Datenbank.

<?php
if($select == "")
    $sql_daten = "SELECT * FROM udb.vw_zeichnung_php"; // Hier Name der
Tabelle/View angeben
else
    $sql_daten = $select;

if(($von == "") or ($von < 0))
    $zeile_erste = 1;
else
    $zeile_erste = $von;

if(($max == "") or ($max < 0))
    $zeilen_anzeigen = 10;	// Anzeige der max. Zeilen pro Seite
else
    $zeilen_anzeigen = $max;

putenv("ORACLE_SID=orcl");
putenv("ORACLE_HOME=d:\orant"); // Pfad gegebenfalls anpassen

$user_name = "prinz";	// Loginname setzen
$user_pwd = "prinz";	// Passwort
$user_tns = "_(at)_ora-2";	// TNS Name

$anmeldung = ora_logon($user_name . $user_tns,$user_pwd);
ora_commitoff($anmeldung);

$cursor_daten = ora_open($anmeldung);
ora_parse($cursor_daten,$sql_daten);
ora_exec($cursor_daten);

$spalten_gesamt = 0;
$spalten_gesamt = ora_numcols($cursor_daten);
$zeile_nummer = 0;
$zeilen_angezeigt = 0;

echo "<TABLE BORDER=1>\n";
echo "  <TR>\n    ";
echo "<TD>Nummer</TD>";
for ($spalte_aktuell=0; $spalte_aktuell < $spalten_gesamt;
$spalte_aktuell++) {
    $spalte_name = trim(ora_columnname($cursor_daten,$spalte_aktuell));
    echo ('<TD ALIGN="'.CENTER.'">');
    echo "$spalte_name";
    echo "</TD>";
}
echo "\n  </TR>\n";

while(($zeile_nummer < $zeile_erste - 1) and (ora_fetch($cursor_daten)))
    $zeile_nummer++;

if($zeile_nummer == $zeile_erste - 1){
    while(($zeilen_angezeigt < $zeilen_anzeigen) and
(ora_fetch($cursor_daten))) {
        $zeile_nummer++;
        $zeilen_angezeigt++;
        echo "  <TR>\n    ";
        echo ('<TD ALIGN="'.RIGHT.'">');
        echo "$zeile_nummer";
        echo "</TD>";
        for ($spalte_aktuell=0; $spalte_aktuell < $spalten_gesamt;
$spalte_aktuell++) {
            $spalte_wert = trim(ora_getcolumn($cursor_daten,
$spalte_aktuell));
            $spalte_typ = ora_columntype($cursor_daten,
$spalte_aktuell);
            if($spalte_wert == "")
                $spalte_wert = "&nbsp;";
            if($spalte_typ == "NUMBER")
                $spalte_ausrichtung = "RIGHT";
            else
                $spalte_ausrichtung = "LEFT";
            echo ('<TD ALIGN="'.$spalte_ausrichtung.'">');
            echo "$spalte_wert";
            echo "</TD>";
        }
        echo "\n  </TR>\n";
    }
}

$spalten_gesamt++;
if($zeilen_angezeigt == 0) {
    echo "  <TR>\n    ";
    echo ('<TD COLSPAN="'.$spalten_gesamt.'" ALIGN="CENTER">(keine Daten
gefunden)</TD>');
    echo "\n  </TR>\n";
}
echo  "</TABLE>\n\n<P>\n\n";

$zeile_minus = $zeile_erste - $zeilen_anzeigen;
$zeile_plus = $zeile_erste + $zeilen_anzeigen;

echo "<TABLE BORDER=1>\n";
echo "  <TR>\n";
if($zeile_erste > 1)
    echo ('    <TD><A
HREF="http://wu-ex-test/oracle/oracle7.htm?select='.ereg_replace("
","+",$sql_daten).'&von=1&max='.$zeilen_anzeigen.'">Anfang</A></TD>');
else
    echo "    <TD>Anfang</TD>";
if($zeile_minus > 0)
    echo ('    <TD><A
HREF="http://wu-ex-test/oracle/oracle7.htm?select='.ereg_replace("
","+",$sql_daten).'&von='.$zeile_minus.'&max='.$zeilen_anzeigen.'">-
'.$zeilen_anzeigen.'</A></TD>');
else
    echo "    <TD>- $zeilen_anzeigen</TD>";
echo ('    <TD><A
HREF="http://wu-ex-test/oracle/oracle7.htm?select='.ereg_replace("
","+",$sql_daten).'&von='.$zeile_plus.'&max='.$zeilen_anzeigen.'">+
'.$zeilen_anzeigen.'</A></TD>');
echo "\n  </TR>\n";
echo  "</TABLE>\n\n<P>\n\n";
echo "<TABLE BORDER=1>\n";
echo "<TR><TD>SQL Abfrage</TD><TD>$sql_daten</TD></TR>\n";
echo "<TR><TD>Spalten</TD><TD>$spalten_gesamt</TD></TR>\n";
echo "<TR><TD>Zeilen</TD><TD>$zeile_erste bis
$zeile_nummer</TD></TR>\n";
echo "<TR><TD>Anzeige</TD><TD>$zeilen_angezeigt Zeilen (maximal
$zeilen_anzeigen)</TD></TR>\n";
echo "</TABLE>\n\n";
ora_close($cursor_daten);
/* Ausloggen */
Ora_Logoff($anmeldung);
?>


MfG
Joerg Behrens
Key fingerprint =  92 7D E0 A6 CF AE EC 32  14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
Preussag Noell Dienstleistungs GmbH
D-97080 Wuerzburg
Alfred-Nobel-Straße 20                         Tel: +49 931 903-2243
Abt: DV-C/tr                                   Fax: +49 511 903-2051


php::bar PHP Wiki   -   Listenarchive