
 |

Hilfreiches :: Datenbankanbindung per ODBC (4/4)
Wollen wir uns die graue Theorie mal anhand eines Beispiels verdeutlichen. Das Script
durchsucht anhand eines Suchbegriffs aus einem Formular die Datenbank in der Tabelle
'Perlbooks - deutsch' und dem Feld 'Beschreibung'.
1. Einbindung des Moduls und Ausgabe an den Browser schicken
use Win32::ODBC;
print "Content-Type: text/html\n\n" ;
2. Formulardaten auslesen
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
@paare = split(/&/, $buffer);
foreach $paar (@paare) {
($feldname, $wert) = split(/=/, $paar);
$wert =~ tr/+/ / ;
$FM{$feldname} = $wert ;
}
3. Dantenbank benennen
Hier setzt man jetzt den Namen der Datenbankquelle ein, den man
bei dem ODBC-Setup vergeben hat.
$DSN = "PerlBSP" ;
$Table=$FM{'table'} ;
4. Titel ausgeben und Suchprogramm starten
print "Datenbank-Tabelle: $FM{'table'}" ;
&suche() ;
5. das eigentliche Programm
sub suche {
Zuerst muß ein neues Objkekt erstellt und connected werden.
$DataBase = new Win32::ODBC($DSN) ;
Dann müssen die Datensätze per SQL ausgewählt werden. In unserem Fall wird die
Beschreibung nach dem Suchbegriff durchsucht (sortiert nach Titel). Das Prozent-Zeichen
entspricht dem .* in Perl. Es werden alle Felder in der Tabelle 'Perlbooks - deutsch'
ausgewählt.
if (! $DataBase->Sql("SELECT * FROM [$Table] WHERE Beschreibung LIKE '%$FM{'sbeg'}%' ORDER BY 1")){
Zuweisung der Feldnamen in das Array: @FieldNames
@FieldNames = $DataBase->FieldNames();
Berechnung der Anzahl der Spalten.
$Cols = $#FieldNames+1 ;
Zeilenweises Durchgehen der Datenbank per while-Schleife
while($DataBase->FetchRow()){
Die Daten der Zeile wird dem assoziativen Array DATA zugewiesen.
undef %Data;
%Data = $DataBase->DataHash();
for ($iTemp = 0; $iTemp < $Cols; $iTemp++){
Die Bezeichnungen des ass. Array sind die jeweiligen Feldnamen.
print "$Data{$FieldNames[$iTemp]}";
}
}
} else {
Fehlerausgabe, wenn das SQL-Statement fehlschlägt.
print "Sql(): " . $DataBase->Error();
}
Datenbank wird geschlossen.
$DataBase->Close();
}
So das war's. Das Script könnt Ihr nun als Ausgangsbasis für weitere Anwendungen nehmen. Sollte Ihr
Anregungen haben oder Fehler entdecken, dann meldet Euch. Wenn ich mal etwas mehr Zeit habe, werde ich
mal ein Performancetest machen und die unterschiedlichen Datenbankanbindungsmethoden vergleichen. Im
kommerziellen Bereich kann ich ColdFusion empfehlen.
Kommentare
03.11.2003 - 13:49 | johann | înfo@mediaconsults.de
gibts denn schon scripts die dieses modul nutzen ? so zum üben und so..... kann ich dan... 

17.02.2003 - 23:00 | uta | elfriede007@web.de
Diese Kurzreferenz finde ich gut und verständlich. Man muss nicht erst sonst wieviele Seit... 

25.07.2002 - 23:36 | Oliver | info@methfessel-com.de
@Ulrike probier es mal mit einer if-Schleifer: $db->SQL("SELECT * FROM ..."); $i... 

26.02.2002 - 15:02 | Ulrike | ulialleinzuhaus@aol.com
Was mach ich wenn die datenbank leer ist und ich ne anzeige haben will in der Form von: "I... 

Kommentar anfügen
|

|

|