alex: problem mit klassen...

hi...

hier mal auschnitte aus den klassen:
class db
{
function sql($sql)
  {
    if (!$this->erg = mysql_query($sql, $this->connid))
    {
    echo "Fehler beim Senden der Abfrage...";
    }
  return $this->erg;
  }
}

class News extends db
{
    function GetNews()
    {
  $this->sql("SELECT headline,datum FROM news");

}

}

hauptprogramm:

<?
include ("classes/class_mysql.php");
include("classes/news.php");

$news_xx = new News;
$news_xx->GetNews();

?>

wenn ich das hauptprogramm aufrufe, bekomm ich immer ne meldung

"Fehler beim senden der Abfrage" obwohl die abfrage ja ok ist.

auch bei anderen sql-anweisungen dasselbe.

kann mir jemand sagen wo der fehler hier liegt?

  1. Hallo,

    wenn ich das hauptprogramm aufrufe, bekomm ich immer ne meldung
    "Fehler beim senden der Abfrage" obwohl die abfrage ja ok ist.
    auch bei anderen sql-anweisungen dasselbe.
    kann mir jemand sagen wo der fehler hier liegt?

    Ich meine das liegt daran, dass die Eigenschaften erg und connid nicht definiert wurden. Als Lesetipp hätte ich http://at2.php.net/oop anzubieten.

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dick
    1. Hallo,

      ich habe jetzt im hauptprogramm folgende zeilen eingefügt:

      $db = new db;
      $db -> select_db();

      nun geht es..nur warum versteh ich nicht, ich hatte gedacht wenn ich die klasse ableite müsste ich im hauptprogramm diese 2 zeilen nicht einfügen

      1. Hallo,

        nun geht es..nur warum versteh ich nicht, ich hatte gedacht wenn ich die klasse ableite müsste ich im hauptprogramm diese 2 zeilen nicht einfügen

        Ich habe das Gefühl, dass du ein paar Codezeilen unterschlägst. Wenn ich raten müsste, würde ich sagen, dass bei deinem ersten Versuch keine Datenbank ausgewählt wurde ( Vorausgesetzt, die Methode select_db() ist ein Wrapper für mysql_select_db()). Um Gewissheit zu erhalten, empfehle ich die die Ausgabe von mysql_error().

        gruß,
        Severin

        --
        Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
        --Philip K. Dick
        1. Kleiner Tipp am Rande, wenn Du wirklich gute Hilfe willst, dann darfst Du uns hier nicht die Hälfte Deines Codes unterschlagen...

          Wer Angst hat, dass wir ihm seinen Code klauen, der sollte sowieso nichts posten, denn wer geholfen bekommt, sollte auch anderen helfen, oder etwa nicht?!

          Also, ich denke auch dass Du einfach keine Verbindung zur Datenbank aufgebaut hast! Die Verbindung zur Datenbank solltest Du aber auch über die Klasse News aufbauen können, sofern die Methode in der Klasse db drinnen ist. Also überleg mal genau WAS Du tust und WAS Du tun möchtest, ich denke dann findest Du den Fehler recht schnell...

          Gruss und frohe Weihnachten

          Stefan

      2. Hallo!

        ich habe jetzt im hauptprogramm folgende zeilen eingefügt:

        $db = new db;
        $db -> select_db();

        ist die Klasse "db" die Du gepostet hast? Denn da kann ich keine select_db() Methode drin entdecken.

        Aber da liegt wie Du gemerkt hast das Problem: Du musst erstmal eine Verbindung zur DB herstellen(bzw. DB auswählen), danach kannst Du erst Abfragen machen.

        nun geht es..nur warum versteh ich nicht, ich hatte gedacht wenn ich die klasse ableite müsste ich im hauptprogramm diese 2 zeilen nicht einfügen

        Das kommt drauf an was genau Du machst. Guck Dir Deinen Code an - wird vor der query ein connect und ein select_db ausgeführt? Das musst Du sicherstellen, und nach Möglichkeit sollte das nur einmal pro Script passieren.
        Außerdem solltest Fehler mit entsprechenden Funktionen und Rückgabewerten abfangen.

        z.B. mysql_connect(...) or die('keine Verbindung....')
        oder mysql_query(...) or die ("Ungültige Abfrage: " . mysql_error());

        ...

        solche Sachen sind sehr hilfreich  bei der Fehlersuche.

        Grüße
        Andreas

        1. ist die Klasse "db" die Du gepostet hast? Denn da kann ich keine select_db() Methode drin entdecken.

          in der klasse db ist eine methode select_db drin. ich habe nur nen auschnitt hier gepostet. naja aber nun weiss ich ja woran es lag

  2. Hallo,
    bei ihrer ersten if-Abfrage müssen Sie ein "==" verwenden.
     == Vergleicht zwei Werte mit einander, z.B. in if-Abfragen
     = weist einer Variable einen Wert zu

    1. Hi!

      bei ihrer ersten if-Abfrage müssen Sie ein "==" verwenden.
      == Vergleicht zwei Werte mit einander, z.B. in if-Abfragen
      = weist einer Variable einen Wert zu

      Was ja auch Sinn der Sache ist wenn ich das richtig verstehe ;-)

      Grüße
      Andreas

    2. Hallo,

      bei ihrer ersten if-Abfrage müssen Sie ein "==" verwenden.
      == Vergleicht zwei Werte mit einander, z.B. in if-Abfragen
      = weist einer Variable einen Wert zu

      Das hängt sehr stark davon ab, was du machen willst.

      if (!$this->erg = mysql_query($sql, $this->connid))

      Überprüft ob der Rückgabewert der Funktion mysql_query(), der der Eigenschaft erg zugewiesen wird, wahr oder falsch ist. Würde er wissen wollen, ob der Rückgabewert der Funktion mysql_query dem Wert der Eigenschaft erg entspricht hätte er den Vergleichsoperator == verwendet.

      gruß,
      Severin

      --
      Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
      --Philip K. Dick