Zurück   PSD-Tutorials.de > Webbereich > PHP und andere Scriptsprachen


Antwort
 
Themen-Optionen
Alt 28.04.2012, 13:43   #1 Nach oben scrollen
PC-Freak :D
HelperHelper
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP

Checkbox mit PHP auswerten + Datei aus Ordner löschen

EDIT: 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>";
?>
Also dort sollen halt soviele <option> generiert werden, wie Bilder im Ordner sind.
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'];
Geht das? Und wie könnt ich das da oben einbauen?

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);  
?>
Weil, mal angenommen, man wählt die Option "Urlaubfoto1.png" mit dem value="Urlaubfoto1.png", dann würde er ja den Pfad "fotos/mannschaftsfotos/Urlaubfoto1.png" haben und die Datei löschen.


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";
}
?>
Geht das so?

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
  Mit Zitat antworten


Alt 28.04.2012, 15:48   #2 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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:
unlink("fotos/mannschaftsfotos/" "../index.php"); 
was dann als relativer Pfad aufgelöst wird zu
PHP-Code:
unlink("fotos/index.php"); 
und schon ist deine index.php weg (falls diese Datei existiert). Deshalb solltest du niemals Nutzereingaben blind vertrauen. Prüfe alle vom Nutzer beeinflussbaren Daten. In diesem konkreten Fall könntest du bspw. vorher testen, ob dieser Dateiname in $bilder vorhanden ist.

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:
Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Du kannst also schon direkt am Rückgabewert erkennen, ob die Funktion erfolgreich war.
PHP-Code:
<?php
$wahl 
$_POST['auswahl']; 
$unlinkErfolgreich unlink("fotos/mannschaftsfotos/" $wahl);  

if (
$unlinkErfolgreich) {
   echo 
"Erfolgreich gelöscht";
} else {
   echo 
"Da ist was schiefgelaufen";
}
?>
oder kürzer
PHP-Code:
<?php
$wahl 
$_POST['auswahl']; 

if (
unlink("fotos/mannschaftsfotos/" $wahl)) {
   echo 
"Erfolgreich gelöscht";
} else {
   echo 
"Da ist was schiefgelaufen";
}
?>

Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall
  Mit Zitat antworten
Alt 28.04.2012, 16:36   #3 Nach oben scrollen
PC-Freak :D
HelperHelper
Themenstarter
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
Zitat:
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.
Ui, klingt kompliziert.
Das blöde ist halt, dass ich nicht sehe, wie $element definiert wird. Es taucht hier einfach auf
PHP-Code:
foreach ($bilder as $zaehlen => $element) { 
Und diese Zeile ist glaub ich mein Hauptproblem. Da verstehe ich nicht, was man jetzt mit dem $element anfangen kann, und wie man den Dateinamen einfügt.






Zitat:
Aber: erstens solltest du bei Funktionen, die schädlich sein könnten besondere Vorsicht walten lassen
Ja, eigentlich hast du recht. Aber dazu muss man sagen, ich habe vornedran ja noch ein kleines Login script, also man muss sich erst einloggen um da was machen zu können. Klar, das ist nicht wirklich sicher, und ich glaub deine Methode wär hier besser. Aber auch hier hab ich leider keine Ahnung, wie.
Wie man direkt prüft ob die Datei in $bilder existiert weiß ich nicht. aber könnte man nicht so was machen?

PHP-Code:
<?php
$wahl 
$_POST['auswahl']; 

if(
file_exists("fotos/mannschaftsfotos/" $wahl)) {

 if (
unlink("fotos/mannschaftsfotos/" $wahl)) {
    echo 
"Erfolgreich gelöscht";
 } else {
   echo 
"Da ist was schiefgelaufen";
   }

} else {
   echo 
"Diese Datei existiert nicht.";
}
?>
EDIT: Ups. Okay, mein Fehler. Sehs gerade^^ man kann das genauso manipulieren. Aber anders wüsste ich es jetzt nicht

Zitat:
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
Okay, das wusste ich nicht Praktisch.


LG
Dennis

Geändert von d3mueller (28.04.2012 um 16:45 Uhr).
  Mit Zitat antworten
Alt 28.04.2012, 20:11   #4 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
http://www.schattenbaum.net/php/array.php



Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall
  Mit Zitat antworten
Alt 28.04.2012, 20:34   #5 Nach oben scrollen
PC-Freak :D
HelperHelper
Themenstarter
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
Hi okay.

Würde das dann irgendwie so gehen?
value='$element[1]'
? so hab ich das jetzt verstanden.

Lg
Dennis
  Mit Zitat antworten
Alt 28.04.2012, 20:47   #6 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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
  Mit Zitat antworten
Alt 28.04.2012, 22:06   #7 Nach oben scrollen
PC-Freak :D
HelperHelper
Themenstarter
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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
$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='test'>" $element[1] . "</option>";
 }
}
  echo 
"<input type='submit' value='Absenden'>";
  echo 
"</form>";
?>
er zeigt zumindest als einzelne optionen die Pfade der Bilder, inklusive Dateinamen an. Nur leider funktioniert es nicht, wenn ich eines auswähle, und auf absenden klicke. Ich wollte auch der anderen Seite dann das hier machen:

PHP-Code:
<?php
    $bildname 
$_POST['bildnamen'];
    echo 
$bildname;
?>
Aber er zeigt mir nur eine <selection> mit 6 optionen bei denen überall steht "Name des Bildes".
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:
  echo "<option value='" $element[1] . "'>" $element[1] . "</option>"
ich habe es mit <form method="get"> probiert, in der statusleiste wird exakt der Pfad angegeben. aber mit method="post" kommt das irgendwie nicht richtig an, weil er, wie oben schon gesagt, so was komisches anzeigt.

Geändert von d3mueller (28.04.2012 um 22:10 Uhr).
  Mit Zitat antworten
Alt 28.04.2012, 22:19   #8 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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
  Mit Zitat antworten
Alt 29.04.2012, 11:09   #9 Nach oben scrollen
PC-Freak :D
HelperHelper
Themenstarter
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
Hi, stimmt das hatte ich vergessen. Jetzt geht es
Hier man alles zusammen:
PHP-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' multiple>";
  
$zahl 1;
foreach (
$bilder as $zaehlen => $element) {
 if (
$zaehlen  <= 20) { 
  echo 
"<option value='" $element[1] . "'>" $element[1] . "</option>";
 }
}
  echo 
"</select>";
  echo 
"<input type='submit' value='Absenden'>";
  echo 
"</form>";
?>
Und die Auswertung:
PHP-Code:
<?php
    $bildname 
$_POST['bildnamen'];
    if(
unlink($bildname)) {
        echo 
"<p>Folgendes Bild wurde erfolgreich gel&ouml;scht:</p>";
                echo 
"<p>" $bildname "</p>";
    } else {
        
        echo 
"Da ist was schiefgelaufen";
    }
    
?>
Aber ich hab immer noch nicht rausbekommen, wie man das nun sicherer machen kann.
Geht das vllt so:
PHP-Code:
if (in_array($bildname$bilder)) {
     if(
unlink($bildname)) {
        echo 
"<p>Folgendes Bild wurde erfolgreich gel&ouml;scht:</p>";
                echo 
"<p>" $bildname "</p>";
    } else {
        
        echo 
"Da ist was schiefgelaufen";
    }
} else {
    
Dieses Bild ist nicht in dem Ordner vorhanden.

Weil so prüft man das ja, aber ich weiß nicht, ob in $bilder der komplette Pfad angegeben wird.
Außerdem ist hier das problem, dass $bilder ja gar nicht mehr vorhanden ist, da es eine andere Datei ist.
  Mit Zitat antworten
Alt 29.04.2012, 11:22   #10 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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
  Mit Zitat antworten
Alt 29.04.2012, 11:35   #11 Nach oben scrollen
PC-Freak :D
HelperHelper
Themenstarter
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
Hi, danke: es kommt dann:

Zitat:
Array ( [0] => Array ( [0] => 1247549551 [1] => fotos/mannschaftsfotos/Penguins.jpg [2] => 1024 [3] => 768 ) [1] => Array ( [0] => 1247549551 [1] => fotos/mannschaftsfotos/Lighthouse.jpg [2] => 1024 [3] => 768 ) [2] => Array ( [0] => 1247549551 [1] => fotos/mannschaftsfotos/Jellyfish.jpg [2] => 1024 [3] => 768 ) [3] => Array ( [0] => 1247549551 [1] => fotos/mannschaftsfotos/Hydrangeas.jpg [2] => 1024 [3] => 768 ) [4] => Array ( [0] => 1247549551 [1] => fotos/mannschaftsfotos/Desert.jpg [2] => 1024 [3] => 768 ) [5] => Array ( [0] => 1247549551 [1] => fotos/mannschaftsfotos/Chrysanthemum.jpg [2] => 1024 [3] => 768 ) )
Damit hab ich das hier erstellt:
PHP-Code:
<?php
if (in_array("fotos/mannschaftsfotos/Penguins.jpg"$bilder[0])) { 
    echo 
"<p>";
    echo 
"Penguins.jpg ist vorhanden. Datei darf gelöscht werden";
    echo
"</p>";
}

?>
(den Pfad könnt ich dann mit $bildname ersetzen)
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?
  Mit Zitat antworten
Alt 29.04.2012, 12:21   #12 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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
  Mit Zitat antworten
Alt 29.04.2012, 12:49   #13 Nach oben scrollen
PC-Freak :D
HelperHelper
Themenstarter
 
Benutzerbild von d3mueller
 

Registriert seit: 22.03.2012
Ort: Deutschland
Beiträge: 248
Verwendet: Adobe Collection, GIMP
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
Zitat:
Zitat von Duddle Beitrag anzeigen
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

a) mienst du so was?:
PHP-Code:
<?php

foreach($bilder as $werte){
if (
in_array("fotos/mannschaftsfotos/Desert.jpg"$werte)) { 
    echo 
"<p>";
    echo 
"Desert ist da ! :D";
    echo
"</p>";
} else {
    echo 
"<p> Dieses Bild ist leider nicht vorhanden</p>";
}
}

