link funktioniert nur 1 mal ******

Godstyle

Erfahrenes Mitglied
Hi Leute,

ich weiß nicht wie ich diese Situation erklären kann, ich habe ein script, das lädt die Ordner eines verzeichnisses und gibt daraus eine Datei an. Wenn ich nun den Ordner anklicke lädt er die darin befindlichen Dateien.

Es funktioniert eigentlich auch alles so wie gewünscht, nur gibt es ein Problem.

Beim ersten aufruf kann ich den ersten Ordner anklicken mir die Bilder anzeigen lassen. Wenn ich dann jedoch auf zurück klicke wird die Seite mit den Ordnern wieder geladen, ab dann kann ich jedoch den ersten Ordner nicht erneut öffnen, alle anderen Ordner funktionieren ohne Probleme nur der besagt erste ist lediglich beim ersten aufruf zu öffnen.

Hier mal das script:

PHP:
$alledateien = scandir("../../../all_img/".$_SESSION['provisitid']."/"); //Ordner "files" auslesen
foreach ($alledateien as $datei) { // Ausgabeschleife
	if ($datei != "." && $datei != "..") 
	{
			$a_dateien = glob("../../../all_img/".$_SESSION['provisitid']."/".$datei."/*");

			for ($x = 0; $x < 1; $x++)
			{
			echo "<div style=float:left;height:140px;width:100px;>";
			echo "<div style=height:100px;width:100px;>";
				$path_parts = pathinfo("../../../all_img/".$_SESSION['provisitid']."/".$datei."/".$a_dateien[$x]."'");
				echo "<a href=?profil=3&com_kat=2&prof=10&visuser=".$_SESSION['provisit']."&us=".$_SESSION['provisitid']."&fold=".$datei." id=fotos >
<img src=includes/all_img/".$_SESSION['provisitid']."/".$datei."/".$a_dateien[$x]." alt=".$path_parts['filename']." style=max-height:100px;max-width:100px;></a>";
		echo "</div>";
		echo "<div style=height:40px;width:100px;>";
			echo str_replace('_', ' ', $datei). "<br />(" .count( (is_array($a_dateien) ? $a_dateien : NULL) ) .") Bilder";
		echo "</div>";	
	echo "</div>";

			}
 	}

irgendwie verstehe ich nicht warum es nur beim ersten Ordner so ist. Das ganze ist auch Profil unabhängig und egal wieviele Ordner es gibt der erste macht Probleme

EDIT // versucht besser zu formatieren
 
Zuletzt bearbeitet:
Hast du das Standard-Verhalten bei Fehlersuche schon angewendet (error_reporting, display_errors...)?

Was bedeutet, das du den Ordner nicht erneut öffnen kannst? Wie äußert sich das? Bekommst du eine weiße Seite? Kannst du den Link nicht anklicken? Gibt es keinen Link? Was genau heißt das?
 
Hab ich dir schon mal geschrieben dass du dein Code formatiern solltest?
Sorry, ich seh da nicht ohne den Code selber zu formatieren wo welche Schleife/Bedinung wo endet.
 
@ yaslow das Problem hier ist das die zeielen recht lang sind in dreamweaver sieht das ganze anders aus.

@saftmeister: er öffnet den Ordner, ich bekomme auch angezeigt das er die Andere Seite eingelesen hat, jedoch fehlen alle bilder, er zeigt mir Den namen des albums auch an, fehler behandlung mir error reporting liefert kein ergebnis, firefox zeigt mir bei JS fehlern an das das ein array nicht belegt ist, das macht er auch bei den anderen seiten und ich weiß woher das kommt und für das script irrelevant.

Alsoe ich rufe das script auf und jeder ordner ist zu öffnen. gehe ich dann auf zurück über das aufgerufene script kann ich jeden ordner ausser den ersten öffnen.
 
Tipp bei langen Zeilen
[code=php]code[/code] verwenden

PHP:
$alledateien = scandir("../../../all_img/".$_SESSION['provisitid']."/"); //Ordner "files" auslesen
foreach ($alledateien as $datei) { // Ausgabeschleife
    if ($datei != "." && $datei != "..") 
    {
            $a_dateien = glob("../../../all_img/".$_SESSION['provisitid']."/".$datei."/*");

            for ($x = 0; $x < 1; $x++)
            {
            echo "<div style=float:left;height:140px;width:100px;>";
            echo "<div style=height:100px;width:100px;>";
                $path_parts = pathinfo("../../../all_img/".$_SESSION['provisitid']."/".$datei."/".$a_dateien[$x]."'");
                echo "<a href=?profil=3&com_kat=2&prof=10&visuser=".$_SESSION['provisit']."&us=".$_SESSION['provisitid']."&fold=".$datei." id=fotos >
<img src=includes/all_img/".$_SESSION['provisitid']."/".$datei."/".$a_dateien[$x]." alt=".$path_parts['filename']." style=max-height:100px;max-width:100px;></a>";
        echo "</div>";
        echo "<div style=height:40px;width:100px;>";
            echo str_replace('_', ' ', $datei). "<br />(" .count( (is_array($a_dateien) ? $a_dateien : NULL) ) .") Bilder";
        echo "</div>";    
    echo "</div>";

            }
     }
Ist zwar immer noch nicht lesbar mit den echos auf versch. Positionen innerhlab einer {}, aber die Zeilenumbrüche sind weg
 
Wo yaslaw Recht hat...

Mach doch mal ein paar Debug-Punkte rein und kontrolliere, ob die Kern-Werte korrekt sind (hab den Code noch mal formatiert und zu mindest valides HTML rein gemacht):

PHP:
<?php
// echo 'DEBUG: $_SESSION['provisitid'] = ' . $_SESSION['provisitid'].'<br/>';

$alledateien = scandir("../../../all_img/".$_SESSION['provisitid']."/"); //Ordner "files" auslesen

foreach ($alledateien as $datei)
{ // Ausgabeschleife
	if ($datei != "." && $datei != "..")
	{
		$a_dateien = glob( sprintf("../../../all_img/%d/%s/*", $_SESSION['provisitid'], $datei) );

		for ($x = 0; $x < 1; $x++)
		{
			echo '<div "style=float:left;height:140px;width:100px;">';
			echo '<div "style=height:100px;width:100px;">';
			$path_parts = pathinfo( sprintf("../../../all_img/%d/%s/%s'", $_SESSION['provisitid'], $datei, $a_dateien[$x]) );
			echo '<a href="?profil=3&com_kat=2&prof=10&visuser='.$_SESSION['provisit'].'&us='.$_SESSION['provisitid'].'&fold='.$datei.'" id="fotos">';
			echo '<img src="includes/all_img/'.$_SESSION['provisitid'].'/'.$datei.'/'.$a_dateien[$x].'" alt="'.$path_parts['filename'].'" style="max-height:100px;max-width:100px;"></a>';
			echo '</div>';
			echo '<div style="height:40px;width:100px;">';
			echo str_replace('_', ' ', $datei). '<br />(' .count( (is_array($a_dateien) ? $a_dateien : NULL) ) .') Bilder';
			echo '</div>';
			echo '</div>';

		}
	}
}

PS: Ich mach eigentlich immer die highlight-Variante, da man dort auf die roten Links klicken kann und direkt im PHP-Manual landet (bei den bekannten Befehlen aus dem Standard-Namespace).

EDIT: Warum läuft die For-Schleife eigentlich nur einmal durch? Müsste da bei $x < 1 nicht eigentlich $x < count( $a_dateien ) rein?
 
Zuletzt bearbeitet:
@yaslaw, danke für den TIPP den wusste ich nicht, auch weiß ich noch nicht wie ich JS code richtig anzeige.

@ saftmeister das mit der for schleife ist eine gute frage, ursprünglich war das script anders und die ist irgendwie übergeblieben das count hatt ich wohl nur entfernt damit er mir immer nur das erste Bild aus dem Ordner zurück liefert
 
Zurück