Unerklaerlicher Abbruch
Christian W.
- php
0 dedlfix0 Götz0 Christian W.-1 Tom0 Christian W.0 Tom
Hallo Forum,
ich habe einen mir unerklaerlichen Abbruch in einer foreach Schleife.
Das Problem kann ich leider auch nicht eingrenzen oder irgendwie ableiten, desshalb erkläre ich erst mal wie ich die Seite aufbauen lasse.
Also ich habe nur die index.php die durch Benutzereingaben dann mit require_once Unterdateien einbindet. In diesen Unterdateien binde ich wieder mit require_once Dateien ein. Das geht ungefaehr 4-5 "Ebenen" so weiter.
Das funktioniert auch, jedoch bin ich mir nicht ganz sicher ob hier vielleicht schon ein parsergewurschtel stattfindet.
In index.php->Unterdatei.php binde ich dann wieder head.php, body.php und foot.php mit require_once ein.
In head.php ist eine Menueauswahl, die die body.php festlegt. Also Menuepunkt 1 = body1.php, Menupunkt 2 = body2.php usw.
In dieser head.php ist die foreach Schleife, die 'Probleme' macht.
Der Aufbau der foreach Schleife ist korrekt, da ich Sie noch oefters in meinem Projekt verwende und sie dort auch funktioniert. Auch Menuepunkt 1 (body1.php) wird richtig eingebunden.
In Menuepunkt 2 (body2.php) funktioniert das zuerst auch, allerdings habe ich dort ein Formular, bei dessen klick auf den Submit Button wieder die body2.php aufgerufen wird, jedoch mit anderen Parametern.
Und hier versagt ploetzlich die headt.php foreach Schleife. Die get bzw. Post parameter sind korrekt!
Hier mal ein Ausschnitt:
echo '<table style="width:100%" cellspacing="0">'."\n";
echo '<tr>'."\n";
echo '<td width="50" style="border-bottom:1px solid #FAFAFA;"> </td>'."\n";
foreach($ServiceItems as $key => $val) {
if($sel2 == $key) {
echo '<td width="5" '.$styleActive.'>'."\n";
echo '<nobr> '.$ServiceItems[$key].' </nobr>'."\n";
echo '</td>'."\n";
} else {
echo '<td width="5" '.$styleInactive.'>';
echo '<nobr> <a href="'.$_SERVER['PHP_SELF'].'?sel='.$sel.'&sel2='.$key.'" '.$linkStyle.'>'.$ServiceItems[$key].'</a> </nobr>'."\n";
echo '</td>'."\n";
} /* end if($sel == $key) */
} /* end foreach($items as $key => $val) */
echo '<td style="border-bottom:1px solid #FAFAFA;"> </td>'."\n";
echo '</tr>'."\n";
echo '</table>'."\n\n";
Der Abbruch geschieht nach dieser Zeile, wobei die Zeile vollstaendig richtig abgearbeitet wurde:
echo '<nobr> <a href="'.$_SERVER['PHP_SELF'].'?sel='.$sel.'&sel2='.$key.'" '.$linkStyle.'>'.$ServiceItems[$key].'</a> </nobr>'."\n";
(Ach so, nobr, na ja die Seite ist nur fuern privatgebrauch)
Alles danach wird einfach nicht mehr Ausgegeben.
Ok ich habe verstaendnis wenn hier keiner drauf antworten will, weil die Beschreibung einfach zu vage ist, dennoch wenns jemad macht schon mal vielen Dank.
Gruesse aus Mainz
Christian W.
Alles danach wird einfach nicht mehr Ausgegeben.
Einfach so? Ohne Fehlermeldung? Hast du error_reporting auf E_ALL stehen?
Ja, keine Fehlermeldung, gar nichts einfach Abbruch. ??????
Hallo Christian!
ich habe einen mir unerklaerlichen Abbruch in einer foreach Schleife.
Wie dedlfix schon sagte: erstmal error_reporting(E_ALL) setzen.
Dann bau Dir ein paar Debug-Ausgaben ein und versuche so das Problem schrittweise einzugrenzen.
Mehr kann ich Dir nicht raten, da Deine Beschreibung für mich nicht mehr hergibt.
MfG
Götz
Hallo Götz,
E_ALL ist gesetzt. -> keine Ausgabe nicht mal Notice: Undefined.. etc.
print_r($GLOBALS) -> alles wie's sein sollte
mehr debug ist unnoetig, da die head.php (mit der foreach Schleife) mehrmals in meinem Projekt eingesetzt wird und bis jetzt keine Probleme gemacht hat.
Ich habe auch grade unter dem Formular, das den "fehler" produziert ein weiteres Formular mit dem gleichen url aufruf eingefuegt und da gings. ???
Gruesse aus Mainz
Christian W.
Hello,
mehr debug ist unnoetig, da die head.php (mit der foreach Schleife) mehrmals in meinem Projekt eingesetzt wird und bis jetzt keine Probleme gemacht hat.
Warum fragst Du dann hier nach Hilfe?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo
mehr debug ist unnoetig, da die head.php (mit der foreach Schleife) mehrmals in meinem Projekt eingesetzt wird und bis jetzt keine Probleme gemacht hat.
Warum fragst Du dann hier nach Hilfe?
Weil es hier Profis gibt, die vielleicht so ein aehnliches Problem schon mal hatten und geloest haben.
(da ich mittlerweile annehme, dass es sich nicht um die foreach selber handelt sondern um irgendein internes parser problem)
gruesse
Hello,
Warum fragst Du dann hier nach Hilfe?
Weil es hier Profis gibt, die vielleicht so ein aehnliches Problem schon mal hatten und geloest haben.
(da ich mittlerweile annehme, dass es sich nicht um die foreach selber handelt sondern um irgendein internes parser problem)
Das ist sehr unwahrscheinlich, wenn auch nicht unmöglich.
Ich habe ein solches Problem aber auch schon einmal gehabt.
Damals habe ich mir dann diese besondere Schreibweise für Blöcke
foreach( ...)
{
## tu was;
}
und die besonders luftige Schreibweise für conkatinierte Strings
$str = ''; ## Ausgabe für blah und blubb
$str .= 'hier fängt der Text an'; ## noch ein Kommentar
$str .= reflect('POST.feldname'); ## wenn gesendet wieder ausgeben
usw.
Es ist also manchmal lohnenswert, sich über die Strukturierung und Formatierung seiner Scripte intensive Gedanken zu machen. Das entwickelt sich dann bis zu einem bestimmten "Spleen" immer weiter, aber es lohnt sich auch. Wenn sich dann auch noch das ganze Team daran hält, findet man Fehler (die treten immer auf) in immer kürzerer Zeit.
Der PEAR-Standard gefällt mir hier schon fast gut, mit Ausnahme eben der hochgezogenen Klammer für den Blockbeginn.
Da Du ja weiteres Debugging ablehnst, kann ich Dir nur empfehlen, den Code auf vergessene Häkchen, Klammern (runde und geschweifte) und Semikolen zu untersuchen. Auch fehlende Parder-Schalter ( <?php und ?> ) erfreuen einen da manchmal.
Ich tippe auf eine fehlende geschweifte Klammer.
Wer verwaltet die Wetten?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom