HMTL Radiobuttons aus CSV in neues Formular einfügen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von HeavensFront Beitrag anzeigen
    Werte von Radiobuttons die nicht ausgewählt wurden, speichere ich nicht.
    Es werden nur die übermittelt die ausgewählt wurden. Im Endeffekt Brauch ich ja auch nur diese... !??
    Hi HeavensFront,

    stimmt. Ich hatte auch zuerst dran gedacht, für nicht ausgewählte Radiobuttons einen Platzhalter zu speichern,
    um ein 1:1 Zuordnung zwischen Datei und Formular herzustellen.

    Ich hätte jetzt folgenden Vorschlag: Die Textfelder und die Radiobuttons jeweils als Array anzulegen. Das
    erleichtert das Handling ungemein :-) Alle Elemente (Textfelder und Radiobuttons) bekommen eine ID 1 .. n.
    Der Value-Parameter der Radiobuttons bekommt den gleichen Wert wie die ID. Somit speicherst du quasi die
    ID eines gesendeten Radiobuttons, und kannst den zuvor angewählten Radiobutton anhand seiner ID bestimmen,
    und ihm das Attribut checked zuweisen. Gruppen, die aus zwei oder mehr Radiobuttons bestehen, bekommen im
    Formular den gleichen Index. Dadurch kann man aus dieser Gruppe auch nur einen Button anwählen.

    Deine Zeile in der CSV-Datei . . .
    1,2,3,4,0,1,2,3,4,hjkjh,1,2,3,1,2,3,4,0,1,1,0,hkiu,hjkjh
    . . . habe ich auch umstrukturiert.

    Die ersten Felder sind die Usereingaben, dann kommen die IDs der Radiobuttons. Grund hier für ist, dass nach
    Lesen der CSV-Datei eine Zeile an eine JavaScript-Funktion übergeben wird. Somit kann ich erstmal den Textfeldern
    in einer Schleife die Werte aus der Zeile zuweisen, anschließend in einer zweiten Schleife den Radiobuttons das
    Attribut checked. Die Auswahl einer Zeile erfolgt über ein weiteres Textfeld, wo ich einfach eine Zeilennummer eingebe.
    Die Übergabe einer Zeile aus der CSV-Datei an die JavaScript-Funktion erfolgt mit der PHP-Funktion json_encode.
    Also hier jetzt mal mein Script, wenn du Fragen hast, nur zu . . .
    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <script type="text/javascript">
    <!--
    function set_checked(param){
     var params=param[0].split(";");
     /*
     * Textfelder belegen
     */
     for(var i=0;i<2;i++){
      var html_tag=document.getElementById(i+1);
     html_tag.value=params[i];
     }
     /*
     * Gespeicherte Radiobutton checked setzen
     */
     for(var i=2;i<params.length;i++){
      var html_tag=document.getElementById(params[i]);
      html_tag.checked=true;
     }
    }
    // -->
    </script>
    </head>
    <body>
    <form action="" method="post">
    <p><input type="text" name="user_eingabe[]" id="1"/><input type="text" name="user_eingabe[]" id="2"/></p>
    <p>Option 1 <input type="radio" name="option[1]" value="3" id="3"/><input type="radio" name="option[1]" value="4" id="4"/></p>
    <p>Option 2 <input type="radio" name="option[2]" value="5" id="5"/><input type="radio" name="option[2]" value="6" id="6"/></p>
    <p>Option 3 <input type="radio" name="option[3]" value="7" id="7"/><input type="radio" name="option[3]" value="8" id="8"/></p>
    <p><input type="submit" name="cmd_write" value="Schreiben"/><input type="submit" name="cmd_read" value="Lesen" />
    Zeile Nr.: <input type="text" name="line" value="1">
    </p>
    </form>
    <a href="a_csv_radio.php"> Zum Formular </a>
    <?php
    if(isset($_POST['cmd_write'])){
      if(isset(
    $_POST['option'])){
      
    $line=array_merge($_POST['user_eingabe'],$_POST['option']);
      
    $f=fopen("pub/radio.csv","a");
      
    fputcsv($f,$line,";");
      
    fclose($f);
     }else{
        
    $f=fopen("pub/radio.csv","a");
        
    fputcsv($f,$_POST['user_eingabe'],";");
        
    fclose($f);
        }
    }
    if(isset(
    $_POST['cmd_read'])){
     
    $f=fopen("pub/radio.csv","r");
     while(
    $line=fgetcsv($f)){
      
    $line_arr[]=$line;
     }
     
    fclose($f);
     
    $line=$line_arr[$_POST['line']-1];
    ?>
    <script type="text/javascript">
    <!--
    set_checked(<?php echo json_encode($line);?>);
    // -->
    </script>
    <?php
    }
    ?>
    </body>
    </html>
    Gruß
    Günni

    Kommentar


    • #17
      Hallo Günni,

      habe es jetzt nochmal anhand deines Vorschlages überarbeitet. Es funktioniert so wie ich es erhofft hatte.

      Danke für die guten Vorschläge!

      Kommentar

      Lädt...
      X