LC|Tux
Hallo.
Ich hab mir ein Script geschrieben (also einmal damit angefangen), wo man games für meinen quizbot erstellen kann.
ich hab das folgendermaßen gemacht:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
|
<html>
Wieviele Fragen wollen Sie erstellen?
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="anzahl">
<input type="submit" name="sub" value="Enter"></form>
</html>
<?
if($sub)
{
$max = 25;
$wert = $anzahl;
if($wert > $max)
{
echo "Maximal 25!";
}
if($wert <= $max)
{
echo "<form action='$PHP_SELF' method='post'>";
for($anzahl2 = 0; $anzahl2 < $wert; $anzahl2++)
{
echo "<input type=\"text\" name=\"frage[$anzahl2]\" >";
echo "<input type=\"text\" name=\"antwort[$anzahl2]\" ><br>";
}
echo "<input type=\"submit\" name=\"sub2\" value=\"Enter\"></form>";
}
}
if($sub2)
{
for ($i = 0; $i <= $wert; $i++)
{
echo $frage[$i];
echo $antwort[$i];
}
}
?> |
|
allerdings habe ich ein problem:
wenn ich jetzt die fragen eingebe .. und sie dann wie am schluss ausgeben will, wird nur die erste frage angezeigt.
und mit echo $wert; (nach if($sub2)) hab ich festgestellt, das er mir gar keinen wert ausgibt, also die variable nicht 'gespeichert' ist.
was für einen fehler habe ich gemacht?
Danke
MfG
daHooligan
das problem liegt wahrscheinlich an deinem Formular:
versuchs mal mit:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
|
<html>
Wieviele Fragen wollen Sie erstellen?
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="anzahl">
<input type="submit" name="sub" value="Enter"></form>
</html>
<?
if($sub=="enter")
{
$max = 25;
$wert = $anzahl;
if($wert > $max)
{
echo "Maximal 25!";
}
if($wert <= $max)
{
echo "<form action='$PHP_SELF' method='post'>";
for($anzahl2 = 0; $anzahl2 < $wert; $anzahl2++)
{
echo "<input type=\"text\" name=\"frage[".$anzahl2."]\" >";
echo "<input type=\"text\" name=\"antwort[".$anzahl2."]\" ><br>";
}
echo "<input type=\"submit\" name=\"sub2\" value=\"enter\"></form>";
}
}
if($sub2=="enter")
{
for ($i = 0; $i <= $wert; $i++)
{
echo $frage[$i];
echo $antwort[$i];
}
}
?>
|
|
LC|Tux
hallo
es wird leider trotzdem nur 1 frage aufgelistet.
ich glaube das problem ist, dass die variable ($wert) nur innerhalb der if($sub) anweisung gespeichert wird.
weil wenn ich nach if($sub2) --> echo $wert; mach, gibt er mir nichts zurück, daher gibt er auch nur eine frage aus, weil $i = 0 und da $wert nicht vorhanden ist, zählt er nicht weiter rauf und bleibt auf 0.
thx
mfg
neonator
hi
$sub2=="enter"
bei diesem teil liegt $wert nicht vor, da er beim formular $sub1 nicht definiert ist...
mach ein verstecktes feld dort mit $wert als value und "anzahl" als name..
gruss
LC|Tux
hallo
also ich hab das jetzt so gemacht:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
|
<html>
Wieviele Fragen wollen Sie erstellen?
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="anzahl">
<input type="submit" name="sub" value="enter"></form>
</html>
<?
if($sub=="enter")
{
$max = 25;
$wert = $anzahl;
if($wert > $max)
{
echo "Maximal 25!";
}
if($wert <= $max)
{
echo "<form action='$PHP_SELF' method='post'>";
for($anzahl2 = 0; $anzahl2 < $wert; $anzahl2++)
{
echo "<input type=\"text\" name=\"frage[".$anzahl2."]\" >";
echo "<input type=\"text\" name=\"antwort[".$anzahl2."]\" ><br>";
}
echo "<input type=\"submit\" name=\"sub2\" value=\"enter\"></form>";
}
}
if($sub2=="enter")
{
echo "<input type=\"hidden\" value=$wert name=\"anzahl\">";
for ($i = 0; $i <= $wert; $i++)
{
echo $frage[$i];
echo $antwort[$i];
}
}
?> |
|
nur es funktioniert leider trotzdem nicht.
mfg
vapor
Hier fehlen grundlegende Kenntnisse...
Du verschickst ein Formular über POST.
Und i.d.R. hast du register_globals off.
D.h. dass du deine Var $sub2 nur via $_POST['sub2'] bekommst.
Jedoch les hierzu nochmal den Beitrag von neonator, sonst klappt es nicht.
Weiterhin viel Erfolg..
Edit: PS: Mit var_dump() kannst du dir Variabeln dumpen lassen..
Um peinliche Fehler zu vermeiden kannst du so kontrollieren ob Vars übergeben wurden, und ob sie den gewünschten Inhalt haben.
LC|Tux
hallo
hm ich habe grad in meiner php.ini nachgesehen
register_globals = On.
Dann müsste es doch eig gehen.
Sry wenn ich nerve... aber bei diesem Punkt blick ich immer noch nicht durch
vapor
| Zitat: |
Original von neonator
hi
$sub2=="enter"
bei diesem teil liegt $wert nicht vor, da er beim formular $sub1 nicht definiert ist...
mach ein verstecktes feld dort mit $wert als value und "anzahl" als name..
gruss |
Da steht, was du tun sollst.
Dann würe ich dir empfehlen register_globals off zu setzen, der Sicherheit halber.
Und wenn du register globals off hast, dann ist das "zwingend", was ich dir geschrieben hab.
Hanfling
register_globals off zwingt einen auch den Code übersichtlicher zu halten. Zudem haben viele Webhoster das ebenfalls auf off.
Die Kurzschreibweise $PHP_SELF düfte auch nur bei register_globals on gehen. Sonst ist es irgendwie über _SERVER['PHP_SELF'], oder so verfügbar iirc.
daHooligan
müsste mit
$self = basename($_SERVER["PHP_SELF"]);
gehen, bei mir gehts zumindest mit den Formularen auch wenn register_globals aus ist.
LC|Tux
| Zitat: |
Original von vapor
| Zitat: |
Original von neonator
hi
$sub2=="enter"
bei diesem teil liegt $wert nicht vor, da er beim formular $sub1 nicht definiert ist...
mach ein verstecktes feld dort mit $wert als value und "anzahl" als name..
gruss |
Da steht, was du tun sollst.
Dann würe ich dir empfehlen register_globals off zu setzen, der Sicherheit halber.
Und wenn du register globals off hast, dann ist das "zwingend", was ich dir geschrieben hab. |
hallo
ich hab es doch gemacht nur ich glaub ich hab die "hidden" zeile an der falschen stelle angebracht:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
|
<html>
Wieviele Fragen wollen Sie erstellen?
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="anzahl">
<input type="submit" name="sub" value="enter"></form>
</html>
<?
if($sub=="enter")
{
$max = 25;
$wert = $anzahl;
if($wert > $max)
{
echo "Maximal 25!";
}
if($wert <= $max)
{
echo "<form action='$PHP_SELF' method='post'>";
for($anzahl2 = 0; $anzahl2 < $wert; $anzahl2++)
{
echo "<input type=\"text\" name=\"frage[".$anzahl2."]\" >";
echo "<input type=\"text\" name=\"antwort[".$anzahl2."]\" ><br>";
}
echo "<input type=\"submit\" name=\"sub2\" value=\"enter\"></form>";
}
}
if($sub2=="enter")
{
echo "<input type=\"hidden\" value=$wert name=\"anzahl\">";
for ($i = 0; $i <= $wert; $i++)
{
echo $frage[$i];
echo $antwort[$i];
}
}
?> |
|
ich hab sie bei $sub2 angebracht, was sicherlich falsch ist.
ich weiß aber leider nicht genau wo ich sie anbringen soll.. das kann ich aus neonator's beitrag leider nicht ganz rauslesen.
Tut mir leid wenn ich manchen auf den nerven damit gehe und ich mich mit diesen teil nicht gut auskenne, aber wenn ich diesen teil hingebracht habe, schaff ich den rest was ich machen will alleine.
schönen abend
mfg
daHooligan
ich glaub neonator hat gemeint adss du die hidden-Zeile in das Formular reinschreiben sollst also...
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
|
<html>
Wieviele Fragen wollen Sie erstellen?
<form action="<?php
echo basename($_SERVER["PHP_SELF"]);" method=\"post\">
echo "<input type="hidden\" value=".$wert." name=\"anzahl\">";
?>
<input type="text" name="anzahl">
<input type="submit" name="sub" value="enter"></form>
</html>
<?
if($sub=="enter")
{
$max = 25;
$wert = $anzahl;
if($wert > $max)
{
echo "Maximal 25!";
}
if($wert <= $max)
{
echo "<form action='$PHP_SELF' method='post'>";
for($anzahl2 = 0; $anzahl2 < $wert; $anzahl2++)
{
echo "<input type=\"text\" name=\"frage[".$anzahl2."]\" >";
echo "<input type=\"text\" name=\"antwort[".$anzahl2."]\" ><br>";
}
echo "<input type=\"submit\" name=\"sub2\" value=\"enter\"></form>";
}
}
....
|
|
sollte gehen...
vapor
Und ich glaube, du hast sie im falschen Formular eingefügt
Nebenbei zerstörst du so den Selbstlernprozess..
LC|Tux
Hallo,
danke daHooligan aber es funktioniert leider trotzdem nicht:
| code: |
1:
|
Parse error: parse error, unexpected T_STRING in /home/www/web0/html/quiz.php on line 5 |
|
²vapor:
wenn du mir nicht helfen willst, musst du nicht!
Keine Angst, ich löse normalererweiße meine Probleme selber und ich bin auch kein wirklicher PHP-Anfänger (egal was du glaubst!) nur mit diesem Problem hab ich mich schon zu lange gespielt und auch nach der Lösung gesucht, jedoch nichts gefunden, sodass ich jetzt hier reingeschrieben hab.
vapor
| Zitat: |
Original von LC|Tux
Hallo,
danke daHooligan aber es funktioniert leider trotzdem nicht:
| code: |
1:
|
Parse error: parse error, unexpected T_STRING in /home/www/web0/html/quiz.php on line 5 |
|
²vapor:
wenn du mir nicht helfen willst, musst du nicht!
Keine Angst, ich löse normalererweiße meine Probleme selber und ich bin auch kein wirklicher PHP-Anfänger (egal was du glaubst!) nur mit diesem Problem hab ich mich schon zu lange gespielt und auch nach der Lösung gesucht, jedoch nichts gefunden, sodass ich jetzt hier reingeschrieben hab. |
Sorry, aber du BIST ein PHP Anfänger. Sonst wüsstest du sehen, das Hooligan einfach ein ';' am Ende der Zeile vergessen hat. Beim nem parse error müssten deine Alarmglocken nur so leuchten, und du solltest dich ärgern das dir sowas passiert ist, wenn du kein Anfänger mehr bist.
Und so ganz nebenbei: Ich werde dir auch nicht weiter helfen.
Du hälst nichtmal deinen eigenen Syntax ein, mogelst hier und da rum, nutzt shorttags, und dann wieder nicht.
Ebenso deine Aktionen mit escapen, bzw. die Setzweise dener Anführungszeichen.
Am Besten machst du dir nochmal grundlegende Gedanken über den Aufbau und die funktionsweise deines Scriptes.
Wir haben dir echt genug Stützen gegeben.
Edit: Nebenbei gibt es Beispiele, die deinem Script ähneln in nahezu jedem PHP-Buch - und da steht auch von vorne bis hinten hin durch, wie man sauber schreibt.