#1 26. Februar 2013 Zuletzt bearbeitet: 26. Februar 2013 Wie prüfen, ob Checkbox für einzelne Elemente geklickt wurden Hallo, ich bin gerade dabei mich in PHP einzuarbeiten und möchte mir ein kleines Script programmieren. Bisher besteht es aus 2 Teilen: 1. Ausgeben der aktuellen Ordnerstruktur => das funktioniert soweit 2. Verarbeiten der Auswahl => hier hänge ich Mein PHP-Code sieht bisher so aus: 1.Teil PHP: <!DOCTYPE html><html> <head> <title>Skript 1</title> <meta charset="UTF-8" /></head><body> <form action="Skript2.php" method="post"> <?php //Seite erstellen $dir = opendir ( "C:\Users\Admin\Downloads" ); $logfile = fopen ( "logfile.txt" , "a+" ); while ( $entry = readdir ( $dir )) { $timestamp = time (); $datum = date ( "d.m.Y" , $timestamp ); $uhrzeit = date ( "H:i:s" , $timestamp ); echo "<input type='checkbox' name=' $entry ' value=' $entry ' /> $datum - $uhrzeit $entry <br />\n" ; } closedir ( $dir ); ?> <input type="submit" value="Ausgewählte Dateien"/> </form></body></html> So nun soll der Benutzer, seine Auswahl an Ordnern treffen und das Formular abschicken. In Teil 2 möchte ich prüfen, welche Ordner er angeklickt hat. PHP: <!DOCTYPE html><html> <head> <title>Skript 2</title> <meta charset="UTF-8" /></head></html> <?php $logfile = fopen ( "logfile.txt" , "a+" ); while ( $_POST [ "entry" ]) { $md5converted = md5 ( $entry ); $timestamp = time (); $datum = date ( "d.m.Y" , $timestamp ); $uhrzeit = date ( "H:i:s" , $timestamp ); foreach( $_GET [ "entry" ] as $th ) { echo "<input type='checkbox' name=' $entry ' value=' $entry ' /> $datum - $uhrzeit $entry - $md5converted <br />\n" ; $output = " $datum - $uhrzeit " . "\t- $timestamp " . " $entry \t-" . "\t $md5converted \n" ; fwrite ( $logfile , $output ); } } fclose ( $logfile ); ?> Ich habe die Video2Brain DVD durchgearbeitet und dort ist das recht einfach. Es wird immer mittels isset() geprüft, ob die Variable gesetzt wurde oder nicht. Dort wurde das Formular, aber auch statisch mit HTML geschrieben. Ich erstelle das Formular mit PHP und weiß daher nicht wie ich das prüfen kann, weil die Variable $entry[] ja besteht, weil sie erstellt wird. Daher fällt ja das isset() raus. Ich habe auch versucht die Variable $entry im 1. Teil als name=$entry[] (array) zu erstellen, jedoch versagt dann die Funktion md5(), da diese nur einen String erwartet. Ich stehe gerade etwas auf dem Schlauch, evtl habt ihr ja paar Ideen. Viele Grüße PS: Das Skript läuft nur Serverseitig und alle Operationen werden auf dem Server ausgeführt. Daher ist die Wahl der Ordner wichtig. + Multi-Zitat Zitieren
#2 26. Februar 2013 AW: Wie prüfen, ob Checkbox für einzelne Elemente geklickt wurden Ändere im ersten Teil das Code: name='$entry' auf das hier Code: name='entry[]' Damit bekommst du nach dem Absenden direkt ein Array. Im zweiten Teil sollte dir klar sein das $_POST['entry'], $entry und $_GET['entry'] 3 völlig verschiedene Variablen sind. Wird das Formular per POST gesendet, dann kannst du nur $_POST['entry'] benutzen. (Enthält jetzt nach der Änderung ein Array an stelle eines Strings). Tausche jetzt das hier Code: while ($_POST["entry"]) { gegen das hier Code: foreach( $_POST['entry'] as $entry ) { P.s.: im zweiten teil ebenfalls die Änderung vom ersten machen. (Tipp: name="entry[]") 1 Person gefällt das. + Multi-Zitat Zitieren
#3 26. Februar 2013 Zuletzt bearbeitet: 26. Februar 2013 AW: Wie prüfen, ob Checkbox für einzelne Elemente geklickt wurden schonmal danke! ich mache die änderungen und editiere dann wieder bei fragen. die vermischung von post und get kam daher, dass ich mir ein beispiel angeschaut hatte und die das per get lösten. //sehr cool es klappt, meine 2. foreach schleife war dann gar nicht mehr notwendig. ich hatte immer den fehler gemacht, dass ich $entry[] geschrieben habe, habe mich dann gewundert wieso er einen fehler ausgibt. es heisst ja nur entry[] + Multi-Zitat Zitieren