Checkbox klicken und Formular ändern mit PHP?
Jürgen
- php
Hallo!
Ist es möglich mit PHP folgendes zu erreichen
Ich hab ein bestehendes Formular wo ein user daten eingeben kann die dann nach "validation" vom siteadmin auf der Website angezeigt werden. Nun wurde aber vermehrt darum gebeten das man doch evtl. noch mehr daten eingeben könne. Hier nun meine Frage: Wie müsste ich anfangen wenn ich in das bestehende Formular zb. 2 checkboxen einbauen möchte die wenn man eines anklickt weitere 10 Formularfelder anzeigen, wenn man es wieder "de-klickt" werden wieder die default Anzahl Felder angezeigt.
Um das ganze ein bisschen deutlicher zu machen (hoffe ich wenigstens) hier der komplette code der das Formular erzeugt, es handelt sich dabei um ein Formular bei dem man sein Collectible Card Game Deck (Ein Sammelkarten Spiel basiert auf der Welt von J.R.R. Tolkien) eingeben kann (ist sehr gross, aber die user wollen es noch grösser).
function AddDeck() { include("header.php"); echo"<!--INDIVIDUAL BLOCKS--> <table border="0" align="center" cellspacing="0" cellpadding="0" width="90%"> <tr> <td class="type0">";
echo ("<table border="0" width="80%" cellspacing="0" cellpadding="0">"); echo ("<tr><td valign="top" width="5" height="5"><img src="./themes/Shaffer/images2/corner_left_top.gif" border="0"></td> <td width="*" height="5" background="./themes/Shaffer/images2/black_pixel.gif"></td> <td valign="top" width="5" height="5"><img src="./themes/Shaffer/images2/corner_right_top.gif" border="0"></td></tr>");
echo ("<tr><td class="type5" width="5" background="./themes/Shaffer/images2/black_pixel.gif">" ." " . "</td><td class="title" background="./themes/Shaffer/images2/black_pixel.gif">" . "Add Deck" . help("Add Deck") . "</td><td width="5" background="./themes/Shaffer/images2/black_pixel.gif"></td></tr></table>");
echo"<table width="100%" border="0" cellspacing="1" cellpadding="3"> <tr> <td class="type5">Fields marked with an <span class="star"></span> are required. </td></tr> <tr> <td class="type5"><form method="post" action="decks.php?op=Add"> <table width="100%" border="0"><tr> <td class="type5">Deck Title:</td><td class="type5"><input type="text" name="title" size="50" maxlength="100" /><span class="star"></span></td></tr> <tr><td class="type5">Your Name:</td><td class="type5"><input type="text" name="name" size="30" maxlength="60" /><span class="star"></span></td></tr> <tr><td class="type5">Your Email:</td><td class="type5"><input type="text" name="email" size="30" maxlength="60" /><span class="star"></span></td></tr></table> Short Description: (255 characters max) <span class="star"></span><br /><textarea name="description" cols="60" rows="5" wrap="virtual"></textarea><br /><br /> Long Description: <span class="star"></span><br /><textarea name="longdescription" cols="60" rows="5" wrap="virtual"></textarea><br /><br /> </td></tr> <tr><td class="type5"> <table width="100%" border="0"> <tr><td class="type5" width="20%">Starting Character 1:</td><td class="type5" width="22%"><input type="text" name="startchar1" size="20" maxlength="60" /></td> <td class="type5" width="70"> Item 1:</td><td class="type5"><input type="text" name="startitem1" size="20" maxlength="60" /></td> </tr> <tr><td class="type5" width="20%">Starting Character 2:</td><td class="type5"><input type="text" name="startchar2" size="20" maxlength="60" /></td> <td class="type5" width="70"> Item 2:</td><td class="type5"><input type="text" name="startitem2" size="20" maxlength="60" /></td> </tr></table><br /></td></tr> <tr><td class="type5"> <table width="100%" border="0"> <tr><td class="type5" width="40%">The rest of the <b>Starting</b> Characters<br /><textarea name="startingchars" cols="30" rows="5" wrap="virtual"></textarea></td> <td class="type5">Character Pool (ie. characters to be put in deck)<br /><textarea name="characterpool" cols="30" rows="5" wrap="virtual"></textarea></td></tr> </table></td></tr>
<tr> <td class="type5"> Resources: <br /></td></tr>"; echo "<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr><td class="type5">"; $res = 0; while($res<9) { $res++; echo " $res. <input type=text size=15 maxlength=60 name=res".$res."><br>"; } echo "10.<input type=text size=15 maxlength=60 name="res10"><br></td>";
echo "<td class="type5">";
$res1 = 10; while($res1<20) { $res1++; echo " $res1. <input type=text size=15 maxlength=60 name=res".$res1."><br>"; } echo "</td>";
echo "<td class="type5">";
$res2 = 20; while($res2<30) { $res2++; echo " $res2. <input type=text size=15 maxlength=60 name=res".$res2."><br>"; } echo "</td></tr></table>";
echo "<tr><td class="type5"><br />Hazards: <br /></td></tr>"; echo "<tr><td>"; echo "<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr><td class="type5">"; $haz = 0; while($haz<9) { $haz++; echo " $haz. <input type=text size=15 maxlength=60 name=haz".$haz."><br>"; } echo "10.<input type=text size=15 maxlength=60 name="haz10"><br></td>";
echo "<td class="type5">";
$haz1 = 10; while($haz1<20) { $haz1++; echo " $haz1. <input type=text size=15 maxlength=60 name=haz".$haz1."><br>"; } echo "</td>";
echo "<td class="type5">";
$haz2 = 20; while($haz2<30) { $haz2++; echo " $haz2. <input type=text size=15 maxlength=60 name=haz".$haz2."><br>"; } echo "</td>";
echo "</tr></table>";
echo "<tr><td class="type5"><br />Sideboard: <br /></td></tr>"; echo "<tr><td>"; echo "<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr><td class="type5">"; $side = 0; while($side<9) { $side++; echo " $side. <input type=text size=15 maxlength=60 name=side".$side."><br>"; } echo "10.<input type=text size=15 maxlength=60 name="side10"><br></td>";
echo "<td class="type5">";
$side1 = 10; while($side1<20) { $side1++; echo " $side1. <input type=text size=15 maxlength=60 name=side".$side1."><br>"; } echo "</td>";
echo "<td class="type5">";
$side2 = 20; while($side2<30) { $side2++; echo " $side2. <input type=text size=15 maxlength=60 name=side".$side2."><br>"; } echo "</td>";
echo "</tr></table>";
echo"<tr><td class="type5">
<input type="hidden" name="op" value="Add" /> <center><br /><input type="submit" value="Submit" /></center><br /> </form></td></tr></table></td></tr></table><br />"; $maindeck = 1; menu($maindeck); include("footer.php"); }
Ich weiss nicht ob es Sinn macht das ich den code hier rein gepostet habe, hoffe schon.
Hier ist die URL wo man das Formular sieht. http://www.thebounceroom.com/decks.php?op=AddDeck (Bitte das Javascript fertig arbeiten lassen) Wenn sich jemand die Zeit nimmt um mir zu helfen dann guckt euch doch bitte die Stelle an wo man RESOURCES (30 karten) und HAZARDS (30 karten) eingeben kann, den as sind die 2 stellen wo ich das mit den checkboxen machen möchte. Sprich, so wie es jetzt ist kann man 30 Karten eingeben, klickt man jedoch eine checkbox an kann man 40 Karten eingeben, klickt man beide an kann man 50 karten eingeben. Ich möchte das ganze jedoch bevorzugt OHNE JAVASCRIPT ermöglichen wenn geht.
Ich bedanke mich schon mal im voraus für etwaige tips und hilfe.
Liebe Grüße,
Jürgen
Hallo!
Ist es möglich mit PHP folgendes zu erreichen
Ich hab ein bestehendes Formular wo ein user daten eingeben kann die dann nach "validation" vom siteadmin auf der Website angezeigt werden.
Nun wurde aber vermehrt darum gebeten das man doch evtl. noch mehr daten eingeben könne.
Hier nun meine Frage:
Wie müsste ich anfangen wenn ich in das bestehende Formular zb. 2 checkboxen einbauen möchte die wenn man eines anklickt weitere 10 Formularfelder anzeigen, wenn man es wieder "de-klickt" werden wieder die default Anzahl Felder angezeigt.
Hi Jürgen!
Du müsstest wohl das Formular beim Anklicken der Checkbox abschicken (JS onclick() -> submit()) und dann - je nachdem ob die Checkbox aktiviert oder deaktiviert wird - den HTML-Code für die zusätzlichen Felder hineinschreiben bzw. weglassen.
Alternativ könnte man das auch über JS realisieren, wobei ich jetzt nicht aus dem Stehgreif sagen kann ob es da evtl. Problem mit dem Formular gibt.
Schau Dir dazu doch mal http://selfhtml.teamone.de/dhtml/modelle/dom.htm an.
Hier besonders die Abschnitte zu "Elementinhalte dynamisch ändern" und evtl. "Neue Knoten erzeugen und in Baumstruktur einhängen"
Clemens
Hallo Jürgen,
klingt fast, als wolltest Du das ganze ohne eine/die Seite neuladen zu müssen. Dazu ist zu sagen, daß dann die einzige Möglichkeit JavaScript ist. Nur JavaScript kann - da clientseitig arbeitend - eine bereits übertragene Seite ändern. PHP, CGI usw. laufen dagegen bereits am Server und liefern nur HTML zurück, ohne irgendwelche Reaktionsmöglichkeiten auf Aktionen des Users.
Jetzt zu Lösung mit Aufruf einer weiteren Seite:
Du setzt Deine Checkboxen. Sind diese angehakt, so kommt eben nach dem Absenden nicht eine normale "Alles ok"-Seite (irgendwas in der Art wird's ja geben), sondern eine Seite mit den zusätzlichen Feldern.
Ich denke mal, daß Dein System auf einer DB aufbaut. Somit wäre es dann wahrscheinlich am günstigsten die Daten aus der ersten Seite per hidden-Field in das Formular der zweiten Seite einzubauen und erst von dort an das verarbeitende Script zu schicken.
Hoffe, daß meine Erklärung halbwegs klar war, aber ansonsten gibt's ja das Forum...
Grüße aus Würzburg
Julian