Onthouden options menu na post
<!--SELECTIE NETWERKEN !-->
<div id="leftmenu">
<form name="jump" action="download.php" method="post">
<select name="providers">
<option value="kpnhi">KPN/Hi</option>
<option value="kpnhiimode">KPN/Hi iMode</option>
<option value="vodafone">Vodafone</option>
<option value="vodafonelife">Vodafone Life</option>
<option value="telfort">Telfort</option>
<option value="tmobile&brand">T-Mobile</option>
<option value="tmobiletzones">T-Mobile T-Zones</option>
<option value="orange">Orange</option>
<option value="orangeworld">Orange World</option>
</select>
</div>
<!--SELECTIE TELEFOONS !-->
<div id="rightmenu">
<select name="telefoons">
<option value="Alle telefoons">Alle telefoons</option>
<option value="nokia">Nokia</option>
<option value="sony">Sony Ericsson</option>
<option value="sagem">Sagem</option>
<option value="blackberry">Blackberry</option>
<option value="lg">LG</option>
<option value="sie">Siemens</option>
<option value="sam">Samsung</option>
<option value="alcatel">Alcatel</option>
<option value="mot">Motorola</option>
<option value="nec">NEC</option>
<option value="benq">BENQ</option>
<option value="sharp">Sharp</option>
<option value="sanyo">Sanyo</option>
<option value="philips">Philips</option>
<option value="panasonic">Panasonic</option>
</select>
<input type="submit"name="submit" value ="Go!">
</form>
</div>
Code (php)
Kan ik op een simpele manier met onChange of onClick zoiets bereiken na een $_POST? Of is het handiger om met onClick de URL aan te passen middels een $_GET? Dit heb ik al geprobeert, echt zonder succes.
Gr,
Thomas
Een selectbox onthouden met OOP
Code:
Voorbeeldpagina: Code:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
class core {
protected $errs;
protected $msgs;
/*
* constructor
*/
function __construct () {
$this->errs = array ();
$this->msgs = array ();
}
/*
* setters
*/
function set_err ($err) {
array_push ($this->errs, $err);
}
function set_msg ($msg) {
array_push ($this->msgs, $msg);
}
/*
* getters
*/
function get_errs () {
return $this->errs;
}
function get_msgs () {
return $this->msgs;
}
/*
* return the number of messages, if any
* @return int
*/
function has_msgs () {
return count ($this->msgss);
}
/*
* return the number of errors, if any
* @return int
*/
function has_errs () {
return count ($this->errs);
}
}
class selectbox extends core {
protected $name;
protected $values;
protected $options;
protected $selected;
protected $n;
/* constructor */
function __construct ($name, $values, $options, $selected) {
parent::__construct ();
if (!is_array ($values)) {
$this->set_err ('<p>Het eerste argument moet een array zijn</p>');
}
if (!is_array ($options)) {
$this->set_err ('<p>Het tweede argument moet een array zijn</p>');
}
if (count ($values) != count ($options)) {
$this->set_err ('<p>De arrays moeten even lang zijn</p>');
}
$name = trim ($name);
$name = preg_replace ('/[^a-zA-Z0-9]/', '', $name);
if (empty ($name)) {
$this->set_err ('<p>Geen geldige naam opgegeven</p>');
}
$this->name = $name;
$this->values = $values;
$this->options = $options;
$this->selected = $selected;
$this->n = count ($values);
}
/*
@get_html: haal de HTML code voor de select op
*/
function get_html () {
$html = PHP_EOL;
$html .= '<select id="' . $this->name . '" name="' . $this->name . '">';
for ($i = 0; $i < $this->n; $i++) {
if ($this->selected == $this->values[$i]) {
$html .= PHP_EOL . '<option selected="selected" value="' . $this->values[$i] . '">' . $this->options[$i] . '</option>';
}
else {
$html .= PHP_EOL . '<option value="' . $this->values[$i] . '">' . $this->options[$i] . '</option>';
}
}
$html .= PHP_EOL . '</select>';
return $html;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Options onthouden</title>
<style type="text/css">
@import 'oop.css';
</style>
</head>
<body>
<div id="container">
<div class="wrapper">
<h1>Selectbox class</h1>
<form method="post" action="#">
<p>
<?php
$name = 'groente';
$values = range (1, 9);
$options = array ('sla', 'spruitjes', 'andijvie', 'sperziebonen', 'worteltjes', 'witlof', 'broccoli', 'bloemkool', 'uien');
$selected = (isset ($_POST[$name])) ? ($_POST[$name]) : ($values[0]);
$sel = new selectbox ($name, $values, $options, $selected);
echo $sel->get_html ();
?>
</p>
<p>
<input type="submit" value="verzenden">
</p>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>';
print_r ($_POST);
echo '</pre>';
}
if ($sel->has_errs ()) {
echo '<div class="errs">';
foreach ($sel->get_errs () as $err) {
echo $err;
}
echo '</div>';
}
?>
</div>
</div>
</body>
</html>
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
class core {
protected $errs;
protected $msgs;
/*
* constructor
*/
function __construct () {
$this->errs = array ();
$this->msgs = array ();
}
/*
* setters
*/
function set_err ($err) {
array_push ($this->errs, $err);
}
function set_msg ($msg) {
array_push ($this->msgs, $msg);
}
/*
* getters
*/
function get_errs () {
return $this->errs;
}
function get_msgs () {
return $this->msgs;
}
/*
* return the number of messages, if any
* @return int
*/
function has_msgs () {
return count ($this->msgss);
}
/*
* return the number of errors, if any
* @return int
*/
function has_errs () {
return count ($this->errs);
}
}
class selectbox extends core {
protected $name;
protected $values;
protected $options;
protected $selected;
protected $n;
/* constructor */
function __construct ($name, $values, $options, $selected) {
parent::__construct ();
if (!is_array ($values)) {
$this->set_err ('<p>Het eerste argument moet een array zijn</p>');
}
if (!is_array ($options)) {
$this->set_err ('<p>Het tweede argument moet een array zijn</p>');
}
if (count ($values) != count ($options)) {
$this->set_err ('<p>De arrays moeten even lang zijn</p>');
}
$name = trim ($name);
$name = preg_replace ('/[^a-zA-Z0-9]/', '', $name);
if (empty ($name)) {
$this->set_err ('<p>Geen geldige naam opgegeven</p>');
}
$this->name = $name;
$this->values = $values;
$this->options = $options;
$this->selected = $selected;
$this->n = count ($values);
}
/*
@get_html: haal de HTML code voor de select op
*/
function get_html () {
$html = PHP_EOL;
$html .= '<select id="' . $this->name . '" name="' . $this->name . '">';
for ($i = 0; $i < $this->n; $i++) {
if ($this->selected == $this->values[$i]) {
$html .= PHP_EOL . '<option selected="selected" value="' . $this->values[$i] . '">' . $this->options[$i] . '</option>';
}
else {
$html .= PHP_EOL . '<option value="' . $this->values[$i] . '">' . $this->options[$i] . '</option>';
}
}
$html .= PHP_EOL . '</select>';
return $html;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Options onthouden</title>
<style type="text/css">
@import 'oop.css';
</style>
</head>
<body>
<div id="container">
<div class="wrapper">
<h1>Selectbox class</h1>
<form method="post" action="#">
<p>
<?php
$name = 'groente';
$values = range (1, 9);
$options = array ('sla', 'spruitjes', 'andijvie', 'sperziebonen', 'worteltjes', 'witlof', 'broccoli', 'bloemkool', 'uien');
$selected = (isset ($_POST[$name])) ? ($_POST[$name]) : ($values[0]);
$sel = new selectbox ($name, $values, $options, $selected);
echo $sel->get_html ();
?>
</p>
<p>
<input type="submit" value="verzenden">
</p>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>';
print_r ($_POST);
echo '</pre>';
}
if ($sel->has_errs ()) {
echo '<div class="errs">';
foreach ($sel->get_errs () as $err) {
echo $err;
}
echo '</div>';
}
?>
</div>
</div>
</body>
</html>
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in download.php on line 54
Ik denk vanwege de "protected" waarde in de CLASS core. Desallniettemin, bedankt voor je professionele oplossing! :)
http://phphulp.nl/php/tutorials/2/404/
^^ Tutorial van Jan Koehoorn.
Hiermee moet het wel lukken denk ik.
^^ Tutorial van Jan Koehoorn.
Hiermee moet het wel lukken denk ik.
Thomas schreef op 21.04.2007 02:35:
Bedankt voor je mooi OOP functie, echter krijg ik nu een error die mij dwingt om over te stappen naar PHP 5.0 of hoger:
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in download.php on line 54
Ik denk vanwege de "protected" waarde in de CLASS core. Desallniettemin, bedankt voor je professionele oplossing! :)
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in download.php on line 54
Ik denk vanwege de "protected" waarde in de CLASS core. Desallniettemin, bedankt voor je professionele oplossing! :)
Om hem geschikt te maken voor PHP4 kun je het volgende doen:
1) overal waar protected staat, maak je er var van
2) verander de functienaam __construct in de naam van de class (respectievelijk core en selectbox)
3) in de constructor van de selectbox class verander je dit:
parent::__construct ();
in dit:
parent::core ();
Let er op dat je de constructor van de core class ook aangepast hebt.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn