Zitat von HeavensFront
Beitrag anzeigen
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>
Günni
Kommentar