[PHP] Wysyłanie danych z formularza

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

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

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)

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.

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

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 :(

0

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

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