PHP und access

genpop

Grünschnabel
Hallo,
ich möchte im xampp mit php auf eine accessdatenbank zugreifen.Dazu habe ich das adodb -Verzeichniss wie im xampp-Beispiel eingerichtet.und auch das Beispielscript benutzt
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	"http://www.w3.org/TR/html4/loose.dtd">
<html>


	<body>
		&nbsp;<p>
		<h1><?php echo $TEXT['ADOdb-head']; ?></h1>
		<?php echo $TEXT['ADOdb-text']; ?><p>
		<?php echo $TEXT['ADOdb-example']; ?><p>

		<?php
			if (empty($_POST['dbserver'])) {
				$_POST['dbserver'] = 'access';
			}
			if (empty($_POST['host'])) {
				$_POST['host'] = 'localhost';
			}
			if (empty($_POST['user'])) {
				$_POST['user'] = 'root';
			}
			if (empty($_POST['password'])) {
				$_POST['password'] = '';
			}
			if (empty($_POST['database'])) {
				$_POST['database'] = 'c:/server/xampp/access/nachricht.mdb';
			}
			if (empty($_POST['table'])) {
				$_POST['table'] = 'nachr';
			}

			if (isset($_POST['adodb']) && ($_POST['adodb'] == "submit")) {
				if ($_POST['dbserver'] == "sqlite") {
					include_once 'adodb/adodb-errorpear.inc.php';
					include_once 'adodb/adodb.inc.php';
					include_once 'adodb/tohtml.inc.php';
					$db = ADONewConnection($_POST['dbserver']);
					@$db->Connect($_POST['database'], '0666');
					echo "<p><b>DBServer: $_POST[dbserver]</b><p>";
					$result = $db->Execute("SELECT * FROM $_POST[table]");
					if (!is_object($result)) {
				        $e = ADODB_Pear_Error();
				        echo '<p><b>'.$e->message.'</b>'; 
					} else {
						while (!$result->EOF) {
							for ($i = 0, $max = $result->FieldCount(); $i < $max; $i++) {
								echo $result->fields[$i].' ';
								$result->MoveNext();
								echo "<br>";
							}
						}
					}
				} else {
					if (($_POST['dbserver'] == "mysql") || ($_POST['dbserver'] == "access") || ($_POST['dbserver'] == "postgres7") || ($_POST['dbserver'] == "ibase") || ($_POST['dbserver'] == "mssql") || ($_POST['dbserver'] == "borland_ibase") || ($_POST['dbserver'] == "firebird") || ($_POST['dbserver'] == "mssqlpo") || ($_POST['dbserver'] == "maxsql") || ($_POST['dbserver'] == "oci8") || ($_POST['dbserver'] == "oci805") || ($_POST['dbserver'] == "oci8po") || ($_POST['dbserver'] == "postgres") || ($_POST['dbserver'] == "oracle") || ($_POST['dbserver'] == "postgres64") || ($_POST['dbserver'] == "sybase")) {
						include_once 'adodb/adodb-errorpear.inc.php';
							include_once 'adodb/adodb.inc.php';
					//	include_once 'adodb/adodb-odbc.inc.php';
						include_once 'adodb/tohtml.inc.php';
						$db = ADONewConnection($_POST['dbserver']);
						@$db->Connect($_POST['host'], $_POST['user'], $_POST['password'], $_POST['database']);
						echo "<p><b>DBServer: $_POST[dbserver]</b><p>";
						$result = $db->Execute("SELECT * FROM $_POST[table]");
						if (!is_object($result)) {
					        $e = ADODB_Pear_Error();
					        echo '<p><b>'.$e->message.'</b>'; 
						} else {
							while (!$result->EOF) {
								for ($i = 0, $max = $result->FieldCount(); $i < $max; $i++) {
									echo $result->fields[$i].' ';
									$result->MoveNext();
									echo "<br>";
								}
							}
						}
					} else {
				
						print_r($TEXT['ADOdb-notdbserver']);
					}
				}
			}
		?>

		<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
			<table width="720" cellpadding="0" cellspacing="0" border="0">
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><?php echo $TEXT['ADOdb-dbserver']; ?></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><?php echo $TEXT['ADOdb-host']; ?></td>
				</tr>

				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="text" name="dbserver" size="40" value="<?php echo $_POST['dbserver']; ?>"></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="text" name="host" size="40" value="<?php echo $_POST['host']; ?>"></td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><?php echo $TEXT['ADOdb-user']; ?></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><?php echo $TEXT['ADOdb-password']; ?></td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="text" name="user" size="40" value="<?php echo $_POST['user']; ?>"></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="text" name="password" size="40" value="<?php echo $_POST['password']; ?>"></td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><?php echo $TEXT['ADOdb-database']; ?></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><?php echo $TEXT['ADOdb-table']; ?></td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="text" name="database" size="40" value="<?php echo $_POST['database']; ?>"></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="text" name="table" size="40" value="<?php echo $_POST['table']; ?>"></td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
				</tr>
				<tr>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350"><input type="submit" name="adodb" value="submit"></td>
					<td align="left" width="10">&nbsp;</td>
					<td align="left" width="350">&nbsp;</td>
				</tr>
			</table>
		</form>

		<p>
		<?php
			if (isset($_GET['source']) && ($_GET['source'] == "in")) {
				include "code.php";
				$beispiel = $_SERVER['SCRIPT_FILENAME'];
				pagecode($beispiel);
			} else {
				echo "<p><br><br><h2><u><a href=\"$_SERVER[PHP_SELF]?source=in\">".$TEXT['srccode-in']."</a></u></h2>";
			}
		?>
	</body>
