![]() |
|
|
Themen-Optionen |
|
|
#1
|
|
PC-Freak :D
![]() ![]() Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Checkbox mit PHP auswerten + Datei aus Ordner löschenEDIT: sry, der Titel ist noch falsch! nicht Chekbox sondern Selection.
tut mir Leid. Kann es nicht ändern. Hi, also ich möchte, das man mit einem kleinen Formular, Dateien(Bilder) aus einem Ordner löschen kann. Und zwar so: (Diesen Code verwende ich auch um die Bilder auszugeben. Hier habe ich nur die ausgabe( also das echo ""; ) geändert.) Code:
<?php
$verzeichnis = "fotos/mannschaftsfotos/";
$ordner = openDir($verzeichnis);
$bilder = array();
while ($file = readDir($ordner)) {
if ($file != "." && $file != ".." && !is_dir($file)) {
if (strstr($file, ".png") || strstr($file, ".gif") || strstr($file, ".jpg") || strstr($file, ".jpeg")) {
$info = getImageSize($verzeichnis . $file);
array_push($bilder, array(fileMtime($verzeichnis . $file) ,
$verzeichnis . $file , $info[0] , $info[1]));
}
}
}
closeDir($ordner);
rsort($bilder);
echo "<form action='bilder-loeschen.php' method='POST'>";
echo "<select name='bildnamen' size='3'>";
foreach ($bilder as $zaehlen => $element) {
if ($zaehlen <= 20) {
echo "<option value='Name des Bildes'>Name des Bildes</option>";
}
}
echo "<input type='submit' value='Absenden'>";
echo "</form>";
?>
Bloss brauch ich bei jedem ja ein value, das gesendet werden kann. Es muss halt der komplette dateiname sein, inklusive Endung. Geht das irgendwie so? Code:
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
Mal angenommen, das funktioniert dann. Dann kann man ja via PHP das ausgeben: Code:
<?php $wahl = $_POST['auswahl']; echo $wahl; ?> Jetzt kann man ja per PHP, eine Datei löschen: Code:
<?php
unlink("test.txt");
?>
Man könnte dann doch einfach als Dateinamen eine Variable $wahl nehmen: Code:
<?php
$wahl = $_POST['auswahl'];
unlink("fotos/mannschaftsfotos/" . $wahl);
?>
Oder? Denk ich hier richtig, oder hab ich was komplett falsch gemacht^^ Wenn es so geht, könnte man das ganze ja noch irgendwie erweitern: Code:
<?php
$wahl = $_POST['auswahl'];
unlink("fotos/mannschaftsfotos/" . $wahl);
$pfad = "fotos/mannschaftsfotos/" . $wahl;
if (file_exists($pfad)) {
echo "Da ist was schiefgelaufen";
} else {
echo "Erfolgreich gelöscht";
}
?>
Danke schon mal für eure Hilfe. Bin halt noch ein Anfänger in PHP, aber jeder fängt mal klein an Viele Grüße, Dennis |
|
|
|
#2
|
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
Zu deinem ersten Punkt:
Ich vermute, du hast die while-Schleife irgendwoher kopiert. Das ist kein Problem, falls du verstehst was dort passiert. Die Elemente von $bilder sind wieder Arrays, von denen das erste Element die Modifikationszeit, das zweite der vollständige Pfad, die letzten beiden Höhe und Breite sind. Du könntest also problemlos jeweils das zweite Element vom derzeitigen $element in der Formular-Schleife als value ausgeben lassen. $_FILES ist etwas ganz anderes und überhaupt nicht nützlich in diesem Fall. Zu deinem zweiten Punkt: Ja, du denkst da richtig. Du könntest den Dateinamen des Parameters für unlink mit $wahl reinsetzen. Du kannst danach auch separat prüfen, ob diese Datei noch existiert. Aber: erstens solltest du bei Funktionen, die schädlich sein könnten besondere Vorsicht walten lassen. Setze ich als Angreifer z.B. das $_POST['auswahl'] auf einen Wert wie "../index.php" (den POST-Wert zu ändern ist kein Problem) steht im unlink() plötzlich PHP-Code:
PHP-Code:
Zweitens brauchst du nach unlink() nicht gesondert testen, ob es erfolgreich war. Jede Funktion hat einen Rückgabewert, der im Handbuch dokumentiert ist. Für unlink() ist das Zitat:
PHP-Code:
PHP-Code:
Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
|
#3
|
|||
|
PC-Freak :D
![]() ![]() Themenstarter
Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Zitat:
Das blöde ist halt, dass ich nicht sehe, wie $element definiert wird. Es taucht hier einfach auf PHP-Code:
Zitat:
Wie man direkt prüft ob die Datei in $bilder existiert weiß ich nicht. aber könnte man nicht so was machen? PHP-Code:
Zitat:
LG Dennis Geändert von d3mueller (28.04.2012 um 16:45 Uhr). |
|||
|
|
|
#4
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#5
|
|
PC-Freak :D
![]() ![]() Themenstarter
Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Hi okay.
Würde das dann irgendwie so gehen? value='$element[1]' ? so hab ich das jetzt verstanden. Lg Dennis |
|
|
|
#6
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
Nein, das ist nicht korrekt. Es ist auch ein recht erstaunlicher Ansatz, finde ich doch keinerlei vergleichbares Beispiel im verlinkten Tutorial.
Statt zu raten und zu fragen solltest du entweder a) eines der zahlreichen Grundlagentutorials lesen oder b) deine Ideen Schritt für Schritt ausprobieren, sie ausführen lassen und dir die Fehlermeldungen anschauen oder am besten c) eine Kombination aus a) und b) fahren. Falls du konkrete Fragen zu Algorithmen oder Funktionen hast, werden dir diese hier beantwortet. Für Syntax-Fragen und ähnliche absolute Grundlagen sind Tutorials tausendmal besser geeignet. Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#7
|
|
PC-Freak :D
![]() ![]() Themenstarter
Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Hi, habe mich ein bisschen eingelesen in diese Grundlagen tutorials.
Auch wenn ich den Zusammenhang nicht ganz verstehe^^ Aber ich habe zumindest einen kleinen Fortschritt gemacht PHP-Code:
PHP-Code:
Wahrscheinlich liegt es an dem value, da es immer gleich ist(nämlich test) Aber da finde ich echt keine Lösung. EDIT: Eigentlich müsste es ja so gehen: PHP-Code:
Geändert von d3mueller (28.04.2012 um 22:10 Uhr). |
|
|
|
#8
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
Dein Code sieht richtig aus. Du scheinst aber nirgends das <select> zu schließen. Ich weiß nicht, wie tolerant PHP dort ist, aber das könnte schon die Fehlerursache sein.
Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#9
|
|
PC-Freak :D
![]() ![]() Themenstarter
Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Hi, stimmt das hatte ich vergessen. Jetzt geht es
Hier man alles zusammen: PHP-Code:
PHP-Code:
Geht das vllt so: PHP-Code:
Außerdem ist hier das problem, dass $bilder ja gar nicht mehr vorhanden ist, da es eine andere Datei ist. |
|
|
|
#10
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
Wenn du nicht weißt, was in einer Variable steht, lass sie dir ausgeben (print_r() ist dein Freund).
Es wird dich niemand davon abhalten, $bilder neu erstellen zu lassen. Um dabei Code-Duplizierung zu vermeiden, kannst du diese Funktion in eine extra Datei werfen und diese später einbinden. Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#11
|
|
|
PC-Freak :D
![]() ![]() Themenstarter
Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Hi, danke: es kommt dann:
Zitat:
PHP-Code:
Das Problem ist, das dort immer mehr arrays kommen. Also ganz viele arrays in arrays. Und da funktioniert das halt nicht mehr. Ich könnte zwar mit "or" arbeiten, aber wenn es mehr oder weniger Bilder gibt(also auch mehr oder weniger arrays) dann funktioniert das auch nicht mehr. Gibt es da einen trick? |
|
|
|
|
#12
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
Da gibt es mehrere Wege:
a) iteriere über alle Elemente von $bilder und prüfe die b) erstelle $bilder gleich nur mit den Namen (dazu müsstest du aber verstehen, was in der entsprechenden Schleife überhaupt passiert) c) arbeite rekursiv - PHP bietet zwar kein rekursives in_array(), aber jede Funktion hat einen Kommentarbereich, in dem Nutzer ihre Lösungen für häufige Probleme vorstellen, darunter auch auch rekursive Varianten wo es sinnvoll ist Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#13
|
||||
|
PC-Freak :D
![]() ![]() Themenstarter
Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
|
Zitat:
a) mienst du so was?: PHP-Code:
Zitat:
zu b) Habe es mal versucht. Also bei mir funktioniert es Vllt gehts aber noch einfacher? PHP-Code:
Zitat:
Und dann habe ich noch die variable $info entfernt, da man die ja dann auf diesem Weg nicht mehr braucht. Und dann noch das nachschauen, ob die datei vorhanden ist: PHP-Code:
Da hab ich leider keine Ahnung. Lg Dennis EDIT: Okay, hab es noch einfacher gemacht(denke ich): PHP-Code:
Zitat:
Geändert von d3mueller (29.04.2012 um 12:54 Uhr). |
||||
|
|
|
#14
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
|
Für a) könntest du dir entweder merken, ob ein Treffer gefunden wurde. Dafür könntest du bspw. einen einfachen Booleschen Wert mit der richtigen logischen Operation verknüpfen:
PHP-Code:
Oder du könntest einfach die Schleife abbrechen, falls du etwas findest: PHP-Code:
b) hast du ja schon selbst geschafft, obwohl es da auch noch elegantere Wege gibt. Über c) brauchst du dir erstmal wohl keine Gedanken machen. Rekursion ist ein sehr wichtiges Prinzip, aber es ist in diesem Beispiel nicht notwendig. Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#15
|
|
Newbie
![]() Registriert seit: 03.04.2011
Ort: Hude
Beiträge: 53
Verwendet: Jetbrains PhpStorm
|
PHP-Code:
PHP-Code:
Und aus: PHP-Code:
PHP-Code:
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
-
Reklame
-
-
- Sketchbook Pro
- PSD-Datei in ACR bearbeiten
- Logodesign nach vielen Jahren
- Wie geht das???
- VHS > digitalisiert - Restaurieren, wer kann helfen? :)
- Meinungen von euch zum 23. Foto-Kreativcontest
- web-clip / Format
- Wer wird Webinär?
- einzelne Klone unterschiedlich deformieren
- Nik-Complete-Collection kostenlos...
- Hintergrund einfügen
- Cache ohne externe Installation gesucht
- Kaufempfehlung: Monitor für Bildbearbeitung/DTP
- Firepro oder Quadro
- Traum Silhoueten
- Tipps zum Kauf einer Kamera
- Welcher tragbare LCD Monitor an Canon 6D?
- gibt es Sättigungspinsel?
- Alte "CSxx" Programme deinstallieren
- Ebeneneigenschaften "auslesen"
-
-
Aktuelles Commag
Anzeige
-
Anzeige










Social Media