Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Datenbankzugriff





Frage

Hallo, ich hätte mal eine Frage an euch. Ich kenne mich nicht so gut mit php aus und wollte einen Datenbankzugriff über ODBC auf eine Access Datenbank realisieren. Da Internetrecherchen nicht gerade erfolgreich waren, habe ich dazu folgendes in einem Buch gefunden. Beim Test wurde mir folgender Fehler ausgegeben: PHP Parse error: parse error, unexpected ´;´ in H:\Homepage\balken3.php on line 26 <?php class test { //Datenbankinformationen private $server = "localhost"; private $dsn = "accessdb"; private $dbname = "testdb"; private $uid = "Admin"; private $pwd = "1234"; private $conn; public function _datenbank() //Datenbank starten $this->conn = odbc_connect($this->dsn, $this->uid, $this->pwd); if ($this->conn == FALSE) { throw new Exception("Fehler beim Datenbankaufruf"); } $sql="SELECT * FROM $dbname ORDER BY id DESC"; $result = odbc_exec($this->conn, $sql; } ?> Kann mir jemand einen Tipp geben wie ich das script richtig schreibe.? Danke...

Antwort 1 von rabies

Poste mal bitte die Zeilen 24-28 der Datei balken3.php, falls folgendes nicht schon die Lösung ist:

$result = odbc_exec($this->conn, $sql;

Sollte das nicht eher:

$result = odbc_exec($this->conn, $sql);

heißen?

--hth, rabies.

Antwort 2 von norbu

Danke schon mal für die Antwort.

Das hat ich wohl übersehen... Doch jetzt wird mir noch eine andere Fehlermeldung ausgegeben.

PHP Parse error: parse error, unexpected ´;´, expecting T_FUNCTION in H:\Homepage\balken3.php on line 29

und hier nochmal die Zeilen 24 bis 29

$sql="SELECT * FROM $dbname ORDER BY id DESC";

$result = odbc_exec($this->conn, $sql);
}

?>

Antwort 3 von norbu

ich sah gerade noch

Zeile 29: ?>php

sollte es heißen, aber der Fehler kommt trotzdem noch

Antwort 4 von rabies

Was mir noch auffiel: function _datenbank() - Da fehlt die geschweifte Klammer - genau so, wie dann weiter unten im Script die schließende geschweifte Klammer fehlt. ... Diese mal noch einsetzen.


also in dieser Form:


public function _datenbank() {

 // weiterer Code...

$result = odbc_exec($this->conn, $sql;
}


Antwort 5 von rabies

Ehrm... natürlich hier auch die Klammer richtig schließen. Ich hab´s heute nicht so mit´m Tippen.

Antwort 6 von norbu

Gut ich habe jetzt die Änderungen übernommen. Fehler werden mir auch keine mehr ausgegeben.
Ich wollte mit jpgraph ein Diagramm erzeugen und habe das ganze nun erweitert. Die Grafik ansich wird mir schon angezeigt nur ohne Balken. Also nehme ich mal an das noch nicht richtig auf die Daten zugegriffen werden kann.

<?php
class Test
{
//Datenbankinformationen
private $server = "localhost";
private $dsn = "accessdb";
private $dbname = "testdb";
private $uid = "Admin";
private $pwd = "1234";


private $conn;

public function _datenbank()

//Datenbank starten
{
$this->conn = odbc_connect($this->dsn, $this->uid, $this->pwd);

if ($this->conn == FALSE)
{
throw new Exception("Fehler beim Datenbankaufruf");
}

$sql="SELECT Stimmeninsgesamt FROM tbl_bewerber";
$sql2="SELECT Bewerber FROM tbl_bewerber";

$result = odbc_exec($this->conn, $sql);

$result2 = odbc_exec($this->conn, $sql2);


while($rows = odbc_fetch_object($result))
{
echo $rows->Stimmen;
}

while($row2 = odbc_fetch_object($result2))
{
echo $row2->Bewerber;
}

}
}

include ("jpgraph.php");
include ("jpgraph_line.php");
include ("jpgraph_bar.php");

$data1y=array($result);


// Graphik generieren
$graph = new Graph(350,250,"auto");
$graph->SetScale("textlin");

// Schatten hinzufügen
$graph->SetShadow();

// Rand ändern
$graph->img->SetMargin(40,30,20,40);

// Balkendiagramm generieren
$b1plot = new BarPlot($data1y);
$graph->Add($b1plot);

// Graphikformatierungen
$graph->title->Set("A simple bar graph");
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

// Graphik anzeigen
$graph->Stroke();

?>php

Wenn mir also noch weiter geholfen werden kann, wäre dies nicht schlecht. Desweiteren nochmal Danke...

Antwort 7 von rabies

ich kenne dieses jpgraph.php nicht - aber natürlich kann dort kein Balken, o.ä. gezeichnet werden. Du übergibst ja auch an keiner Stelle die Daten dazu.

Zwar setzt Du $data1y = new array und dann das result-Set, aber es ist nicht ganz Sinn und Zweck, ein Objekt in ein Array zu prügeln... zu Mal ist $result nicht von außen erreichbar.

Ein weiterer Grund sollte sein, dass Du keine neue Instanz von der Klasse Test aufrufst und auch nicht die darin enthaltene Funktion _datenbank() ausführst.

Mal einiges zur grundlegenden Vorgehensweise:

Du solltest Dir immer zwischendurch einmal ausgeben lassen, wie´s um Deine Daten steht. Dies kannst Du zum Beispiel mit print_r($value) tun. $value kann hier beliebig für eine Variable, ein Objekt, ein Array stehen. Also würde ich Dir einmal empfehlen, print_r($data1y); bzw print_r($result) nach Deiner Klasse einzufügen. Es sollte hier nichts bzw. ein leerer Datensatz ausgegeben werden.

Die Benutzung der Klasse ist auch nicht ganz deutlich. Eine Klasse ist als eine Sammlung von Funktionen zu sehen. Nicht von willkürlich heruntergeschriebenem Code.

Dann kann man die Klasse auch weglassen - und wenn man lustig ist, die Funktion auch noch.

--> Ein schönes Tutorial zu OOP findet man auf php-q.net.

--rabies.


Post Scriptum: Der schließende Tag von PHP lautet nicht ?>php sondern einfach nur ?>.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: