[PHP] Wysyłanie danych z formularza

Odpowiedz Nowy wątek
2008-03-21 10:42
0

Witam. Prosty problem z którym sobie nie moge poradzić. Mam taki oto formularz:

<form method="POST" >
<select name="stylik">
    <? $i=1;
    foreach($tablica as $wart => $inde)
    {

        if($i==$strona["index"])
            echo "<option value=\"$wart\" SELECTED>$wart</option>";
        else
            echo "<option value=\"$wart\">$wart</option>";
        $i++;
    }?>
    <?php
        if(isset($_POST[stylik]) && $_POST[stylik] =="BlackRedWhite")
        {
            echo "pierwsza opcja";
            $styl="1";
        }
        if(isset($_POST[stylik]) && $_POST[stylik]=="DeepBlue")
        {
            echo "druga opcja";
            $styl="2";
        }
    ?>
    <input type="submit" value="Wyślij" name="buton" action=<?php echo "?strona=main&styl=$styl"?>>
</form>

Widnieje on tymczasowo na stronce:
http://www.michal-pietrasz.ovh.org/Site_1/

I teraz jak wybierze się tą drugą opcję w comboboxie to dopiero zmienia się wartość zmiennej $styl po drugim kilknięciu w przycisk Wyślij. Jak zrobić żeby on od razu za pierwszym kliknięciem przechodzł do następnej stronki ?. Pewnie formularz musi mieć metode GET a nie POST ale coś jeszce trzeba by bylo zmienić ale ja nie mam pojęcia co niestety :/. Pozdrawiam


Pozostało 580 znaków

2008-03-21 10:59
0

Proste przyczyny, nie zamknales selecta! Poza tym powinno byc $POST['stylik'] to tak na pierwszy rzut oka bo nie analizowalem doglebnie.
No i widze ze skrypt nie przekierowuje nigdzie. Zeby gdzies przejsc to powinien ustawiac header('location: nowa_lokalizacja').
A nie - jest weselej, masz blad na bledzie mozna powiedziec. Postaram sie oczyscic ta stajnie Augiasza chociaz nie wiem czy dobrze rozumiem idee jaka miales tworzac to kuriozum. Chwileczke

Pozostało 580 znaków

2008-03-21 11:23
0

no ten nie zamkniety select mnie normalnie rozwalił ;-P .
Dodałem taki kod po kliknieciu w przycik:

<?php 

    if($_POST['buton']=="Wyślij")
    {
        echo $styl;
        $strona[index]=$styl;
        header('location: ?strona=main&styl='.$styl);
}

i już działa. Teraz mam tylko takie pytanie bo próbowałem wcześniej z tym headerem ale sprawdzałem to na krasnalu i tam mi wyskakuje dziwny błąd i temu też nie sprawdzałem czy bedzie to działać na normalnym serwerze :/. Mój błąd. Pozdro i wielkie dzieki za szybką odpowiedź.

P.S.
Zmieniłem też wcześniejszy kod wywalając isset-y :

 <?php
        if($_POST[stylik] =="BlackRedWhite")
        {
            $styl="1";
        }
        if($_POST[stylik]=="DeepBlue")
        {
            $styl="2";
        }
    ?>

P.S => 2.

Czy można teraz jakoś szybko i sprawnie zrobić to tak że od razu po zmianie opcji w comboboxie nastąpi zmiana adresu ?? ... dokładniej czy jest coś takiego w PeHaPie jak if($_POST['styll'].selectedItem == jakasopcja)


Pozostało 580 znaków

2008-03-21 11:28
0

No coz ja w miedzyczasie stworzylem cos takiego:

<?
  $tablica['pierwsza'] = 'www.strona_pierwsza.pl';
  $tablica['druga'] = 'www.strona_druga.pl';
  $tablica['trzecia'] = 'www.strona_trzecia.pl';
  $tablica['czwarta'] = 'www.strona_czwarta.pl';
?>

<form method="POST" action="">
      <select name="stylik">
      <?
         # zakladajac ze $tablica zawiera klucze prowadzace do np. podstron
        foreach($tablica as $key => $wartosc)
        {
                if($key==$POST['stylik']){
                        echo "<option value=\"$key\" SELECTED>$key</option>";
                } else {
                        echo "<option value=\"$key\">$key</option>";
                }
        }
      ?>
      </select>
        <input type="submit" value="Wyślij" name="buton" />
</form>

       <?
         if isset($POST['stylik']){
            $index = $POST['stylik'];
            header("location: " . $tablica[$index]);
         }
       ?>

Byc moze to jest to o co chodzilo.

Pozostało 580 znaków

2008-03-21 11:35
0

niom odnośnie tej tablicy to powiem tak ze ja mam u siebie to jako

$tablica = array ("raz" => 1, "dwa => 2);

wiec podobnie. Ale ogólnie moge powiedzieć że mnie zrozumiałeś i chwała ci za to :D. Wiem że troche pisze zamotanie. Pozdro


Pozostało 580 znaków

2008-03-21 11:43
0

Zeby wysylac od razu z HTMLa wybrana pozycje nalezy posluzyc sie Javascriptem oraz zmodyfikowac podany przeze mnie kod tworzenia opcji selecta.

        foreach($tablica as $key => $wartosc)
        {
                if($key==$POST['stylik']){
                        echo "<option value=\"$wartosc\" SELECTED>$key</option>";
                } else {
                        echo "<option value=\"$wartosc\">$key</option>";
                }
        }

po czym Javascript dla selecta:

<select id="stylik" onchange="javascript:document.location=document.getElementById('stylik').value;">

wtedy ostatni podany kawalek PHP nie bedzie potrzebny - mowa o tym kodzie:

 <?
         if isset($POST['stylik']){
            $index = $POST['stylik'];
            header("location: " . $tablica[$index]);
         }
       ?>

tylko trzeba pamietac ze javascript moze sobie kazdy sam wylaczyc... nie ma na to mocnych :(

Pozostało 580 znaków

2008-03-21 11:54
0

Wilkie dzieki za pomoc. Wszystko działa jak należy :) ... DUŻO JAJEK NA ŚWIĘTA ;]


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0