[PHP] Wie prüfen, ob Checkbox für einzelne Elemente geklickt wurden

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Richie, 26. Februar 2013 .

  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.
     
  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.
  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[]
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.