Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Php muuttujat lomakkeen urlissa staattiseksi?

jusssssi [01.09.2010 10:41:15]

#

Miten saisin lomakkeen dynaamisen urlin staattiseksi?
Lomakkeessa lomakkeen url sisältää tavallisen osoitteen lisäksi php-muuttujia.
Lomake ei tunnu päivittävän valittuja muuttujia form riville, eikä yhteys pelaa.
Vastapuolella on hakukone jolle osoite pitää olla staattinen ja muotoa
http://www.osoiteosa.fi/130JAN
Kiitti avusta :]

<?php
$osoite = "http://www.osoiteosa.fi/";
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
?>

<form method="post" action='<?php echo $osoite . $day . $month . $year; ?>' >

<select name="day" id="day">
<option value="1">1</option>
<option value="2">2</option>
.
.
<option value="31">31</option>
</select>
<input  type="hidden" id="day">
<!---------------------------->
<select name="month" id="month">
<option value="JAN">Tammikuu</option>
.
.
<option value="DEC">Joulukuu</option>
</select>
<input  type="hidden" id="month">
<!----------------------------->
<select name="year" id="year">
<option value="2010">2010</option>
.
.
<option value="2013">2013</option>
</select>
<input  type="hidden" id="year">
<!----------------------------->
<input type="submit" value="paina">
<!-----tarkistus-------->
<?php echo $osoite . $day . $month . $year; ?>

Teuro [01.09.2010 11:09:24]

#

Kerrotko vielä millainen lopputuloksen pitää olla? Eli kun koodi ajetaan ensimmäisen kerran ei noita muuttujia $_POST['day'] ... ole vielä olemassakaan, joten ne aiheuttavat E_NOTICE tason huomautuksen. Sama asia tulee lomakeen action osasta, koska noissa muuttujissa ei ole mitään sisältöä.

Pitääkö siis nuo lomakkeen päiväystiedot siirtää jollekin scriptille? Voithan aina laittaa tuon lomakkeen menemään ensin itseensä ja sen jälkeen siirtymällä vaikka header("Location", $soite); kunhan pidät huolen, että et tulosta mitään ennen tuota riviä, koska muuten tulee legendaarinen header already sent ongelma.

Vaihtoehtoisesti voit kertoa, että miten scriptin tulee toimia. Kuitenkin hiukan korjattu versio tuosta koodistasi alla. Sisältää hiukan helpommin nuo käsin tekemäsi pudotusvalikot.

<?php
$osoite = "http://www.osoiteosa.fi/";
if(isset($_POST['day'])) {
	$day = $_POST['day'];
	$month = $_POST['month'];
	$year = $_POST['year'];

	echo "<a href=\"$osoite$day$month$year\">$osoite$day$month$year</a>";
}
?>

<form action="jussi.php" method="post">

<select name="day" id="day">
<?php
	for ($i = 1; $i < 31; ++$i) {
		echo "<option value=\"$i\">$i</option>";
	}
?>
</select>
<input type="hidden" id="day">

<select name="month" id="month">
<?php
	for ($i = 1; $i <= 12; ++$i) {
		$kk = strtoupper(date("M",mktime(0, 0, 0, $i)));
		echo "<option value=\"$kk\">$kk</option>";
	}
?>
</select>
<input type="hidden" id="month">

<select name="year" id="year">
<?php
	for ($i = 2000; $i < 2030; ++$i) {
		echo "<option value=\"$i\">$i</option>";
	}
?>
</select>
<input type="hidden" id="year">
<input type="submit" value="paina">

Triton [01.09.2010 11:46:25]

#

Jos ymmärsin oikein, niin jos sulla on osoite tyyliin tätä muotoa
www.osoite.fi/sivu.php?arvo=parametri ja haluat sen seuraavanlaiseen muotoon
www.osoite.fi/sivu.php/arvo/parametri, niin tuo hoituu .htaccessilla. Tuolla on asiasta enemmän http://www.hakukoneoptimointia.com/hakukoneoptimointi/htaccess-ja-mod_rewrite.html .

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta