• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Nach absenden Option auswählen

Status
Für weitere Antworten geschlossen.

DD-Stylz

Neues Mitglied
Hallo,

ich kriegs i-wie nicht hin das nach dem Absenden das ausgewählte Option beim Neuladen schon selected ist.

ich könnts mit php lösen aber js erschein mir da eine bessere Lösung das es keinen Nutzen für die Funktionalität meiner Seite hat, dient ledeglich der Optik.

HTML:
<form action=\"\" method=\"POST\" name=\"search\">
      <select name=\"choise\">
             <option value=\"0\">alle Battles</option>
             <option value=\"1\">bald endenden Battles</option>
             <option value=\"2\">neu angefangenen Battles</option>
             <option value=\"3\">meist bewerteten Battles</option>
      </select>
      <input type=\"text\" name=\"empfname\" value=\"{$_POST['empfname']}\" onkeyup=\"searchFor(this.value);\"> // hier wird die LiveSuche eingebunden
      <div style=\"position: absolute;\" id=\"ergebnis\"></div> //Hier erfolgt dann die ausgabe der Livesuche              
      <input type=\"submit\" value=\"Suchen\">
</form>
so wenn ich jetzt zb. "neu angefange Battles" auswähle und auf Absenden Klicke wird die Seite mit entsprechenden Inhalten neugeladen und im Auswahlfeld geht es dann wieder auf "alle Battles" zurück, ich möchte aber gerne dass dort nach dem absenden bsp. das 3 selected wird.

das habe ich evrsucht zu machen in dem ich oben in die Seite folgendes eingebunden habe:

HTML:
<script type=\"text/javascript\">
      document.forms.search.elements.choise.options[2].selected = true;
      document.forms.search.elements.choise.selectedIndex = 2;
 </script>
nicht beide gleichzeitig, sondern einmal den ersten und einmal den zweiten ausprobiert.

Zu Testzwecken habe ich die 2 drinne, später würde da die ausgewählte Zahl rein.

Was mache ich da Falsch?

Google liefrt mir nicht wirklich hilfreiche Ergebnise.

Sorry jungs habe lange versucht euch mit JS net auf die Nerven zu gehen, sogar die LiveSuche habe ich mittels AJAX hingekriegt auch wenn es mich eine Woche gekostet hat aber hier komme ich einfach nicht weiter.
 
Werbung:
Änder es für dich um :)
HTML:
<html>
  <head>
    <script>
      var selectNumber;
      <?php echo "selectNumber = '".$_POST['choise']."'"; ?>
      
      window.onload = function() {
        if(selectNumber != "") {
        
          document.getElementById("choice").getElementsByTagName("option")[selectNumber].selected = true;
        }
      };
    </script>
  </head>
  <body>
    
    <form action="test.php" method="post">
      <select id="choice" name="choise">
         <option value="0">alle Battles</option>
         <option value="1">bald endenden Battles</option>
         <option value="2">neu angefangenen Battles</option>
         <option value="3">meist bewerteten Battles</option>
      </select>
      <input type="submit" value="ok">
    </form>

  </body>
</html>
 
Das ist doch Unsinn. Wenn du den Wert schon hast, musst du doch nicht den Umweg über Javascript gehen.
 
Werbung:
Das ist doch Unsinn. Wenn du den Wert schon hast, musst du doch nicht den Umweg über Javascript gehen.
Moin Struppi. Hättets du grade ein kleines Beispiel mit reinem PHP Parat?
Würde es über ein array machen, aber das ist ja nicht so elegant. Würde es ungefähr so machen.

PHP:
<?php
$select = array();

if($_POST['choise'] != "") {
  $select[$_POST['choise']] = "true";
}

?>


<form action="test.php" method="post">
      <select id="choice" name="choise">
         <option value="0" selected="<?php echo $select[0]; ?>">alle Battles</option> 
         <option value="1" selected="<?php echo $select[1]; ?>">bald endenden Battles</option>
         <option value="2" selected="<?php echo $select[2]; ?>">neu angefangenen Battles</option>
         <option value="3" selected="<?php echo $select[3]; ?>">meist bewerteten Battles</option>
      </select>
      <input type="submit" value="ok">
    </form>
 
Da selected ein Boolean-Attribut ist, d.h. es muss da sein (true) oder nicht gesetzt sein (false). Der Wert des Attributs ist dabei unerheblich. Deshalb musst du vier Prüfungen einbauen.
 