</html>

Nach Aufruf meines scripts bekomme ich folgende FM:DBServer: access
Code:
access error: [IM002: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben] in EXECUTE("SELECT * FROM nachr")

Wer kann mir weiterhelfen?

Gruß
genpop
 
wenn du Xampp hast - dann schieb lieber die Datensätze auf die MySQL Datenbank rüber und greif mit Access auf die MySQL -Datenbank zu.

oder bleib dann gleich bei MySQL und PHP.
 
hikeda_ya hat gesagt.:
wenn du Xampp hast - dann schieb lieber die Datensätze auf die MySQL Datenbank rüber und greif mit Access auf die MySQL -Datenbank zu.

oder bleib dann gleich bei MySQL und PHP.

Hallo hikeda_ya
dazu kann ich nur sagen :arbeite mit Dos das funktioniert dann mußt Du dich nicht mit XP rumärgern!

Aber an Alle anderen die neues probieren wollen:Ich habe weitergesucht und nochmals probiert.Beim folgenden code scheint er eine Verbindung aufgebaut zu haben aber will mir kein Abfrageergebniss bringen.<?php


include_once 'adodb/adodb-errorpear.inc.php';
include_once 'adodb/adodb.inc.php';
// include_once 'adodb/adodb-access.inc.php';
// include_once 'adodb/adodb-odbc.inc.php';
include_once 'adodb/tohtml.inc.php';
$db = ADONewConnection('access');

$dsn = "Driver= {Microsoft Access Driver (*.mdb)};Dbq= c:\temp\adressen.mdb;Uid=Admin;";
@$db->Connect($dsn);

$result = $db->Execute("SELECT FirstName,LastName FROM People;");
if (!is_object($result)) {
$e = ADODB_Pear_Error();
echo '<p><b>'.$e->message.'</b>';
} else {
while (!$result->EOF) {
for ($i = 0, $max = $result->FieldCount(); $i < $max; $i++) {
echo $result->fields[$i].' ';
$result->MoveNext();
echo "<br>";
}
}
}

?>

Und wieder die Fehlermeldung:
access error: [S1000: [Microsoft][ODBC Microsoft Access Driver] Kein zulässiger Dateiname.] in EXECUTE("SELECT FirstName,LastName FROM People;")

Wer kann helfen?
Gruß genpop
 
;) probiere gern was neues :-)

in der Access- SQL musst du bei jedem Spaltennamen auch den Datenbanknamen angeben sieht so aus als könne er die Spalten nicht zuordnen (oder irre ich mich wieder)
 
Hallo hikeda_ya,
danke fürs weiterdenken , leider ohne Erfolg.

Folgende select hatte ich und habe ich noch mal ausprobiert.Ist ja leicht wenn man sich den sql code einer abfrage im access anzeigen läßt!
"select people.* from people"
"select people.firstname from people"
"select * from people"
immer die selbe Fehlermeldung.
In den Php Handbüchern ist alles so einfach:-(
Gruß genpop
 
Zurück