Class Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Class Problem

    Hi, ich habe ein Problem mit diesem Script:
    PHP-Code:
    <?php
    class content {
      var 
    $id;
      var 
    $titel;
      var 
    $comment;
      var 
    $type;
      var 
    $url;
      var 
    $date;
      var 
    $datum;
      var 
    $ort;
      var 
    $galid;
      var 
    $autor;
      var 
    $recht;

    function 
    getcontent($idn) {
    $res=mysql_query("SELECT * FROM content WHERE id ='$idn'");
       while(
    $row mysql_fetch_array($res)) {
        
    $this->id[$idn] = $row[id];
        
    $this->titel[$idn] = $row[titel];
        
    $this->comment[$idn] = $row[comment];
        
    $this->type[$idn] = $row[type];
        
    $this->url[$idn] = $row[url];
        
    $this->date[$idn] = $row[date];
        
    $this->datum[$idn] = $row[datum];
        
    $this->ort[$idn] = $row[ort];
        
    $this->galid[$idn] = $row[galid];
        
    $this->autor[$idn] = $row[autor];
        
    $this->recht[$idn] = $row[recht]; } }
       }
    $content = new content;
    $content->getcontent($_GET[id]);
    echo 
    count($content);
    echo 
    $content->id[$_GET[id]];
    echo 
    $content->titel[$_GET[id]];
    mysql_close($verbindung);
    ?>
    Das Ziel des Scripts ist es, die id, die in der Browserzeile übergeben wird aus der Datenbank auszulesen, und in die Klasse content einzulesen. Jedoch funktioniert das Script nicht. Ich bekomme nicht mal einen Error. Ich bereits
    PHP-Code:
    <?php ini_set('display_errors',1);
    error_reporting(A_ALL); ?>
    versucht, aber es erscheinen immer noch keine Fehler!
    Auserdem habe ich mit var_dump content geprüft. Das Ergebnis:

    object(content)(10) { ["id"]=> NULL ["titel"]=> NULL ["comment"]=> NULL ["type"]=> NULL ["url"]=> NULL ["datum"]=> NULL ["ort"]=> NULL ["galid"]=> NULL ["autor"]=> NULL ["recht"]=> NULL }

    Oder liegt es vllt daran, dass ich nur PHP 4 habe?

    Ich würde mich über jede Hilfe freuen.
    God save the Screen

  • #2
    - beim error-reporting heisst es E_ALL
    -- wenn du das hast, kreigst du jede menge undefined constants

    - mysql_error() kann auch hilfreich sein
    -- vor allem, weil man kein connect zu db sieht
    Kissolino.com

    Kommentar


    • #3
      Hast Du mal probiert das Verbindungshandle mit zu uebergeben?

      $res=mysql_query("SELECT * FROM content WHERE id ='$idn'", $Verbindung);

      Kommentar


      • #4
        Vielen Dank für eure Tipps
        Jetzt kommt kein einziger Error mehr...
        Doch es gibt noch ein Problem. Das Script scheint den Server ziemlich stark auszulasten und ich weiß nicht warum. Und wenn ich einen Content vom Typ "gallery" öffne gibt er es nicht richtig aus (Kommentar)
        PHP-Code:
        <?php session_start(); ?>
        <link href="benutzer/forum.css" rel="stylesheet" type="text/css">
        <?php ini_set('display_errors',1);
        error_reporting(E_ALL);
        include_once(
        "benutzer/dbconnect.php");
        include_once(
        "stufe.php");
        class 
        content {
            var 
        $id;
            var 
        $titel;
            var 
        $comment;
            var 
        $type;
            var 
        $url;
            var 
        $datum;
            var 
        $ort;
            var 
        $galid;
            var 
        $autor;
            var 
        $recht;
            function 
        getcontent($idn)
            {
                
        $res=mysql_query("SELECT * FROM content WHERE id ='$idn'");
                while (
        $row mysql_fetch_array($res)) {
                    
        $this->id[$idn] = $row['id'];
                    
        $this->titel[$idn] = $row['titel'];
                    
        $this->comment[$idn] = $row['comment'];
                    
        $this->type[$idn] = $row['type'];
                    
        $this->url[$idn] = $row['url'];
                    
        $this->datum[$idn] = $row['datum'];
                    
        $this->ort[$idn] = $row['ort'];
                    
        $this->galid[$idn] = $row['galid'];
                    
        $this->autor[$idn] = $row['autor'];
                    
        $this->recht[$idn] = $row['recht'];
                } }
            function 
        format($idnr//Dient zur Formatierten ausgabe des Links zum Content
            
        {
                
        $show "<sub><img src=\"img/"$this->type[$idnr] .".gif\"></sub><a title=\""$this->titel[$idnr] ."\" alt=\""$this->titel[$idnr] ."\" href=\"content.php?id="$this->id[$idnr] ."\"> "$this->titel[$idnr] ."</a>";
                if (
        $this->type[$idnr] == "pic") {
                    
        $show "<a href=\"content.php?id="$this->id[$idnr] ."\"><img src=\"thumbnail.php?bild="$this->url[$idnr] ."&x=140\" border='0'></a>";
                } else if (
        $this->type[$idnr] == "gallery") {
                    if (
        $this->id[$idnr] != $this->galid[$idnr] or $stufe == 3) {
                        
        $galre mysql_query("SELECT id FROM content WHERE galid = '$idnr' AND type = 'pic'");
                        
        $piccount mysql_num_rows($galre);
                        if (
        $piccount 0) {
                            
        $rand rand(1,$piccount);
                            while (
        $row mysql_fetch_object(mysql_query("SELECT url FROM content WHERE galid = '"$this->id[$idnr] ."' AND type = 'pic' LIMIT $rand,1"))) {
                                
        $show "<table style=\"color:white\" border=\"0\"><tr><td><a href=\"content.php?id="$this->id[$idnr] ."\"><img border=\"0\" src=\"thumbnail.php?bild=$row->url&x=160\"></a></td><td style=\"color:#EEEEEE;\"><b>"$this->titel[$idnr] ."</b><br><b>"$this->datum[$idnr] ."</b><br><b>"$this->ort[$idnr] ."</b></td></tr></table>";
                            } } } }
                if (
        $this->type[$idnr] == "text" and isset($this->url[$idnr])) {
                    
        $show "<sub><img src=\"img/link.gif\"></sub><a title=\""$this->titel[$idnr] ."\" alt=\""$this->titel[$idnr] ."\" href=\""$this->url[$idnr] ."\"> "$this->titel[$idnr] ."</a>";
                }
                return 
        $show//Gibt den gesamten Inhalt des Contents aus
            
        }
            function 
        show($idnr)
            {
                
        $show "";
                if (
        $this->type[$idnr] == "gallery") { //Gallery == Ordner mit wiederrum Contents
                    
        $res mysql_query("SELECT id FROM content WHERE galid = '$idnr'"); //galid ist die id des Ordners, in dem der Content steht, d.h. alle Contents des angewählten Ordners werden selectet
                    
        while ($row mysql_fetch_object($res)) {
                        
        $this->getcontent($row->id); //Der Ordnerinhalt wird eingelesen
                        
        $show .= "<br>$row->id".$this->format($row->id); //HIER LIEGT DER FEHLER! Der Ordnerinhalt wird mit der format Funktion ausgegeben... Jedoch wird es hier nicht richtig ausgegeben. Der Link des Formatierten Inhalts führt nicht zur eigenen id, sondern zur Ordnerid
                    
        }}
                if (
        $this->type[$idnr] == "pic") {
                    
        $show .= "<center><p><img style=\"border-color:deepskyblue\" title=\""$this->comment[$idnr] ."\" border=\"2\" src=\""$this->url[$idnr] ."\"></p>";
                    
        $preq mysql_query("SELECT id FROM content WHERE id < '"$this->id[$idnr] ."' AND recht <= '"$_GLOBALS['stufe'] ."' AND type = 'pic' AND galid = '"$this->galid[$idnr] ."' ORDER BY 'id' DESC LIMIT 1");
                    while (
        $prev mysql_fetch_object($preq)) {
                        if (isset(
        $prev->id)) {
                            
        $show .= "<a href=\"content.php?id=$prev->id\">
        <img src=\"img/Bprev.jpg\" border=\"0\"></a>"
        ;
                        }}
                    
        $show .= "<a href=\"content.php?id="$this->galid[$idnr] ."\"><img src=\"img/Bback.jpg\" border=\"0\"></a>";
                    
        $nreq mysql_query("SELECT id FROM content WHERE id > '"$this->id[$idnr] ."' AND recht <= '"$_GLOBALS['stufe'] ."' AND type = 'pic' AND galid = '"$this->galid[$idnr] ."' ORDER BY 'id' DESC LIMIT 1");
                    while (
        $next mysql_fetch_object($nreq)) {
                        if (isset(
        $next->id)) {
                            
        $show .= "<a href=\"content.php?id=$next->id\">
        <img src=\"img/Bnext.jpg\" border=\"0\"></a>"
        ;
                        }
                    }
                    
        $show .= "</center>";
                }
                if (
        $this->type[$idnr] == "video") {
                    
        $show .= "<br><embed src=\""$this->url[$idnr] ."\" width=\"270\" height=\"300\"><br>";
                }
                if (
        $this->type[$idnr] == "flash") {
                    
        $show .= "<p align=\"center\">
                    <embed src=\""
        $this->url[$idnr] ."\" quality=\"high\"
        pluginspage=\"http://www.macromedia.com/go/getflashplayer\"
        type=\"application/x-shockwave-flash\" width=\"550\"
        height=\"400\"></embed>
        </p>"
        ;  }
                if (
        $this->type[$idnr] == "vote") {
                    
        $show .= "<img src=\"diagramm.php?cid="$this->id[$idnr] ."\"><br>
        <form action=\"votewrite.php\" method=\"post\">
        <input type=\"hidden\" name=\"id\" value=\""
        $this->id[$idnr] ."\">";
                    while (
        $row mysql_fetch_array(mysql_query("SELECT * FROM votes WHERE cid = '"$this->id[$idnr] ."'"))) {
                        
        $opcount $row['opc'];
                        
        $options = array();
                        for (
        $i=1$i<=$row['opc']; $i++) {
                            
        array_push($options,$row["op$i"]);
                        }
                        for (
        $i=1$i<=$row['opc']; $i++) {
                            
        $var "op$i";
                            
        $show .= "<input type=\"radio\" value=\"op$i\" name=\"vote\">$row[$var]<br>";
                        }}
                    
        $show .= "<input type=\"submit\" value=\"Voten!\"></form>";
                }
                
        $show .= $this->comment[$idnr];
                return 
        $show;
            }}
        $content = new content;
        $content->getcontent($_GET['id']);
        echo 
        "<h1>Richtig:</h1><br>";
        echo 
        $content->show($_GET['id']);
        echo 
        $content->format($_GET['id']);
        mysql_close($verbindung);
        ?>
        Der Rest ist nicht so wichtig... er dient nur zum Verständnis... Ich würde mich freuen, wenn es sich jemand durchlesen würde, hocke schon den ganzen Tag verzweifelt davor -.-
        God save the Screen

        Kommentar


        • #5
          1. code umbrechen gemäss regeln (stehen oben)
          2. queries in while-schleifen = böse => schau dir mal joins an oder überdenke dein konzept
          3.
          SELECT * FROM content WHERE id ='$idn'
          id ist nicht zufällig eindeutig? wenn ja, was soll die while-schleife in der ersten methode
          4. mehr kann man sagen, wenn du 1. befogt hast
          Kissolino.com

          Kommentar

          Lädt...
          X