Radio Button und Session
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
action
anrede
attribut
ausbildung
beide
beitrag
button
formular
frau
haken
herr
inhalt
radio
session
speicher
stehen
textfeld
variable
versuch
vielen dank
-
Hi zusammen,
hab da ein kleines Problem bei einer Session mit Radio Buttons.
Durch diese Buttons soll die Anrede festgelegt werden.
Leider schaff ich es nicht, die Variable richtig zu speichern und anschliessend wieder im Formular auszugeben.
Code für die Session:
session_start(); $S_ANREDE = $_SESSION["S_ANREDE"]; $A_ANREDE = $S_ANREDE; if(isset($HTTP_POST_VARS["ANREDE"])) { $A_ANREDE=$HTTP_POST_VARS["ANREDE"]; $_SESSION["S_ANREDE"] = $HTTP_POST_VARS["ANREDE"]; }
Code für die Radio Buttons:
<td width="195"><input type="radio" name="ANREDE" value="<?print $A_ANREDE;?>"><font face="Arial" style="font-size: 8pt">Frau</font> <input type="radio" name="ANREDE" value="<?print $A_ANREDE;?>"></font><font face="Arial" style="font-size: 8pt">Herr</font></td>
Vielen Dank im schonmal.
Grüsse
Edit (djfun):
Doppelpost
------------
Kann mir da keiner weiterhelfen?
------------
Beitrag geändert: 24.10.2006 21:45:14 von djfun -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<td width='195'><input type='radio' name='ANREDE' value='<?print [b]$A_ANREDE;[/b]?>'><font face='Arial' style='font-size: 8pt'>Frau</font> <input type='radio' name='ANREDE' value='<?print [b]$A_ANREDE;[/b]?>'></font><font face='Arial' style='font-size: 8pt'>Herr</font></td>
Warum benutzt du bei beiden Radio-Buttons denn den gleichen Wert? Wäre value="Frau" bzw. value="Mann" nicht sinnvoller? -
Jo muss ich noch ändern...
Aber Mann und Frau wäre nicht sinnvoll denk ich. Oder bringt mich das weiter?
Ich frage mich nur wo der Fehler ist um , durch den übergebenen Wert aus der Session den Button wieder zu setzen. -
Naja, du benutzt ja als value im Endeffekt den Wert, der in deiner Session-Variable $_SESSION['S_ANREDE']. Die beiden values sind also gleich, deshalb kannst du keine Änderungen machen.
Außerdem gibt es bei diesen beiden Radio-Buttons keine Möglichkeit, erstmal einen Wert zu setzen, denn das value-Attribut ist nur dann mit einem Wert belegt, wenn die Variable $_SESSION['S_ANREDE'] existiert. Und die $_SESSION['S_ANREDE'] existiert nur, wenn sie über das Formular gesetzt wurde. So kann das also nicht funktionieren, außer die weist der $_SESSION['S_ANREDE'] einen Wert an einer anderen Stelle des Scriptes zu, die du hier nicht gepostet hast.
Wenn du das schonmal irgendwo hochgeladen hast, dann poste doch mal den Link. -
Der User setzt das doch im Formular :) Danach wird es in der Session gespeichert.
-
Der User setzt das doch im Formular :) Danach wird es in der Session gespeichert.
Ich glaube, einer von uns beiden steht ganz schön auf den Schlauch. Aber da ich hartnäckig bin mache ich mal weiter:
http://de.selfhtml.org/html/formulare/auswahl.htm#radiobuttons
Da kannst du nachlesen, wie Radio-Buttons definiert werden. Wie du sehen kannst, sind den einzelnen Buttons zwar gleiche Namen (name="...") aber unterschiedliche Werte (value="...") zugewiesen. Den Wert des Formularelements mit dem Namen ANREDE kannst du über $HTTP_POST_VARS['ANREDE'] abrufen. Dadurch kannst du dann herausfinden, welcher Radio-Button ausgewählt wurde, denn in dieser Variablen ist der Wert (value) des ausgewählten Radio-Buttons gespeichert. Du weist aber den beiden Radio-Buttons über eine Variable ein und den selben Wert zu, den du dann wieder in der $_SESSION-Variable zu speichern versuchst. -
Habe jetzt mal testweise folgenden Code gebastelt.
test1.php:
session_start(); $S_ANREDE = $_SESSION["S_ANREDE"]; $A_ANREDE = $S_ANREDE; $_SESSION["S_ANREDE"] = $HTTP_POST_VARS["ANREDE"]; ?> <html> <head> <br><br><br><br> <input type="radio" name="ANREDE" value="m"><br> <a href="test2.php"><input type="submit" value=">>" name="WEITER"></a> </head> <body> </body> </html>
test2.php:
session_start(); $S_ANREDE = $_SESSION["S_ANREDE"]; $A_ANREDE = $S_ANREDE; ?> <html> <head> <?php print_r($A_ANREDE); ?> </head> <body> </body> </html>
Leider wird mir da kein Wert ausgegeben und ich komm mit den Radio Buttons langsam nicht mehr weiter. Deine Selfhtml-Verlinkung hab ich mir auch noch mal durchgelesen aber ich scheine etwas auf der Leitung zu stehen.
Beitrag geändert: 23.10.2006 8:37:07 von ibes-solutions -
Versuchs mal so:
test1.php:
<?
session_start();
$S_ANREDE = $_SESSION['S_ANREDE'];
$A_ANREDE = $S_ANREDE;
$_SESSION['S_ANREDE'] = $HTTP_POST_VARS['ANREDE'];
?>
<html>
<head>
<br><br><br><br>
<form action="test2.php" method="post">
<input type='radio' name='ANREDE' value='m'><br>
<!-- Den Link habe ich entfernt, den brauchst du nicht -->
<input type='submit' value='>>' name='WEITER'>
</form>
</head>
<body>
</body>
</html>
test2.php:
<?
session_start();
$_SESSION['S_ANREDE'] = $HTTP_POST_VARS['ANREDE'];
$S_ANREDE = $_SESSION['S_ANREDE'];
$A_ANREDE = $S_ANREDE;
?>
<html>
<head>
<?php
echo $A_ANREDE;
?>
</head>
<body>
</body>
</html>
Ich habs ausprobiert, so funktionierts. Meine Änderungen sind fett geschrieben.
Beitrag geändert: 23.10.2006 10:39:12 von sandrock-jonas -
Danke.Das klappt ja schon mal wunderbar.
Die Änderung mit <form>... hatte ich auch schon aber in der Session die habe ich nicht gehabt. Ich dachte man muss das nicht für jede Seite in die Session schreiben. -
Jetzt ist nur die Frage, wie ich es schaffe den Button wieder zu setzen falls der Wert m ist.
Klappt das so:
value="<? if ($A_ANREDE == 'm') {isset;}?>"
^^^^^so klappt das schon mal nicht...
wie realisier ich das dann?
Ganz davon zu schweigen, dass ich ja 2 Radio Buttons habe.
Einen für "Herr" und einen für "Frau"
Beitrag geändert: 23.10.2006 11:30:51 von ibes-solutions -
Was willst du denn damit erreichen? Die Buttons bleiben doch immer gleich. Das value-Attribut muss auf jeden Fall unterschiedlich sein.
Oder willst du, dass der Button, der auf der vorherigen Seite ausgewählt wurde, markiert ist? Das kannst du so machen:
<input type='radio' name='ANREDE' value='f' <? if ($_SESSION['S_ANREDE'] == 'f') echo 'checked'; ?>> Frau
<input type='radio' name='ANREDE' value='m' <? if ($_SESSION['S_ANREDE'] == 'm') echo 'checked'; ?>> Herr
Das packst du dann in dein <form>-Element.
Ich verstehe ehrlich gesagt nicht, was du mit dem Wert (value) vorhast...
Beitrag geändert: 23.10.2006 11:40:10 von sandrock-jonas -
Genau das will ich, der Button soll immer noch aktiviert sein wenn man auf die Seite zurück geht auf der man ihn gesetzt hat.
Danke
Ich hatte das grade genauso wie du nur mit $A_ANREDE und da ging das nicht.
Aber nun klappt das. Und mit den Checkboxen ist das dann sicherlich analog.
Vielen Dank für deine Mühe.
Beitrag geändert: 23.10.2006 11:48:27 von ibes-solutions -
Zu früh gefreut. Es klappt zwar soweit schonmal aber wenn ich nun den Button anders setze wird das leider nicht in der Variablen übernommen.
Ich dachte eigentlich , dieser Part hier überschreibt die Variable falls geändert.
if ( $HTTP_POST_VARS["ANREDE"] == "m" ) { $A_ANREDE = $HTTP_POST_VARS["ANREDE"]; $_SESSION["S_ANREDE"] = $HTTP_POST_VARS["ANREDE"]; }
Beitrag geändert: 23.10.2006 12:06:34 von ibes-solutions -
So überschreibst du die Variable nur, wenn der Button für "Herr" ausgewählt wurde. Versuchs so:
if (isset($HTTP_POST_VARS['ANREDE'])) { $A_ANREDE = $HTTP_POST_VARS['ANREDE']; $_SESSION['S_ANREDE'] = $HTTP_POST_VARS['ANREDE']; }
-
Bleibt dennoch nur auf Herr gesetzt.
Muss das oben in den Teil der Session (da habe ich es stehen)
oder beim Button hinter value= f/m ?
Beitrag geändert: 23.10.2006 13:02:01 von ibes-solutions -
So müssen die Buttons aussehen:
<input type='radio' name='ANREDE' value='f' <? if ($_SESSION['S_ANREDE'] == 'f') echo 'checked'; ?>> Frau
<input type='radio' name='ANREDE' value='m' <? if ($_SESSION['S_ANREDE'] == 'm') echo 'checked'; ?>> Herr
Da fehlt jetzt natürlich noch der Submit-Button und das <form>-Element (mit method="post" und action="...").
<?
if (isset($HTTP_POST_VARS['ANREDE']))
{
$A_ANREDE = $HTTP_POST_VARS['ANREDE'];
$_SESSION['S_ANREDE'] = $HTTP_POST_VARS['ANREDE'];
}
?>
Das gehört in die Datei, die bei action angegeben ist. Wenn du also <form method="post" action="test2.php"> hast, dann steht es in der Datei test2.php
Am besten lädst du dein bisheriges Ergebnis mal irgendwo hoch. -
Jetzt wollt ich das analog auf meine Checkboxen anwenden. Klappt auch so halbwegs :)
Problem ist nur folgendes:
Ich habe ein Textfeld "Ausbildung"
und eine Checkbox für "Keine Ausbildung"
Jetzt will ich , dass sich das eine vom anderen ausschliesst, also wenn der Haken bei "keine Ausbildung" gesetzt wird soll der kein Wert im Textfeld "Ausbildung" stehen.
Mein Textfeld:
<input type="text" name="AUSBILDUNG" value="<?print $A_AUSBILDUNG;?>" size="20">
Meine Checkbox:
<input type="checkbox" name="KAUSBILDUNG" id="blaaa" value="ON" <? if ($_SESSION['S_KAUSBILDUNG'] == 'ON') echo 'checked'; ?>
Weil ich ja was dazu gelernt habe wollt ich also auf der nächsten Seite folgendes einbauen (was aber nicht funktioniert )
if ($_SESSION['S_KAUSBILDUNG'] == 'ON') { $A_AUSBILDUNG == ''; } else { $A_AUSBILDUNG = $HTTP_POST_VARS["AUSBILDUNG"]; $_SESSION["S_AUSBILDUNG"] = $HTTP_POST_VARS["AUSBILDUNG"]; }
Leider ist wenn ich den Haken wieder rausnehme oder das im Textfeld änder immer noch beides gesetzt. Sowohl der Haken als auch der Inhalt des Feldes ist noch da. -
Jetzt hab ich es so versucht aber es klappt auch nicht:
if (isset ($HTTP_POST_VARS['KAUSBILDUNG'])) { $A_KAUSBILDUNG = $HTTP_POST_VARS['KAUSBILDUNG']; $_SESSION["AUSBILDUNG"]=""; } else { $A_KAUSBILDUNG = $HTTP_POST_VARS["KAUSBILDUNG"]; $_SESSION["AUSBILDUNG"]=$HTTP_POST_VARS['AUSBILDUNG']; }
-
Leider ist wenn ich den Haken wieder rausnehme oder das im Textfeld änder immer noch beides gesetzt. Sowohl der Haken als auch der Inhalt des Feldes ist noch da.
Willst du, dass der Inhalt direkt beim Ändern der Checkbox gelöscht wird oder soll das erst nach dem Absenden des Formulars geschehen?
Sollte Ersteres zutreffen, dann ist das wohl ein Fall für JavaScript und nicht für PHP.
Andernfalls:
<?
if ($HTTP_POST_VARS['KAUSBILDUNG'] == 'ON')
{
$A_AUSBILDUNG == '';
$_SESSION['S_AUSBILDUNG'] = '';
}
else
{
$A_AUSBILDUNG = $HTTP_POST_VARS['AUSBILDUNG'];
$_SESSION['S_AUSBILDUNG'] = $HTTP_POST_VARS['AUSBILDUNG'];
}
und für das Textfeld:
<input type="text" name="AUSBILDUNG" value="<? if ($_SESSION['S_KAUSBILDUNG'] != 'ON') echo $A_AUSBILDUNG; ?>" size="20">
Beitrag geändert: 23.10.2006 14:35:40 von sandrock-jonas -
:) Den Code hatte ich vorhin auch schonmal.
Funktioniert leider nicht. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage