Forum
Tipps
News
Menu-Icon

PHP: foreach verbunden mit if

Habe hier ein kleines Problem,
ich lese die Dateien in einem Ordner aus und für jede (foreach) gefundene Datei gibt mein 'Script' mithilfe explode den Namen und einen Button 'Loeschen' aus.
Mein Ziel ist es nun, mithilfe dieses Buttons die Funktion unlink() anzusprechen, doch wie sage ich der Funktion, welche Datei genau sie löschen soll?
Habe mir da ein Schema ausgedacht aber es klappt net ganz:

foreach ($glob as filename)
{echo $filename;
echo "Löschen-Button";
if (isset($löschen)){unlink ($filename)}}

Stehe also vor dem Problem, dass jedem Löschen Button ein anderer Wert zugeordnet werden soll und ausserhalb der foreach schleife unlink() wissen muss, welche Datei gelöscht werden muss. Hört sich perplex an, hoffe ihr versteht was ich meine : )

Dark_Dog


Antworten zu PHP: foreach verbunden mit if:

Hallöle,

spontan würde ich erstmal alle Dateien anzeigen lassen und danach einige per mausklick löschen:

<?php
$script 
"index.php";

if(
$_GET["unlink"]) {
     
$filename $_GET["unlink"];
     @
unlink($filename);
     @
header("Location: $script");
}

// Deine Funktion die den Ordner durchsucht

foreach($glob as $filename) {
     
// Gibt für jede Datei vorher einen Link zum löschen aus : deinscript.php?unlink=dateiname
     
echo("<a href=&#39;$script?unlink=$filename&#39;>$filename</a><br />");
}
?>


Ich weiss allerdings nicht ob du dir das so vorstellst. Wenn du viele Dateien löschen musst, ist es so ein wenig umständlich. Zumindest hast du einen Lösungsvorschlag  ;D

Gruss
decla

P.S: gehe davon aus dass deine foreach schleife richti ist

Morgen,
super, genau sowas hab ich gesucht, war nur zu blöde...^^

Nun meckert er aber:

Notice: Undefined index unlink in ..... Z. 24

Das bezieht sich auf den Löschen-Link. Habe schon versucht ,  unlink durch was anderes zu ersetzen, und auch $script umwandeln in den Dateinamen --> Nix

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Notice: Undefined index unlink in ..... Z. 24

Das kommt sicherlich von dieser Zeile:

if($_GET["unlink"]) {

Schreib mal noch ein isset() mit rein.

greez 8)
JoSsiF

Danke, klappt, aber das nächste Problem lässt nich auf sich warten. Zuvor erstellte Dateien sollen sortiert werden, super dacht ich, pack ich einfach ne fortlaufende Zahl in den Dateinamen und schon wird erst Datei 1.*, dann Datei 2.* ausgelesen und ausgegeben. Problem triit auf, wenn es in den Zehnerbereich geht, dann wird nämlich erst 1.*, dann 11.* und dann 2.*, 3.* usw ausgelesen...
Hat jemand diesbezüglich eine Idee?

LG

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Computer machen das für gewöhnlich so ;D

Wie wär's mit führenden Nullen?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Alternativ: Schau dir die Funktion natsort() an.

Ich versuchs mal mit letzterem... :)

Invalid argument supplied for foreach()...

Code: 

Zitat
$search =  glob("./entrys/*.txt");
     $searchsorted = natsort($search);
     foreach ($searchsorted as $filename) {...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Selbstverständlich. Was soll foreach() denn mit einer boolschen Variablen anfangen?

Ich denke natsort() gibt die werte automatisch in eine, Array aus?
# habs jetzt so: 

Zitat
$search =  glob("./entrys/*.txt");
     natsort($search);
     foreach ($search as $filename) {
« Letzte Änderung: 26.07.07, 07:58:55 von Dark_Dog »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nicht denken, sondern in die Dokumentation schauen! ;)

Es funzt ja jetzt, aber um nochma drauf zurückzukommen, hat natsort() bei meinem 1ten versuch versucht die elemente in den string searchsorted zu packen, weswegen foreach damit nich arbeiten konnte?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Jungchen, schau' in die Dokumentation! Dann muss man sich nicht wiederholen. Funktionen haben einen Rückgabewert. Im Falle von natsort ist das bool. Hat die Sortierung geklappt -> true. Wenn nicht -> false. Die Funktion modifiziert das übergebene Array direkt.

Ich frage mich immer wieder, wie man programmieren kann, ohne eine Befehlsreferenz zu benutzen  ???

Den vorletzten Satz wollt ich hören : )


« Kündigung FrageCounter script »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Dateiendungen
Die Dateiendung, auch Dateinamenerweiterung, Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an de...

Dateiendung
Die Dateiendung ist ein Teil des Dateinamen und zeigt das Dateiformat an. Klassisch war die "8.3" Regelung, nach der der Dateiname under MS DOS 8 Zeichen lang sein durfte...

Ordner
Ordner sind Strukturelemente in einem Dateisystem, die  Dateien und andere Ordner organisieren und speichern können. Sie ermöglichen eine strukturierte und...