Mysql --> Query nimmt während einer Schleife andere Wert an

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
Eigentlich sollte die Klasse ja funktionen ist ja genauso wie die des wbb1.
Sogar die gleichen Namen!

Naja egal.
Leider verstehe ich dein Problem auch nicht.
Moeglicherweise liegts am Aufbau der Datenbank oder keine Ahnung.
Schonmal den Query ausgeben lassen ,um zu sehen was er holt(mehr faellt mir m Moment nicht ein).

Um auszuschließen das es an deiner Mysql Klasse ,liegt ,versuche dochmal ohne die Klasse die Daten zu holen,.
 
Zuletzt bearbeitet:
Original geschrieben von KristophS
Eigentlich sollte die Klasse ja funktionen ist ja genauso wie die des wbb1.
Sogar die gleichen Namen!

Naja egal.
Leider verstehe ich dein Problem auch nicht.
Moeglicherweise liegts am Aufbau der Datenbank oder keine Ahnung.
Schonmal den Query ausgeben lassen ,um zu sehen was er holt(mehr faellt mir m Moment nicht ein).

Um auszuschließen das es an deiner Mysql Klasse ,liegt ,versuche dochmal ohne die Klasse die Daten zu holen,.

Muss ich mir glatt mal die Klasse des WBBs angucken :).

Naja, die Namensähnlichkeit kann davon kommen, weil die genau wie ich zufaul waren extra Namen für die bereits vordefinierten MySQL Sachen auszudenken *G *.
 
vermute das hier drin der fehler liegt:

PHP:
<?php

function blockfile($topic, $blockfile, $side = 0, $db)  // falls der Block auf eine Blockdatei aufbaut <img src="images/smilies/wink.gif" border="0" alt=""> 
{ 
    $file = @file("block/$blockfile"); 
    if(!$file) 
    { 
        $content = _blocknot;        // Wenn was schiefläuft ( Data nicht da, etc. dann einfach nen Fehler ausspucken) 
    } 
    else 
    { 
        include "block/$blockfile"; // wenn keiner Fehler passiert, die Datei inkludieren 
    } 
    if($content == ""){ 
        $content = _blockempty; 
    } 
    Else{ 
        if($side == "1"){ 
            $template    = gettemplate("center_box"); 
        } 
        elseif($side == "2"){ 
            $template    = gettemplate("center_box"); 
        } 
        else{ 
            $template    = gettemplate("box"); 
        } 
    } 
            $template .= eval ("\$template = \"$template\";"); 
return $template; 
}

?>

muss aber net :) hab nicht alles gelesen......... aber dein include sieht mir schwer verdächtig aus..............
 
Original geschrieben von saila
vermute das hier drin der fehler liegt:

PHP:
<?php

function blockfile($topic, $blockfile, $side = 0, $db)  // falls der Block auf eine Blockdatei aufbaut <img src="images/smilies/wink.gif" border="0" alt=""> 
{ 
    $file = @file("block/$blockfile"); 
    if(!$file) 
    { 
        $content = _blocknot;        // Wenn was schiefläuft ( Data nicht da, etc. dann einfach nen Fehler ausspucken) 
    } 
    else 
    { 
        include "block/$blockfile"; // wenn keiner Fehler passiert, die Datei inkludieren 
    } 
    if($content == ""){ 
        $content = _blockempty; 
    } 
    Else{ 
        if($side == "1"){ 
            $template    = gettemplate("center_box"); 
        } 
        elseif($side == "2"){ 
            $template    = gettemplate("center_box"); 
        } 
        else{ 
            $template    = gettemplate("box"); 
        } 
    } 
            $template .= eval ("\$template = \"$template\";"); 
return $template; 
}

?>


muss aber net :) hab nicht alles gelesen......... aber dein include sieht mir schwer verdächtig aus..............

Naja, aber wie sollte ich die Datei anders kriegen, als durch nen include oder require? Kann der include damit wirklich was zu tun haben?

Ich mein, ich habe auch so noch Blöcke, die auch inkludiert werden, die Nachfolgenden Blöcke werden dort wie gewohnt dargestellt ...
 
ok, das Problem ist reproduzierbar!

Also ich habe ma ne Versuchreihe gemacht:

$sql = "select * from ". $prefix ."_news_comments where id = $id";
$db -> query($sql);
while($result = $db -> fetch_array()){
$db -> query("select sig, avatar from `". $prefix ."_user` where `name` = '$autor'");
$details = $db -> fetch_array();
}

Nach dem ersten Kommentar was er kriegt, bricht er ab :heul:,
es muss also doch an der Klasse liegen, aber wie kriegt man die So editiert, das
das Problem nicht mehr autritt
 
Öhm bist du dir sicher ,dass es Kommentare gibt ,die die gleiche ID haben?
Schau an Gettemplate ,ist ja genauso wie die des wbb`s ;)..

Die originalklasse des wbb`s hatte eine Funktion die heis query_first.
Damit konntest zuerst queryn ,dann die daten fetch und daraufhin gibt er dir n Array zurück und als letztes free`t der die Daten.

Du konntest es nat. auch mit eindeutigen Query Namen/Array machen.
 
Zuletzt bearbeitet:
Original geschrieben von KristophS
Öhm bist du dir sicher ,dass es Kommentare gibt ,die die gleiche ID haben?
Schau an Gettemplate ,ist ja genauso wie die des wbb`s ;)..

Die originalklasse des wbb`s hatte eine Funktion die heis query_first.
Damit konntest zuerst queryn ,dann die daten fetch und daraufhin gibt er dir n Array zurück und als letztes free`t der die Daten.

Du konntest es nat. auch mit eindeutigen Query Namen/Array machen.

Sollte ich jetzt alle meine Sourccodes durchgucken, nur um zu sehen, ob jemand nicht den gleichen Funktionnamen, etc benutzen könnte? :rolleyes:

Was steht in der Funktion "query_first" drinne?
Habe den Source vom WBB1 nicht vorliegen :(.


Was meinste mit eindeutigen Query Name Die kriegen doch gar keine Namen?
 
Ok ich sag dir wo dein Skript nicht geht

Du hast eine $query_id vor der While-Schleife. In der While-Schleife bekommt deine $query_id ein neuen Wert durch die neue Abfrage. Somit kommt dein while($result = $db -> fetch_array()){ durcheinander
PHP:
$sql = "select * from ". $prefix ."_news_comments where id = $id";
$db -> query($sql);
while($result = $db -> fetch_array()){
$db -> query("select sig, avatar from `". $prefix ."_user` where `name` = '$autor'");
$details = $db -> fetch_array();


PHP:
function query($query){ 
                     $this -> query_id = @mysql_query($query, $this->link_id); 
                    $this -> query_c++; 
                    if(!$this ->query_id) { 
                                        echo "Der Query <i>$query</i> konnte nicht ausgeführt werden"; 
                    } 
                    $this -> aff_rows =@mysql_affected_rows($this->query_id); 
                    return $this->query_id; 
} 
 Ich glaube genau, hier liegt der Fehler, das die Query_Id nicht richtig verarbeitet wird und das sich dadurch die Queries verheddern 
function fetch_array($query_id = -1) { 
                 if($query_id != -1) 
                 { 
                         $this -> query_id = $query_id; 
                 } 
                 $this -> record = mysql_fetch_array($this-> query_id); 
                 return $this -> record;

mach aus deiner $query_id ein Array und dann müsste es klappen. Deswegen haste doch den Query-Counter drin oder?
 
Original geschrieben von KoMtuR
Ok ich sag dir wo dein Skript nicht geht

Du hast eine $query_id vor der While-Schleife. In der While-Schleife bekommt deine $query_id ein neuen Wert durch die neue Abfrage. Somit kommt dein while($result = $db -> fetch_array()){ durcheinander
PHP:
$sql = "select * from ". $prefix ."_news_comments where id = $id";
$db -> query($sql);
while($result = $db -> fetch_array()){
$db -> query("select sig, avatar from `". $prefix ."_user` where `name` = '$autor'");
$details = $db -> fetch_array();


PHP:
function query($query){ 
                     $this -> query_id = @mysql_query($query, $this->link_id); 
                    $this -> query_c++; 
                    if(!$this ->query_id) { 
                                        echo "Der Query <i>$query</i> konnte nicht ausgeführt werden"; 
                    } 
                    $this -> aff_rows =@mysql_affected_rows($this->query_id); 
                    return $this->query_id; 
} 
 Ich glaube genau, hier liegt der Fehler, das die Query_Id nicht richtig verarbeitet wird und das sich dadurch die Queries verheddern 
function fetch_array($query_id = -1) { 
                 if($query_id != -1) 
                 { 
                         $this -> query_id = $query_id; 
                 } 
                 $this -> record = mysql_fetch_array($this-> query_id); 
                 return $this -> record;


mach aus deiner $query_id ein Array und dann müsste es klappen. Deswegen haste doch den Query-Counter drin oder?

Nein der Query Counter ist dafür da, das man damit am Ende die Nummer der Queries ausgeben kann :p *g*.


EDIT: Wie meinste das mit in "Array" umwandeln eigentlich? ;), geb ma bitte nen kleines Beispiel *g*
 
Zuletzt bearbeitet von einem Moderator:
Zurück