Array übergeben, auslesen, in link einfügen

Aerzte1992

Grünschnabel
Hy

wiedermal bin ich auf euch Spezialisten angewiesen. Ich hab ein script, das ein verzeichnis ausliest und in ein array einfügt. Dieses array wir mit ksort sortiert und in einer Tabelle wieder ausgegeben. Angenommen im Verzeichnis sind folgende Datein: 1.png, 2.png, 3.png, 4.png, 5.png

so wird in der Tabelle
|1.png|
|2.png|
|3.png|
usw. ausgegeben.

PHP:
$pfad1 = "Upload";/



$files 	= array();
$dir	= opendir($pfad1);
while(false !== ($file = readdir($dir))){
	if(!preg_match('/^\.{1,2}$/',$file)){
		$files[] = $file;
	}else{
		continue;
	}
}
closedir($dir);
asort($files);

foreach($files as $v){


 $name= "$v</a><br>\n";//
 echo "<table border=\"4\"><colgroup><col width=\"400\"><tr><th align = \"center\">".$name."<br></th></tr></table></p>";
echo "<font color=\"green\">".$name."</font>";

$sender = serialize($v);//Array weitergeben

$anzahl= "0";//wird als link zahl verwendet
$zähler = count($files);




for ($anzahl = 0; $anzahl <= $zähler; $anzahl++)//What=1,2,3,4usw., je nach anzahl der array Einträge
{

?>
<html><body><a href="download.php?what=<?php echo $anzahl;?>">/Upload/<?php echo $name; ?></a> </body></html> <!-- Kommentar: hier möchte ich einen Link, für den array eintrag machen. bspw. <a href="download.php?what=2>Upload/2.png</a> -->
<?php
}
}
echo "<form name=\"form1\" method=\"post\" action=\"download.php\">";
echo "<input type=\"hidden\" name=\"geber\" value=\"$sender\">"; //array soll weiter gegeben werden


?>

Das Problem ist folgendes:
Richtig sollte es so sein:
<a href="download.php?what=2>Upload/2.png</a>
<a href="download.php?what=3>Upload/3.png</a>
<a href="download.php?what=4>Upload/4.png</a>
usw.

leider wird jeder Array inhalt mehrmals ausgegeben, bis zu der Anzahl von $anzahl. Hab ich nun 5 einträge im Array wird folgendes ausgegenben

<a href="download.php?what=0>Upload/2.png</a>
<a href="download.php?what=1>Upload/2.png</a>
<a href="download.php?what=2>Upload/2.png</a>
<a href="download.php?what=3>Upload/2.png</a>
<a href="download.php?what=4>Upload/2.png</a>
<a href="download.php?what=5>Upload/2.png</a>

<a href="download.php?what=0>Upload/3.png</a>
<a href="download.php?what=1>Upload/3.png</a>
usw.

Warum wird der array eintrag mehrmals ausgegeben und nicht nur einmal?
Wie schaffe ich es, das der jeder array eintrag nur einmal in nem Link ausgegeben wird und auch noch den richtigen $anzahl wert bekommt? d.h. 1eintrag = 0; 2eintrag= 1; usw.

danke
 
Zuletzt bearbeitet:
Wenn du dan Code formatieren würdest, hättest du die Lösung
PHP:
<?php
....
foreach($files as $v){
	$name= "$v</a><br>\n";//
	echo "<table border=\"4\"><colgroup><col width=\"400\"><tr><th align = \"center\">".$name."<br></th></tr></table></p>";
	echo "<font color=\"green\">".$name."</font>";
	$sender = serialize($v);//Array weitergeben
	$anzahl= "0";//wird als link zahl verwendet
	$zähler = count($files);
	for ($anzahl = 0; $anzahl <= $zähler; $anzahl++)//What=1,2,3,4usw., je nach anzahl der array Einträge
	{
		?>
		<html><body><a href="download.php?what=<?php echo $anzahl;?>">/Upload/<?php echo $name; ?></a> </body></html> <!-- Kommentar: hier möchte ich einen Link, für den array eintrag machen. bspw. <a href="download.php?what=2>Upload/2.png</a> -->
		<?php
	}
}
Du loopst über alle Einträge in $files und innerhalb dieses loops gehst du mit der for-Schleife nochmals alle Einträge von $files durch.
 
Ein großes Danke für deine Hilfe. Das nächste mal werd ich den code noch formatieren. Leider komm ich auf keinen grünen Zweig, nun habe ich die foreachschleife + variablenbennenungen aus den $files Loop(wenn man das so sagen kann) entfernt, und am ende wieder eingefügt. Nun habe ich zwar keine mehrmaligen Links, jedoch steht am Ende der Seite immer die gleiche Datei verlinkt. und zwar 5 mal.

