PHP og MS Access
PHP og Microsoft Access er to ting man ikke lige umiddelbart forbinder med hinanden - de fleste bruger MySQL, PostGreSQL eller andre af de gratis databaser.
Men jeg havde et konkret problem - min ISP tog ekstra penge for hver MySQL database man ville have, og med mit spinkle budget kunne jeg lige så godt glemme det. Desuden ville jeg have så mange databaser som jeg ville ha'.
Denne tutorial kræver, at din webserver kører Windows NT eller 2000.
Trin 1: Oprettelse af database
Først og fremmest skal vi have en Access-fil (.mdb).
Lav en tabel med felterne:
fornavn (Tekst)
efternavn (Tekst)
adresse (Tekst)
postnr (Tal)
telefon (Tal)
Kald tabellen PersonTabel og lav to personer - jeg har fx. lavet:
John, Doe, PHP-vej 6, 666, 12345678
Jane, Doe, Access-vej 2000, 2003, 98765432
Gem databasen som PERSON.MDB i den mappe hvor du vil lave din database-powered applikation.
Trin 2: Opret forbindelse til database
Vi vil nu bruge en teknologi, som PHP ikke understøtter direkte, nemlig en ADODB forbindelse gennem COM.
Den laver vi med:
<?php
$db_connection = new COM("ADODB.Connection");
Nu starter PHP automatisk et COM objekt for os, hvor vi kan lave en forbindelse til Access.
Næste trin er at lave forbindelses-strengen:
$db_connstr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" . getcwd() . "//PERSON.MDB";
Nu vil vi åbne forbindelsen:
$db_connection->open( $db_connstr );
Trin 3: SQL
Nu skal vi så have lavet en SQL-deklaration for hvilke felter vi vil hente:
$rs = $db_connection->execute( "select * from PersonTabel"); ?>
Udskrivning af indhold
Før vi udskriver indholdet skal vi lige gøre det pænt:
<table>
<tr>
<td><b>Fornavn</b></td>
<td><b>Efternavn</b></td>
<td><b>Adresse</b></td>
<td><b>Postnr.</b></td>
<td><b>Telefon</b></td>
</tr>
- og nu skal vi så endelig til at udskrive det!

<?php
while ( ! $rs->EOF ) {
if ( is_null( $rs->Fields[ "fornavn" ]->Value ) ) {
echo "NULL";
}
else {
echo "<tr><td>" . $rs->Fields[ "fornavn" ]->Value . "</td>";
echo "<td>" . $rs->Fields[ "efternavn" ]->Value . "</td>";
echo "<td>" . $rs->Fields[ "adresse" ]->Value . "</td>";
echo "<td>" . $rs->Fields[ "postnr" ]->Value . "</td>";
echo "<td>" . $rs->Fields[ "telefon"]->Value . "</td></tr>";
}
$rs->movenext();
}
?>
Det vil udskrive alle data i vores database

I del 2 vil vi udskrive enkelte elementer i databasen