Categories > [German] Deutscher TBS Support >

Problem mit Forms

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: stefanH
Date: 2006-05-19
Time: 23:04

Problem mit Forms

Hallo,

ich habe folgendes Problem:
Die Daten eines Fragebogens liegen in einem assoziativen Array vor.
Im Array gibt es pro Zeile eine Aussage oder Frage und ein Feld für die Antwort. Die Antworten werden als Radio-Buttons realisiert.

also nehmen wir an, das Array sieht so aus:

test[] = array ('frage' => "irgen eine frage", 'antwort => '');
test[] = array ('frage' => "nächste frage", 'antwort => '');
test[] = array ('frage' => "noch eine frage", 'antwort => '');

Die HTML-Syntax für Radio-Buttons ist bekanntlich

<input type="radio" name="antwort" value="5"> (oder was auch immer als Wert)

Wie kriege ich TBS nun dazu, die Antwort aus dem HTML-Form in die jeweilige Antwort-Variable im Array zu speichern?

Danke im voraus für Eure Antworten!

Grüße
Stefan
By: NeverPanic
Date: 2006-05-20
Time: 00:39

Re: Problem mit Forms

Wenn ich dich richtig verstehe, ist das kein Problem mit TBS, sondern müsste mit PHP gelöst werden.

Du müsstest dein <form> mit an ein PHP script posten, dass den Array erneut aufbaut und dann die passende Antwort einfügt, also etwa

<?php
test['frage-id1']['antwort'] = $_POST['frage-id1'];
?>
By: stefanH
Date: 2006-05-20
Time: 11:45

Re: Problem mit Forms

D.h. es gibt keine Möglichkeit, TBS den Ergebniswert selbst ins Array einfügen zu lassen?

Bislang gibt es in dem Array nämlich keine IDs für die Fragen. Und das TBS-Template enthält nur zwei Tabellenzeilen für die knapp 30 Fragen.

Das sieht ungefähr so aus:

<tr>
<td align="right" bgcolor="#ffffff">[blk2.#].</td><td>[blk2.frage;block=tr]</td>
<td><input type="radio" name="???" value="5"></td>
<td><input type="radio" name="???" value="4"></td>
<td><input type="radio" name="???" value="3"></td>
<td><input type="radio" name="???" value="2"></td>
<td><input type="radio" name="???" value="1"></td>
<td><input type="radio" name="???" value="0"></td>
</tr>
<tr>
<td align="right" bgcolor="#f0f0f0">[blk2.#].</td><td>[blk2.frage;block=tr]</td>
<td><input type="radio" name="???" value="5"></td>
<td><input type="radio" name="???" value="4"></td>
<td><input type="radio" name="???" value="3"></td>
<td><input type="radio" name="???" value="2"></td>
<td><input type="radio" name="???" value="1"></td>
<td><input type="radio" name="???" value="0"></td>
</tr>

Wenn ich es so mache, wie Du es jetzt vorschlägst, muss ich alle rund 30 Fragen und Antworten durchnummerieren und einzeln im Template vorsehen. Dann geht aber die Eleganz der TBS-Lösung verloren. Dann wäre es fast schneller, es ohne TBS zu lösen...
By: NeverPanic
Date: 2006-05-21
Time: 00:19

Re: Problem mit Forms

Grundsätzlich gibt es keine Möglichkeit mit TBS die Auswahl des Benutzers (die erst getroffen wird, nachdem TBS die Seite schon vollständig geparst hat) nachträglich noch in den Array einzufügen -- Der Server erhält die Daten ja erst, wenn das Formular gesendet wird und zwar in einer neuen Instanz von PHP (und damit auch TBS).

Die richtigen Antworten (wenn sie schon im Array sind) mit einem Plugin vorauswählen zu lassen ist kein Problem, aber Formular-Daten in einen Array einer Seite zu schreiben, die danach nicht mehr aufgerufen wird - da seh ich denn Sinn nicht drin... vllt versteh ich auch nur falsch was du machen willst...
By: stefanH
Date: 2006-05-21
Time: 02:40

Re: Problem mit Forms

Dasss man nachträglich in eine serverseitig generierte Seite nichts mehr einfürgen kann, ist mir schon klar.

Meine Idee war, quasi das Skript sich selbst wieder aufrufen zu lassen und dann die entsprechenden Stellen im Array zu befüllen. Aber vermutlich denke ich einfach nur zu kompliziert...

Das dahinter steckende Konzept basiert darauf, dass ich automatisiert aus dem assoziativen Array eine XML-Datei erzeugen lasse, die bis zu einer späteren Auswertung abgelegt wird.

Damit mir aber Fragen und Antworten nicht durcheinander oder teilweise abhanden kommen, will ich sie in einem gemeinsamen Array speichern...
By: NeverPanic
Date: 2006-05-23
Time: 01:14

Re: Problem mit Forms

Das ist durchaus möglich. Wenn du die Seite danach an sich selbst sendest, kannst du die ausgewählten Ergebnisse einfach in den Array einfügen...
so etwa in der Art:
if(!empty($_POST['frage1'])) $test[$fragenID]['antwort'] = $_POST['frage1'];

und am Ende sowas wie:
if(!empty($_POST)) {
write_file_to_disk();
}
By: ClausVB
Date: 2006-05-26
Time: 17:18

Re: Problem mit Forms

Ich wuerde es genauso machen wie NeverPanic vorgeschlagen hat, aber bei so vielen Variablen wuerde ich evtl. ueber den Einsatz von Sessions ("session_start()", etc.) nachdenken.

Generell sieht das fuer mich aber nach einem PHP-Problem und nicht nach einem TBS-Problem aus, weil TBS ja auf alle Variablen, Arrays, etc. zugreifen kann.

LG aus dem sonnigen Mallorca.
Claus
By: stefanH
Date: 2006-05-31
Time: 01:13

Re: Problem mit Forms

Vielen Dank für die hilfreichen Kommentare!

Ihr hattet Recht und ich dazu auch noch einen logischen Denkfehler in meinem Konzept.

Jetzt ist so weit alles gelöst, was TBS und PHP betrifft. Jetzt muss ich nur noch die JavaScripten an das dynamisch generierte Form anpassen...

Grüsse
Stefan