[php/access] dsnless connectie met Access database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DonCorleo
  • Registratie: Juni 2001
  • Laatst online: 19-03-2021

DonCorleo

Jif, omdat er geen andere if

Topicstarter
Ik probeer al enige tijd een dsnless connectie te maken met een access database. In diverse forums en bij google wordt verwezen naar een 'standaard' connectie. Deze heb ik getracht om te zetten naar mijn eigen wensen, maar ik weet niet wat ik fout doe.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php if (!$conn = new COM("ADODB.Connection"))exit("Unable to create an ADODB connection<br>"); 
$strConn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=db/test.mdb"; 
$conn->open($strConn); 
$strSQL = "SELECT * FROM tabel"; 
  $rs = $conn->execute($strSQL); 
  $naam = $rs->Fields(0); 
  $adres = $rs->Fields(1); 
  $woonplaats = $rs->Fields(2); 
  print "<table border=\"0\" style=\"border: #660033 1px solid\">"; 
  print "<tr><td><b>Category</b></td>" ; 
  print "<td><b>File</b></td><td><b>Directory</b></td></tr>"; 
  while (!$rs->EOF) {print "<tr><td>$naamy->value</td>"; 
  print "<td>adres->value</td>"; 
  print "<td>$woonplaats->value</td></tr>"; 
  $rs->MoveNext(); 
  }print "</table>"; 
  // Tidy up 
  $rs->Close(); 
  $conn->Close(); 
  $rs = null; 
  $conn = null; 
  ?>


Het betreft een test-database met een tabel gemaand 'tabel' met daarin 4 velden. id, naam, adres en woonplaats.
De database staan nu nog 1 niveau hoger dan de site, maar de planning is om deze buiten de webdirectory te zetten. Voor de test heb ik het zo simpel mogelijk proberen te maken.

De bedoeling is dus om op het scherm de inhoud van de database te krijgen.

Hopelijk kan iemand mij helpen.

De decolleté is als de zon: je mag er naar kijken maar je moet er niet in staren.


Acties:
  • 0 Henk 'm!

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

ik weet ook niet wat je fout doet............................... misschien tijd om de errormeldingen neer te zetten?

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Acties:
  • 0 Henk 'm!

  • DonCorleo
  • Registratie: Juni 2001
  • Laatst online: 19-03-2021

DonCorleo

Jif, omdat er geen andere if

Topicstarter
Da's het hele punt...er verschijnt enkel een leeg (wit) scherm.

De decolleté is als de zon: je mag er naar kijken maar je moet er niet in staren.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat doet ie? Wat doet ie niet? Waar gaat het mis? Gaat er überhaupt iets mis? Een beetje duidelijker zou fijn zijn. ;)

Ten eerste heb je erin staan $naamy->value terwijl je nergens een $naamy declareert, wel een $naam. ;)

Verder schuif je nu door je recordset in je while (die overigens verschrikkelijk slecht is uitgelijnd), terwijl je je variabelen afdrukt (waar niet doorheen geschoven wordt), dus je drukt steeds een veldobject af in plaats van de waarde van die velden. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DonCorleo
  • Registratie: Juni 2001
  • Laatst online: 19-03-2021

DonCorleo

Jif, omdat er geen andere if

Topicstarter
Ik dacht dat ik het redelijk duidelijk geformuleerd had, maar ik ben nogal nieuw met php, vandaar waarschijnlijk mijn 'vage' vraagstelling.

Ik heb de $naamy aangepast naar $naam, maar nog steeds geen resultaat te zien op de pagina.

Om kort te gaan:
Ik wil graag een dsnless connectie naar de Access database maken en daarbij een resultaat zichtbaar hebben op de pagina, zodat ik weet dat de connectie klopt.

In asp het ik een test connectie gemaakt zoals volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<% @Language=Vbscript LCID=1043%>
<% Option Explicit
Dim strConn, objConn, strResultaat
%>
<% 'Maak connectionstring
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & Server.MapPath("db/test.mdb") & ";"

'Maak connection object
Set objConn = Server.CreateObject("ADODB.Connection")

'Open database
objConn.Open strConn
%>

<html>
<head>
    <title>Connectie test</title>
</head>
<body>
<%
'Check de status van de verbinding
If objConn.State = 0 Then
    strResultaat = "De database is niet geopend!"
Else
    strResultaat = "De database is geopend en weer afgesloten."
    'Sluit database
    objConn.Close
End If
%>
<%= strResultaat %>
</body>
</html>


Is er ook zoiets in php?

[ Voor 20% gewijzigd door DonCorleo op 27-03-2004 00:53 ]

De decolleté is als de zon: je mag er naar kijken maar je moet er niet in staren.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

DonCorleo schreef op 27 maart 2004 @ 00:51:
In asp het ik een test connectie gemaakt zoals volgende:

[snip...]

Is er ook zoiets in php?
Vast wel...maar het probleem zit niet in je connectie:
Verder schuif je nu door je recordset in je while (die overigens verschrikkelijk slecht is uitgelijnd), terwijl je je variabelen afdrukt (waar niet doorheen geschoven wordt), dus je drukt steeds een veldobject af in plaats van de waarde van die velden. :)
Je kan niet een hele rij met records aan een variabele toekennen, en dan verwachten dat als je door de records heen loopt, ook die variabele aangepast wordt. Probeer zoiets:
PHP:
1
2
3
4
5
6
while (!$rs->EOF) {
  print "<tr><td>".$rs->Fields(0)."</td>"; 
  print "<td>".$rs->Fields(1)."</td>"; 
  print "<td>".$rs->Fields(2)."</td></tr>"; 
  $rs->MoveNext(); 
}

Dan kom je al een stuk meer in de richting dan wat je nu gebruikt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DonCorleo
  • Registratie: Juni 2001
  • Laatst online: 19-03-2021

DonCorleo

Jif, omdat er geen andere if

Topicstarter
Ik ben al een stukje verder met de probleemoplossing. Kennelijk geeft mijn test-server geen foutmeldingen weer. Daarop heb ik de test file ge-upload naar een online hosting en daarbij krijg ik de volgende melding:

Fatal error: Cannot instantiate non-existent class: com in /var/www/html/php-test/conn.php on line 8

Line 8:
code:
1
if (!$conn = new COM("ADODB.Connection"))exit("Unable to create an ADODB connection<br>");


Blijkbaar 'kent' php de COM niet omdat ie niet bestaat. Moet ik deze eerst definieren?

Hoe moet ik dit aanpakken?

De decolleté is als de zon: je mag er naar kijken maar je moet er niet in staren.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ten eerste: zet error_reporting lokaal op E_ALL bovenaan je script, of beter, stel in je php.ini in dat je alle errors en warnings wil zien.
Ten tweede: ik denk dat je een extensie nodig hebt voor ADODB. Ik zou zo snel even niet weten waar die te krijgen is. Misschien heb je hier wat aan.

[ Voor 9% gewijzigd door NMe op 27-03-2004 15:16 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1