Variable wird gesetzt, obwohl nicht möglich...

LudwigK

Grünschnabel
Hallo Community,
erstmal Danke, dass es Euch gibt - habe mal wieder ein Problem, dass mir den letzten Nerv raubt:
Aus einer Datenbank werden mehrere Datensätze geladen und die sollen in eine Tabelle geschrieben werden. Sobald ein neues Kapitel kommt, soll das als Überschrift verwendet werden.

PHP:
while($LP = mysql_fetch_array($res_sel_LP)) {
        $id_lp = $LP['ID'];
        $vt_lp = $LP['vt'];
        $pt_lp = $LP['pt'];
        $pt_pr = $LP['Preis'];
        $pt_bz = $LP['Bauzeit'];
        $sort_lp = $LP['sort'];
        $id_ukap = substr($sort_lp, 1, 2).'.'.substr($sort_lp, 3, 2);
        $id_nkap = substr($sort_lp, 1, 4);
        unset($LP);

        $page = $pdf->PageNo();

    //Zuerst Übrerschrift überprüfen
        if ($id_nkap != $id_akap) {
            $debug = $id_nkap.'A'.$id_akap;
           
            $sel_ukap_o = "SELECT bez FROM 1314_group WHERE id = '".$id_ukap."'";
            $res_sel_ukap_o = mysql_query($sel_ukap_o) or die(mysql_error() . "<br><br>" . $sel_ukap);
            $erg_sel_ukap_o = mysql_fetch_array($res_sel_ukap_o);
            $bez_ukap_o = $erg_sel_ukap['bez'];
            $id_akap = $id_nkap;
            }
        else {$debug = '';}

// hier geht es noch weiter, ...
}

Die Variable $id_akap wird zu keiner Zeit im kompletten Skript verwendet, einzig und allein in diesem Teil. Das Problem ist, der Ausdruck $debug zeigt mir, dass obwohl es eine neue Überschrift gibt, die Variable $id_akap bereits gleich der $id_nkap ist, aber das geht eigentlich nicht... Hat jemand von Euch eine Idee?
 
Lass dir mal mit var_dump() beide Variablen direkt vor dem Vergleich ausgeben und schau was drin steht.
ggf sind beide leer....
 
Danke Dir für den Hinweis. Bei var_dump() war zu sehen, dass die Variablen gesetzt waren und an den richtigen Stellen auch unterschiedliche Werte hatten.

Einzig wundere ich mich nur, warum die Variable $debug mir einen gleichen Inhalt der Variable $id_akap und $id_nkap gezeigt hat... Genauso interessant ist es auch, dass das Script jetzt funktioniert, obwohl nicht geändert wurde...

Yaslaw, noch mal vielen Dank!
 
Heisenbug. Verschwindet bei Beobachtung. :) Im Zweifel so lange Dinge mit var_dump ausgeben, bis du dir sicher bist, was warum passiert.

Du solltest die mysql_*-Funktionen mal durch mysqli oder PDO austauschen. Die mysql-Extension ist veraltet. (Siehe etwa Hinweis hier: http://de2.php.net/manual/en/function.mysql-query.php)

Zudem der Vollständigkeit halber noch der Hinweis auf SQL-Injections/Kontextwechsel. Mag sein, dass das an der Stelle keine Rolle spielt, aber Beachtung von so was schadet nie.

- http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
 
Alles klar! Danke für die Hinweise - wird erledigt!
Das System befindet sich im Intranet und wird nur von meiner Seite bedient, aber der Erfahrung schadet es auch nicht sich mit dem Thema auseinanderzusetzen!
 
Übrigens gibt es zu den var_dumps() ein viel mächtigeres Werkzeug: XDebug + Breakpoints.
Dann kannst du alle Variableninhalte auslesen.
 

Neue Beiträge

Zurück