<a href="download.php?what=0>Upload/5.png.</a>
<a href="download.php?what=1>Upload/5.png</a>
<a href="download.php?what=2>Upload/5.png</a>
<a href="download.php?what=3>Upload/5.png</a>
<a href="download.php?what=4>Upload/5.png</a>


anstatt
<a href="download.php?what=0>Upload/1.png.</a>
<a href="download.php?what=1>Upload/2.png</a>
<a href="download.php?what=2>Upload/3.png</a>
<a href="download.php?what=3>Upload/4.png</a>
<a href="download.php?what=4>Upload/5.png</a>

habs auch schon mit array_unique() probiert, leider ohne erfolg. mir gehen die ideen aus, was mach ich falsch?
 
Zuletzt bearbeitet:
Nun klappt soweit alles, jedoch hätte ich noch ein Problem. Nur noch das Array weitergeben zur nächsten Seite. Doch da hab ich schon das nächste problem:

PHP:
<?php session_start();
//array ist $v
$_SESSION['array'] = $v

echo $_SESSION['array'];//gibt alle Dateinamen aus.

nächste php seite
PHP:
<?php session_start();

echo  $_SESSION['array']; //gibt  keider nur den letzten array eintrag aus. und 
echo count($_SESSION['array']); // gibt nur 1 aus
 
Weiß jemand wie man ein vollständiges array überträgt?. MÖchte mir nämlich ein zeil speichern unter script schreiben und dafür muss ich das array zur php datei übergeben
 
Danke schön, es klappt nun fast alles schon so wie ich es gerne hätte. ein problem gibt es noch
PHP:
//Name des urspungs array ist $files

foreach// ich befinde mich hier in der foreach, die den array wert in eine variable $v übergibt
.....
$v=// der Inhalt eines Array der mittel foreach übergeben wurde
$name= "$v</a><br>\n";//

echo "<table border=\"4\"><colgroup><col width=\"400\"><tr><th align = \"center\">".$name."<br></th><th>";?> <html><body><a href="Upload/download.php?what=<?php echo $wert; ?>">/Upload/<?php echo $v; ?></a> </body></html> <?php echo "</th></tr></table></p>";
}

Mir geht es um den wert der variable $wert, der dem Key des array entsprechen soll.

bspw. der erste Eintrag im Array 1.png.
ausgabe des array wäre demnach [0] => 1.png. Ich benötige diese"0" ohne "[]" in der Variable wert.

dann würde meine ausgabe in der tabelle volgendermaßen aussehen
PHP:
echo "<table border=\"4\"><colgroup><col width=\"400\"><tr><th align = \"center\">"1.png"<br></th><th>";?> 
<html><body><a href="Upload/download.php?what=<?php echo $wert;?>">/Upload/1.png</a> </body></html> <?php echo "</th></tr></table></p>";
wie schaffe ich es jetzt, das $wert den wert "array key" von 1.png entspricht.(ich hoffe das ist nicht verwirrend.)
 
ich glaube, wir reden ein wenig aneinander vorbei.:-(

Danke das du mich so toll unterstützt. Deine super gute Lösung( hätt ich vor ein paar tagen wirklicht nötig gebraucht) ziegt mir den Array Eintrag an.
ich bräuchte es so:
$a = array("Banane", "Apfel", "Birne", "zwetschke")

[0] = Banane;
[1] = Apfel;
usw.

ich suche eine Möglichkeit, nur die Zahl von der eckigen klammer in eine andere Variable zu geben.

Am besten wäre eine möglchkeit wie.
Um es noch besser zu sagen.
ich übergebe bereits ein array mit foreach in eine variable und liste diese Variable in einer Tabelle auf. in eine weitere spalte würde ich gerne den Wert schreiben.
ERster arry Eintrag Key vom ersten Eintrag = [0]
Zweiter array Eintrag Key vom zweiten Eintrag = [1]

Durch deine Lösung sieht meine Tabbele so aus
1.png 1.png
2.png 3.png
anstatt
1.png 0
2.png 1

Ich dachte mir schon, dass ich die ausgabe in eine SChleife schreibe, die mir einfach die zahlen von 0 bis 5 ausgibt, doch leider wird dann das array auch 5mal ausgegeben
das sah dann so aus
1.png 0
1.png 0
1.png 0
1.png 0
1.png 0
2.png 1
2.png 1
2.png 1
2.png 1
2.png 1
...
5.png 4
 
Kugg dir doch mal die Schleife genau an Array as Key => Wert.
Array ist der Input, Key ist der Schlüssel und Wert ist das Value des Schlüssels.
Also kannste die Schleife verwenden und Key an die Variable weitergeben, dann haste es.
 
Zurück