?>
Bloß, dann kommt da halt:
Zitat:
Dieses Bild ist leider nicht vorhanden

Dieses Bild ist leider nicht vorhanden

Dieses Bild ist leider nicht vorhanden

Dieses Bild ist leider nicht vorhanden

Desert ist da !

Dieses Bild ist leider nicht vorhanden



zu b)
Habe es mal versucht. Also bei mir funktioniert es
Vllt gehts aber noch einfacher?
PHP-Code:
...

$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")) {
               
array_push($bilderfileMtime($verzeichnis $file) ,
            
$verzeichnis $file);
          }
     }
}

... 
Dann schreibt er bei print_r

Zitat:
Array ( [0] => 1247549551 [1] => 1247549551 [2] => 1247549551 [3] => 1247549551 [4] => 1247549551 [5] => 1247549551 [6] => fotos/mannschaftsfotos/Penguins.jpg [7] => fotos/mannschaftsfotos/Lighthouse.jpg [8] => fotos/mannschaftsfotos/Jellyfish.jpg [9] => fotos/mannschaftsfotos/Hydrangeas.jpg [10] => fotos/mannschaftsfotos/Desert.jpg [11] => fotos/mannschaftsfotos/Chrysanthemum.jpg )
also keine verschachtelten Arrays mehr. Ich glaub das ist so, da ich (siehe oben im Code) bei array_push bei fileMtime(...) das array davor weggemacht habe, oder (also array(fileMtime))?

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:
...
if (
in_array("fotos/mannschaftsfotos/Jellyfish.jpg"$bilder)) { 
    echo 
"<p>";
    echo 
"Jellyfish ist da ! :D";
    echo
"</p>";
} else {
    echo 
"<p> Dieses Bild ist leider nicht vorhanden</p>";
}
... 
c)
Da hab ich leider keine Ahnung.

Lg
Dennis

EDIT:
Okay, hab es noch einfacher gemacht(denke ich):
PHP-Code:
...
$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")) {
               
array_push($bilder$verzeichnis $file);
          }
     }
}
... 
Man muss ja nicht noch die Modifikationszeit(heißt das so?) anzeigen. So ist das alles noch kompakter.

Zitat:
Array ( [0] => fotos/mannschaftsfotos/Penguins.jpg [1] => fotos/mannschaftsfotos/Lighthouse.jpg [2] => fotos/mannschaftsfotos/Jellyfish.jpg [3] => fotos/mannschaftsfotos/Hydrangeas.jpg [4] => fotos/mannschaftsfotos/Desert.jpg [5] => fotos/mannschaftsfotos/Chrysanthemum.jpg )

Geändert von d3mueller (29.04.2012 um 12:54 Uhr).
  Mit Zitat antworten
Alt 29.04.2012, 14:38   #14 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
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:
$gefunden false;
foreach(
$bilder as $bild) {
  
$imArray in_array($dateiname$bild);
  
$gefunden $gefunden || $imArray;
}

//bzw. kürzer
$gefunden false;
foreach(
$bilder as $bild) {
  
$gefunden $gefunden || in_array($dateiname$bild);
}

//und später
if($gefunden) {
  echo 
"Bild gefunden";

Schau dir die Wahrheitstabelle vom logischen Oder / der Disjunktion an, dann solltest du das verstehen. $gefunden wird wahr, sobald entweder im derzeitigen Durchlauf in_array() wahr wird oder falls $gefunden vorher schon wahr war.

Oder du könntest einfach die Schleife abbrechen, falls du etwas findest:
PHP-Code:
$gefunden false;
foreach(
$bilder as $bild) {
  if(
in_array($dateiname$bild)) {
    
$gefunden true;
    break;
  }

"break" wird hier beschrieben.

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
  Mit Zitat antworten
Alt 29.04.2012, 14:45   #15 Nach oben scrollen
Newbie
Newbie
 

Registriert seit: 03.04.2011
Ort: Hude
Beiträge: 53
Verwendet: Jetbrains PhpStorm
AW: Checkbox mit PHP auswerten + Datei aus Ordner löschen
PHP-Code:
if (strstr($file".png") || strstr($file".gif") ||  strstr($file".jpg") ||  strstr($file".jpeg")) { 
Kann man vereinfachen durch:

PHP-Code:
if (preg_match('/\.(gif|jpeg|jpg|png)$/'$file)) { 
So könnte man sogar einen Array von Dateierweiterungen machen, den man mit implode() und | zu einem passenden String macht.

Und aus:

PHP-Code:
     if ($file != "." && $file != ".." && !is_dir($file)) { 
          if (
strstr($file".png") || strstr($file".gif") ||  strstr($file".jpg") ||  strstr($file".jpeg")) { 
               
array_push($bilder$verzeichnis $file); 
          } 
     } 
könnte man machen:

PHP-Code:
    if (is_dir($file) || !preg_match('/\.(gif|jpeg|jpg|png)$/'$file))
        continue; 
// . und .. sind auch Verzeichnisse ;-)

    
array_push($bilder$verzeichnis $file); 
Aber das ist jedem selbst überlassen.
  Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen