PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anzahl Textfelder


Darksaber
25.11.2002, 22:36:41
Hi

Ich möcht ein Formular erstellen, mitdem ein Fragenkatalog erstellt werden kann. Dabei soll zuerst ausgewählt werden, wie viele Fragen überhaupt gestellt werden sollen. Nachdem der User das dann eingegeben hatt, sollen textfelder in der gewünschten Anzahl rauskommen.
Kann mir jemand sagen, wie ich die Variable verarbeiten muss, damit die gewünschte anzahl rauskommt?

CyberAge
26.11.2002, 02:09:21
nun, also ich würd ein eingabefeld nehmen in dem eine zahl eingegeben werden kann. durch absenden würde ich mit folgendem reagieren:

überprüfen, ob die eingabe nur zahlen enthält, das kannst du mit is_numeric() machen. sollte dies nicht der fall sein -> fehlerausgabe; sollte das der fall sein ->

erzeugung der fehler durch eine schleife, ob for() oder while() ist dir überlassen. Das verarbeiten der weiteren eingaben ist danach wieder eine eigene sache!

Darksaber
26.11.2002, 12:19:43
Hast du zufällig ein Script, bei dem das angewandt wird oder weißt, wo ich ein passendes finde?

doudie
26.11.2002, 22:11:27
... hilft Dir das weiter?

Du bekommst $anzahl aus Formular1

dann in Formular2 etwa so:

<form ...>
<?
for ($x=1;$x<$anzahl;$x++)
{
echo "<br>Textfeld Nr. $x <input type="text" name=... >
}
echo "<br>OK <input type="submit" value="OK">
?>
</form>

evtl. das $x++ erst nach der Ausgabe von $x !!!

Darksaber
27.11.2002, 16:48:30
langsam glaub ich, ich bin zu blöd für php.

ich versteh nämlich die hälfte von deinem code nicht :( oder ich versths aber nicht wirklich die zusammenhänge.
Ich glaub ein script oder noch besser ein tutorial wäre besser :(

doudie
27.11.2002, 20:16:57
was verstehst Du nicht? Wie Du auf $anzahl kommst oder was dann passiert....

-------------------------- Datei1 ---------------------------

$anzahl wird aus einem ganz normalen Formular übergeben:

...
<input type=text name=anzahl>
...

-------------------------- Datei2 ---------------------------

Für die Fragen brauchst Du Arrays ....

z.B.
<?
$fragen = array("Thema","Frage-2","Frage-3","Frage-n");
?>

oder:
$frage[0] = "Thema";
$frage[1] = "Frage-1";
$frage[2] = "Frage-2";
$frage[3] = "Frage-3";
.... etc.

Beachte: bei arrays ist der erste Wert nicht 1 sondern: 0 (Null) !!!

und dann kannst Du im 2. Formular für jedes $x in der for-Schleife eine Frage einblenden

Mit <input type=hidden.... kannst Du auch die Fragen übergeben.

<?
echo "<form name=formular2 action=datei3.php method=post>";
for ($z=1; $z < $anzahl; $z++)
{
echo "Frage: $frage[$z] --- Ihre Antwort: ";
echo "<input type=text name=antwort[$z]>";
echo "<input type=hidden name="que[$z]" value="$frage[$z]">";
}
?>
echo "</form>";

die Antworten werden dann übergeben und stehen als neues Array zur Verfügung:

-------------------------- Datei3---------------------------


<?

for ($y=1; $y < $anzahl; $y++)
{
echo "Nr. $y --- Frage: $que[$y] --- Antwort: $antwort[$y]";
}

?>

Darksaber
28.11.2002, 19:41:25
ok langsam komm ich dahinter wie es laufen soll. ;)

sorry lag daran, dass ich ein php-newb bin und mich in letzter zeit nur mit dem design, nicht so sehr mit den scripten meiner seite beschäftigt hab.

Also, dein 2. script geht mir etwas zu weit, ich will die Antworten noch nicht gleich haben.
dein erstes müsste also eigentlich klappen, allerdings wenn ichs bei mir in den editor kopiere (dreamweaver) ist irgendwo ein fehler drin, da ich ab der 1.sten echo-zeile alles so angezeigt bekomme, als wäre da irgendwo ein " nicht abgeschloßen.
Hab zuerst angenommen, es würde sich um das vor <br> handeln, aber nachdem ich das testweise entfernt hab, trat der fehler eben ab einer späteren position der zeile auf.

doudie
28.11.2002, 20:11:15
}
?>
echo "</form>";

muss so sussehen:

echo "</form>";
}
?>

zu .... Also, dein 2. script geht mir etwas zu weit, ich will die Antworten noch nicht gleich haben.
... ????? hä?

Du kannst ja innerhalb der FOR-Schleife:

for (...) { echo "... $que[$y] ... $antwort[$y]"; }

anstatt der Ausgabe mit echo "..."; die Antworten speichern oder per email senden.... oder was meinst Du?!

PS: gibt's ne URL zur Page an der Du designst und scriptest?!

Darksaber
28.11.2002, 22:50:20
es geht im grunde genommen darum, dass ein Admin die fragen eingibt und die dann von bestimmten Usern beantwortet werden können.
Dazu müssen die fragen erst eingegeben werden, dann an die datenbank übergeben werden und dann ausgegeben.
Die sache mit der ausgabe und der übergabe an die db krieg ich hin, dass ist nicht so der act.
ich wollte nur, dass die anzahl der fragen variabel ist.

Wenn du dir ansehen willst, wafür das ist, kannst du mal auf http://wahl.freie-geister.de/ gehn.
bisher wurden die fragen auf der Seite einfach eingegeben und die antworten eingeschickt.
Auch die bewertung läuft noch per einsendung ab.
Das wollte ich jetzt ändern.

ach ja, die seite stammt nicht von mir ;)

doudie
29.11.2002, 01:35:21
Mit Datenbanken kenn ich mich auch nicht aus, aber Du kannst ja so speichern: je User eine neue txt-Datei $picfile, in der dann je Zeile die Daten zur jeweiligen Frage stehen.


$picfile = "daten".$user.".txt";
$fpwtd = @fopen($picfile,"w");
for ($z=1; $z < $anzahl; $z++)
{
fputs($fpwtd,"$que[$z]|$antwort[$z]|$Id[$z]rn");
}
@fclose($fpwtd);


(natürlich die Werte und nicht die Variablen-Namen speichern! UND: Wichtig ist das rn am Ende, das erzeugt eine neue Zeile. Daher beim Lesen evtl. nur bis $anzahl-1 (Minus Eins) lesen!!!)

... dann kannst Du zur Auswertung die Datei so in ein Array laden, das jede Zeile als Wert des Array zur Verfügung steht...
mit join() http://www.selfphp.com/funktionsreferenz/string_funktionen/join.php

oder so....

$filelesen = @fopen("$picfile","r");
while(!feof($filelesen))
{
array_push($userarray,@ltrim(Chop(fgets($filelesen,256))));
}
@fclose($filelesen );

$usranzahl = count($userarray);


dann ... kannst Du über $split[$x] die einzelnen Zeilen abrufen:

$split = explode("|",$userarray[$x]);


jetzt hast Du aus Frage$x|UserAntwort|Id folgende Variablen gemacht:

$split[0]=Frage$x
$split[1]=UserAntwort
$split[2]=Id