Habs so gemacht

PHP:
$select = array();

if($_POST['choise']) {
    $selected[$_POST['choise']] = "selected";
}
HTML:
<option value=\"0\" {$selected[0]}>alle Battles</option>
<option value=\"1\" {$selected[1]}>bald endenden Battles</option>
<option value=\"2\" {$selected[2]}>neu angefangenen Battles</option>
<option value=\"3\" {$selected[3]}>meist bewerteten Battles</option>
Danke Gilles...


mit PHP wusste ich wie ich es machen kann, ging mir aber nur um JS, aber wenn ihr meint das es mit php leichter/besser ist dann glaube ich euch mal :D
 
Werbung:
Kein problem ;)
Ich glaube so wie du es jetzt schreibst ist es nicht xhtml valide. denn ich meine jedes attribut muss folgende Form haben attributname="value"
Aber funktionieren tuts ja :D
 
irgendwie kann ich nicht glauben, dass das funktioniert:
a) sehe ich kein $selected
b) müsste $selected[4] einen Fehler werfen, weil das Array gar nicht so viele Werte hat, sofern eines darunter ausgewählt wurde.

Man müsste also zuerst folgendes schreiben:
Code:
$selected = array('', '', '', '');
 
irgendwie kann ich nicht glauben, dass das funktioniert:
a) sehe ich kein $selected
b) müsste $selected[4] einen Fehler werfen, weil das Array gar nicht so viele Werte hat, sofern eines darunter ausgewählt wurde.

Man müsste also zuerst folgendes schreiben:
Code:
$selected = array('', '', '', '');

Da hast du wohl Recht. Hab das Ganze nicht getestet, Deswegen wäre es möglich dass er ein Warning schmeisst.
Dann wäre es auch möglich folgendes zu schreiben
PHP:
$selected = array('false', 'false', 'false', 'false');

Und dann wird halt das auf true gesetzt welches selected ist.
Wenn es wesentlich mehr Values werden könnte man folgendes machen.

PHP:
for($i=0; $i < $anzahlValues; $i++) {
  $selected[$i] = "false";
}

$selected[$gewaehltes] = "true";
 
Werbung:
ne $selected[$_POST['choise']] = "selected"; war schon ok und Leerstrings, weil du eben selected weglassen musst.
 
@crash es hat funktioniert bzw. tut es immernoch habs aber in

$selected = array('', '', '', '');

umgeändert thx.

@Gilles meine Seite ist in html 4.01 und zurzeit komplett valide, deshalb nur das selected.
 
PHP:
$selected = array('', '', '', '');

if(isset($_POST['choise'])) {
    $selected[(int)$_POST['choise']] = ' selected';
}
PHP:
<option value="0"<?= $selected[0] ?>>alle Battles</option>
<option value="1"<?= $selected[1] ?>>bald endenden Battles</option>
<option value="2"<?= $selected[2] ?>>neu angefangenen Battles</option>
<option value="3"<?= $selected[3] ?>>meist bewerteten Battles</option>
 
Werbung:
PHP:
$selected = array('', '', '', '');

if(isset($_POST['choise'])) {
    $selected[(int)$_POST['choise']] = ' selected';
}
PHP:
<option value="0"<?= $selected[0] ?>>alle Battles</option>
<option value="1"<?= $selected[1] ?>>bald endenden Battles</option>
<option value="2"<?= $selected[2] ?>>neu angefangenen Battles</option>
<option value="3"<?= $selected[3] ?>>meist bewerteten Battles</option>


joa so in etwa nur das bei mir es bereits alles in einer Variable ist deshalb ersparrt sich dass <?php ?> und {} tritt ein ;)
 
Ich erspar' mir lieber HTML mit PHP auszugeben und statt dessen PHP als das zu benutzen, als das es immer gedacht war: als Template Engine, die man in HTML einbettet.
 
Werbung:
PHP:
<option value="0"<?= $selected[0] ?>>alle Battles</option>
<option value="1"<?= $selected[1] ?>>bald endenden Battles</option>
<option value="2"<?= $selected[2] ?>>neu angefangenen Battles</option>
<option value="3"<?= $selected[3] ?>>meist bewerteten Battles</option>

Mal 'ne generelle Frage zu diesem Shortcut: "<?=". Muss da zwingend eine Option auf dem Server eingeschaltet sein, damit er den Text ausgibt oder funktioniert das immer?
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben