Array Übergabe

WACSF

Erfahrenes Mitglied
Guten Tag,
ich habe eine Galerie, in der die Thumbnails angezeigt werden. Wenn mann auf eines klickt, wird auf der gleichen Seite das Bild aufgerufen, doch steht mir dort mein array, in das ich die Bilder reingelesen habe nicht mehr zur Verfügung. Ich brauche dieses Array, um eine Blätterfunktion (VOR, ZURÜCK) realisieren zu können.

Hier der Code:
Die url zur view.php schaut so aus: view.php?action=thumbs&viewid=18

$viewid = ID der gallerie

PHP:
<?php
include ("dbconnect.php");
if ($action == thumbs)
	{
	$abfrage = "SELECT ID, KATEGORIE, DATUM, WOCHENTAG, BESCHREIBUNG, FOTOGRAF, ICON FROM fa_gallerie WHERE ID = '$viewid'"; 
  	$ergebnis = mysql_query($abfrage); 
					
  						while($row = mysql_fetch_object($ergebnis)) 
    						{ 
								$ordner = "gallerie/$row->KATEGORIE/$row->DATUM ".date("d.m.Y",$row->DATUM)." $row->BESCHREIBUNG ($row->FOTOGRAF)/thumps";
							}

					$verz = opendir("$ordner");
					$i = 0; 
						while ($datei = readdir($verz))
							{
							
								$dateineu = explode (".", $datei);
									if ($dateineu[1] == "JPG" || $dateineu[1] == "jpg" || $dateineu[1] == "JPEG" || $dateineu[1] == "jpeg")
										{	
											$i++;
											$arrdatei[] = array();
											$arrdatei[] = $datei;
											$compl = $ordner."/".$datei;
											echo "<a href='$PHP_SELF?action=view&viewid=$viewid&pic=$datei'><img src='$compl'border='4'></a>";
											echo "$datei";
											
										}
									
							}
closedir($verz);

	}					
elseif ($action == view)
	{
		$abfrage = "SELECT ID, KATEGORIE, DATUM, WOCHENTAG, BESCHREIBUNG, FOTOGRAF, ICON FROM fa_gallerie WHERE ID = '18'"; 
  		$ergebnis = mysql_query($abfrage); 
					
  						while($row = mysql_fetch_object($ergebnis)) 
							{
								$ordnerroot = "gallerie/$row->KATEGORIE/$row->DATUM ".date("d.m.Y",$row->DATUM)." $row->BESCHREIBUNG ($row->FOTOGRAF)";
								echo "	<table width='800' border='0' align='center'>
											<tr>
												<td><img src='$ordnerroot/$pic'border='4' width='640' height='480'></td>
											</tr>
										</table>";
								echo $arrdatei[2] or die ("array gibts net.");;
								

								
							}
	}
?>

ich würde mich wirklich sehr über eure hilfe freuen,

WACSF
 
Du klickst auf das Bild? Das heisst du lädst eine neue Seite? Dann wird die Variable ja auch nicht mit übergeben...

Wenn du mit Sessions arbeitest (arbeiten möchtest), dann speichere dein Array z.B. in $_SESSION['arrdatei'][]; somit wird es dann innerhalb der Session weiterhin verfügbar bleiben.
 
wenn die view.php aufgerufen wird, dann in der IF Schleife action == thumbs. So hier werden die Thumbs einer bestimmten Galerie ausgegeben. Wenn man nun auf ein Thumb klickt, dann wird $PHP_SELF geladen, aber unter der action == view. Ich befinde mich also noch auf der gleichen Seite, jedoch in einer anderen IF Schleife.

Bye,

WACSf
 
Ja, aber (ich hoffe ich irre mich gerade nicht zu sehr) du rufst doch durch einen neuen Aufruf zwar die "gleiche" Seite auf, allerdings wird sie doch auch dann neu generiert!

D.h. "normale" Variablen, wie dein array $arrdatei[] sind nur zur Laufzeit vorhanden, werden aber nicht bei einem Neuaufruf mitübergeben.

Heißt: Wenn du am Anfang im Skript die Variable $var = "Hallo" definierst, kannst du am Ende des gleiche Skripts mit echo $var dir "Hallo" ausgeben lassen. Allerdings muss das Skript beim nächsten Aufruf die Variable trotzdem am Anfang wieder setzen, bevor du sie ausgeben kannst.

Also, du übergibts zZ das Array nicht weiter, daher ist es leer...

Irre ich mich da? :confused:
 
Nein, da hast du Recht, aber ich suche gerade eine Lösung, wie ich eben dies schaffe. Sessions sind nicht so mein Ding. Soll ich das Array einfach nochmals auslesen? Das wäre zwar absolut unschön, aber das ginge. Gibts es da nicht noch was einfacheres?

Danke nochmal für Deine Hilfe,

WACSF
 
Wieso keine Sessions? Musst doch einfach nur anstatt
PHP:
$arrdatei[] = array();
PHP:
$_SESSION['arrdatei'] = array();
im 'Thumbs'-Bereich schreiben und nachher über
PHP:
echo $_SESSION['arrdatei'][2];
im 'View'-Bereich ausgeben...
Dann meinetwegen noch wieder ein
PHP:
unset ($_SESSION['arrdatei']);
und die Variable ist wieder gelöscht.

Denke ich, wäre die schnellste Methode.
 
Gut, das ist net schlecht, obwohl ich das nicht so beabsichtigt habe.

Kannst Du mir noch bei diesem hier helfen.
Ich lese also die "arraysession" so aus echo $_SESSION['arrdatei'][1];
Jedoch gibt er mir nur die Buchstaben der Datei an, z.B. wenn das Bild test.jpg heißt, dann gibt er mir bei
$_SESSION['arrdatei'][0] = t
$_SESSION['arrdatei'][1] = e
$_SESSION['arrdatei'][2] = s
$_SESSION['arrdatei'][3] = t
usw.

aus.

Wenn ich $_SESSION['arrdatei'][] mit echo ausgebe, zeigt er mir zwar den kompletten Dateinamen an, jedoch nur die letzte Position in dem array.

Kannst Du mir da Hilfe leisten ;)

Danke,

WACSF
 
Srry, schneller Fehler eingeschlichen, ein Array kann man ja eigentlich nicht wirklich "echoen".
Um ein Array auszugeben, also alles was drin ist, nutzt du print_r($array), oder hier print_r($_SESSION['arrdatei']). Da gibt er alle $key mit $value aus, allerdings eignet sich der Befehl nur zum Überprüfen...

Dein

$_SESSION['arrdatei'][0] = t
$_SESSION['arrdatei'][1] = e
$_SESSION['arrdatei'][2] = s
$_SESSION['arrdatei'][3] = t

kann ich nicht so ganz nachvollziehen, da es so aussieht, als würdest du den Dateinamen nach "" exploden lassen, in deinem Skript steht ja aber "explode (".", $datei);"

Wodran das jetzt liegt weiss ich nicht, um aber ein Array zu einem String zusammenzubasteln, könntest du dann einfach
PHP:
echo implode("", $_SESSION['arrdatei']);
nutzen.
 
dsturm hat gesagt.:
Um ein Array auszugeben, also alles was drin ist, nutzt du print_r($array), oder hier print_r($_SESSION['arrdatei']). Da gibt er alle $key mit $value aus, allerdings eignet sich der Befehl nur zum Überprüfen...

Das muss aber trotzdem in einer while schleife stehen?

Ich krig das einfach nicht gebacken.
Im thumbs Bereich mach ich also so das array. was auch soweit passen sollte:
PHP:
$verz = opendir("$ordner");
					$i = 0; 
						while ($datei = readdir($verz))
							{
							
								$dateineu = explode (".", $datei);
									if ($dateineu[1] == "JPG" || $dateineu[1] == "jpg" || $dateineu[1] == "JPEG" || $dateineu[1] == "jpeg")
										{	
											$i++;
											$_SESSION['arrdatei'] = array();
											$_SESSION['arrdatei'] = $datei;
											$compl = $ordner."/".$datei;
											echo "<a href='$PHP_SELF?action=view&viewid=$viewid&pic=$datei'><img src='$compl'border='4'></a>";
											echo "$datei "; echo  $_SESSION['arrdatei'];
											
										}
									
							}

und im view Bereich:
PHP:
print_r($_SESSION['arrdatei']);

So, aber wie vorhin, "printet" er mir nur den letzen wert im array.

liegt das oben im thumbs bereich beim erstellen des arrays? Mach ich da was falsch?
 
Ich glaube, dass irgendwas beim einlesen des Array falsch mache.

Könnte da mal einer schaun, weil ich den Fehler einfach nicht sehe.
Ich poste Hier nochmal den kompletten Code, damit Ihr eine bessere Übersicht habt:
PHP:
session_start ();
include ("dbconnect.php");
if ($action == thumbs)
	{
	$abfrage = "SELECT ID, KATEGORIE, DATUM, WOCHENTAG, BESCHREIBUNG, FOTOGRAF, ICON FROM fa_gallerie WHERE ID = '$viewid'"; 
  	$ergebnis = mysql_query($abfrage); 
					
  						while($row = mysql_fetch_object($ergebnis)) 
    						{ 
								$ordner = "gallerie/$row->KATEGORIE/$row->DATUM ".date("d.m.Y",$row->DATUM)." $row->BESCHREIBUNG ($row->FOTOGRAF)/thumps";
							}

					$verz = opendir("$ordner");
					$i = 0; 
						while ($datei = readdir($verz))
							{
							
								$dateineu = explode (".", $datei);
									if ($dateineu[1] == "JPG" || $dateineu[1] == "jpg" || $dateineu[1] == "JPEG" || $dateineu[1] == "jpeg")
										{	
											$i++;
											$_SESSION['arrdatei'] = array();
											$_SESSION['arrdatei'] = $datei;
											$compl = $ordner."/".$datei;
											echo "<a href='$PHP_SELF?action=view&viewid=$viewid&pic=$datei'><img src='$compl'border='4'></a>";
											echo "$datei "; echo  $_SESSION['arrdatei'];
											
										}
									
							}
echo $_SESSION['arrdatei'];
closedir($verz);

	}

Irgendwas bei der Schleife schmeisst den vorhergehende Wert des Array wieder raus, außer die while ist am Ende, dann bleibt das letzte drin.

Please Help me,

WACSF
 
Zurück