Seite 1 von 1

FEhler in meiner eigenen Klasse

Verfasst: 31.01.2006 19:21
von witzigerkiller
Hallo, ich sehe immer öfter, das die leute, zum auslesen der daten klassen benutzen. Finde leider den fehler net, ist totales neuland für mich

Code: Alles auswählen

<?PHP
class db
{
  var $query = "";
  
  function display()
  {
    $this->query = mysql_query($this->query);
    $this->query = mysql_fetch_assoc($this->query);
    return $this->query['Vorname'];
  }
}

$db = new db();

$db->query = "SELECT * FROM member";
$db->display();
?>
DAnke

Verfasst: 01.02.2006 16:50
von witzigerkiller
also es wird nichts ausgegeben

Verfasst: 02.02.2006 06:41
von witzigerkiller
*schieb*

Verfasst: 02.02.2006 13:52
von Gast210225
Siehst du irgendwo in dem Code ein echo() ?
Es muss so heißen:

Code: Alles auswählen

echo ( $db->display() );

Viele Grüße,
Johannes

Verfasst: 02.02.2006 13:53
von witzigerkiller
gleich ausprobieren.... Danke schonmal

Verfasst: 02.02.2006 14:20
von witzigerkiller
so, danke, habe das jetzt mal gemacht....

Habe jetzt versucht aus der DAtenbank verschiedene Spalteneinträge auszulesen:

Code: Alles auswählen

<?PHP

// Verbindungsaufbau

$db_server = "localhost"; // Datenbank Server
$db_benutzer = "root";  // Datenbank Benutzer
$db_passwort = "";  // Datenbank Passwort
$db_name  = "bcp"; // Datenbank Name

$verbindung = mysql_connect($db_server, $db_benutzer, $db_passwort) OR die("Fehler beim Connecten mit der Datenbank: ".mysql_error());

mysql_select_db($db_name) OR die ("Fehler beim Datenbank ausw&auml;hlen: ".mysql_error());

// Datenbank Klasse

class db
{
  // Funktion zum hinzuf&uuml;gen von Eintr&auml;gen
  function insert()
  {
    $this->insert = mysql_query($this->insert);
  }
  // Funktion zum auslesen der Eintr&auml;ge
  function display($ausgabefeld)
  {
    $this->display = mysql_query($this->display);
    $this->display = mysql_fetch_assoc($this->display);
    return $this->display[$ausgabefeld];
  }
}

// Klasse der Datenbank wird aufgerufen
$db = new db();

$db->display = "SELECT * FROM member WHERE Vorname = 'Tobias'";
echo $db->display('Vorname')."<br />";

echo $db->display('id');

?>
nur leider wird das erste echo ausgegebn, und beim 2ten kommt ne fehlermeldung...
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\test\class.php on line 27
aber der mysql befehl muss richtig sein, da er ja das erste feld auch ausliest

Verfasst: 02.02.2006 15:15
von QCO
Ja, beim zweiten Aufruf wird auch das
mysql_query()
nochmal ausgeführt. Und $this->display ist zu dem Zeitpunkt kein valider SQL-Query [sondern ein Array].

Verfasst: 02.02.2006 15:19
von witzigerkiller
danke, habe die klasse nun so geändert:

Code: Alles auswählen

class db
{
  // Funktion zum hinzuf&uuml;gen von Eintr&auml;gen
  function insert()
  {
    $this->insert = mysql_query($this->insert);
  }
  // Funktion zum auslesen der Eintr&auml;ge
  function display()
  {
    $this->display = mysql_query($this->display);
    $this->display = mysql_fetch_assoc($this->display);
    return $this->display;
  }
}

// Klasse der Datenbank wird aufgerufen
$db = new db();

$db->display = "SELECT * FROM member WHERE Vorname = 'Tobias'";

$db->display();

echo $db->display['Vorname']."<br />";
echo $db->display['id'];
so funzt das auch wunderbar

EDIT: WIE KÖNNTE MAN DAS NOCH BESSER MACHEN? Ich habe auch gelesen, das manche da sowas machen /*@DESC: Titel*/

odersowas, was ist das genau, ist das nötig?