kostenloser Webspace werbefrei: lima-city


Radio Button und Session

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    i************s

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    <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?
  4. Autor dieses Themas

    i************s

    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.
  5. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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.
  6. Autor dieses Themas

    i************s

    Der User setzt das doch im Formular :) Danach wird es in der Session gespeichert.
  7. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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.
  8. Autor dieses Themas

    i************s

    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
  9. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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
  10. Autor dieses Themas

    i************s

    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.
  11. Autor dieses Themas

    i************s

    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
  12. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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
  13. Autor dieses Themas

    i************s

    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
  14. Autor dieses Themas

    i************s

    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
  15. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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'];
    }
  16. Autor dieses Themas

    i************s

    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
  17. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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.
  18. Autor dieses Themas

    i************s

    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 :mad:)

    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.
  19. Autor dieses Themas

    i************s

    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'];
    	}

  20. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    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
  21. Autor dieses Themas

    i************s

    :) Den Code hatte ich vorhin auch schonmal.
    Funktioniert leider nicht.:confused:
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!