Actie onthouden
Is er een mogelijkheid dat je bij een dropdown box de laatste actie onthoud?
dus je hebt een dropbox:
Code (php)
1
2
3
4
5
2
3
4
5
<SELECT name="blok">
<option value="algemeen">Nieuws algemeen</option>
<option value="wedstrijden">Nieuws over wedstrijden</option>
<option value="teams">Nieuws over teams</option>
</SELECT>
<option value="algemeen">Nieuws algemeen</option>
<option value="wedstrijden">Nieuws over wedstrijden</option>
<option value="teams">Nieuws over teams</option>
</SELECT>
bij de laatste actie heb je 'nieuws over wedstrijden' gebruikt. nu kom je weer op de pagina en nu wil ik dat 'nieuws over wedstrijden' selected is.
iemand een idee hoe ik dat kan doen??
Thanx alvast
<option value="wedstrijden" selected>Nieuws over wedstrijden</option>
Dit kan je dus met php doen.
Code (php)
1
2
3
2
3
<option value="algemeen" <?php if($_POST['blok'] == algemeen){echo 'selected';} ?>>Nieuws algemeen</option>
<option value="wedstrijden" <?php if($_POST['blok'] == wedstrijden){echo 'selected';} ?>>Nieuws over wedstrijden</option>
<option value="teams" <?php if($_POST['blok'] == teams){echo 'selected';} ?>>Nieuws over teams</option>
<option value="wedstrijden" <?php if($_POST['blok'] == wedstrijden){echo 'selected';} ?>>Nieuws over wedstrijden</option>
<option value="teams" <?php if($_POST['blok'] == teams){echo 'selected';} ?>>Nieuws over teams</option>
misschien ben ik niet duidelijk genoeg geweest. ik weet wel hoe ik dat moet doen met selected.
Maar hij moet dus de laatste actie onthouden die gedaan is bij dat blok. misschien een een sessie, cookie of javascriptje?
Op deze manier onthoud hij toch niet de laatste actie in dat blok?
Moet je de waarde idd ergens in opslaan, kan prima in een sessie als je wil dat het wordt onthouden zolang de bezoeker op je website is.
kun je me even een zetje in de goede richting geven? ik heb niet heel veel ervaring met sessies nl. ;-)
Gewijzigd op 01/01/1970 01:00:00 door Tim Groot
Dus hij moet na een submit weer een nieuwe sessie aanmaken en die oude vernietigen
Of de sessie gewoon updaten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
session_start();
$items_array = array ('Maak een keuze...',
'Nieuws algemeen',
'Nieuws over wedstrijden',
'Nieuws over teams');
$selected_item = $_POST['blok'];
if (isset($selected_item))
{
if ($selected_item>0 | $selected_item<4)
{
echo 'Gekozen optie is: '.$_POST['blok'].'<br />';
$_SESSION['selected_item'] = $selected_item;
}
else
{
echo 'Deze optie bestaat niet (meer).<br />';
}
}
echo '<form method="post"><SELECT name="blok" onchange="this.form.submit();">';
foreach ($items_array as $key => $content)
{
if ($key == $_SESSION['selected_item'])
{
echo '<option value="'.$key.'" selected="selected">'.$content.'</option>';
}
else
{
echo '<option value="'.$key.'">'.$content.'</option>';
}
}
echo '</SELECT> </form>';
?>
session_start();
$items_array = array ('Maak een keuze...',
'Nieuws algemeen',
'Nieuws over wedstrijden',
'Nieuws over teams');
$selected_item = $_POST['blok'];
if (isset($selected_item))
{
if ($selected_item>0 | $selected_item<4)
{
echo 'Gekozen optie is: '.$_POST['blok'].'<br />';
$_SESSION['selected_item'] = $selected_item;
}
else
{
echo 'Deze optie bestaat niet (meer).<br />';
}
}
echo '<form method="post"><SELECT name="blok" onchange="this.form.submit();">';
foreach ($items_array as $key => $content)
{
if ($key == $_SESSION['selected_item'])
{
echo '<option value="'.$key.'" selected="selected">'.$content.'</option>';
}
else
{
echo '<option value="'.$key.'">'.$content.'</option>';
}
}
echo '</SELECT> </form>';
?>
edit: dit op zich zelf staan is werkend, heeft geen submit button nodig als je dat denkt.. werkt middels via this.form.submit() en is bedoeld als demonstratie voor je zodat je een beetje basis inzicht krijgt in deze vorm.
Gewijzigd op 01/01/1970 01:00:00 door Danny Roelofs
$selected_item = $_POST['blok'];
if (isset($selected_item))
Je checkt met isset() $selected_item, maar als die niet is geset dan wil dat zeggen dat $_POST['blok'] niet is geset. Die moet je dus checken met isset() en niet $selected_item.
SanThe schreef op 13.04.2007 19:27:
@Roelofs: Dit is niet correct:
$selected_item = $_POST['blok'];
if (isset($selected_item))
Je checkt met isset() $selected_item, maar als die niet is geset dan wil dat zeggen dat $_POST['blok'] niet is geset. Die moet je dus checken met isset() en niet $selected_item.
$selected_item = $_POST['blok'];
if (isset($selected_item))
Je checkt met isset() $selected_item, maar als die niet is geset dan wil dat zeggen dat $_POST['blok'] niet is geset. Die moet je dus checken met isset() en niet $selected_item.
Nou het blijft voor mij correct San!, Reden is dat indien $_POST['blok'] is geset tevens $selected_item geset zal zijn. Indien $_POST['blok'] niet geset is zal ook $selected_item niet geset zijn.
Endus $selected_item is geset of niet geset.
Indien $selected_item geset wordt d.m.v een form manipulatie vangt de OR vergelijking het af om te controleren als de keuze tussen de toegestaande parameters ligt c.q 0 t/m 4
Maar mischien bedoel je iets anders ermee te zeggen want het functioneert als zodanig wel goed.
Gewijzigd op 01/01/1970 01:00:00 door Danny Roelofs
@Roelofs: Het zal een extra overbodige 'Notice' geven. En dat willen we toch niet? Een goed script is notice en error vrij.
@Roelofs
Dat was ook een optie inderdaad. bedankt iig.
Ik heb weer wat geleerd over sessies gebruiken.
wat ik nu gedaan heb:
Code (php)
1
2
3
4
5
2
3
4
5
<SELECT name="blok">
<option value="algemeen" <?php if($_SESSION['log_blok'] == algemeen){echo 'selected';} ?>>Nieuws algemeen</option>
<option value="wedstrijden" <?php if($_SESSION['log_blok'] == wedstrijden){echo 'selected';} ?>>Nieuws over wedstrijden</option>
<option value="teams" <?php if($_SESSION['log_blok'] == teams){echo 'selected';} ?>>Nieuws over teams</option>
</SELECT>
<option value="algemeen" <?php if($_SESSION['log_blok'] == algemeen){echo 'selected';} ?>>Nieuws algemeen</option>
<option value="wedstrijden" <?php if($_SESSION['log_blok'] == wedstrijden){echo 'selected';} ?>>Nieuws over wedstrijden</option>
<option value="teams" <?php if($_SESSION['log_blok'] == teams){echo 'selected';} ?>>Nieuws over teams</option>
</SELECT>
en dit om de sessie aan te maken:
Roelofs schreef op 13.04.2007 19:41:
Nou het blijft voor mij correct San!, Reden is dat indien $_POST['blok'] is geset tevens $selected_item geset zal zijn. Indien $_POST['blok'] niet geset is zal ook $selected_item niet geset zijn.
Verkeerde redenering. Als je dit doet:
Dan zal hij zeggen dat de var geset is, maar je hebt er niks in gestopt.
Zo ook bij jou, als $_POST['blok'] niet geset is, maar je zet hem wel in $selected_item, zal PHP niks zeggen, alleen dat $_POST['blok'] niet geset is..
En bij de options de 'tekst' wel even tussen quotes zetten.
@WillemJan Zijderveld: Jouw uitleg is net nog even beter dan die van mij. Netjes.
meteen even gedaan.
Bedankt voor de herinnering!.