Dropdown menu met automatisch doorlinken
Ik heb een vraagje ik zit met het volgende script maar die werkt niet het is de bedoeling dat de geselecteerde optie als POST word doorgegeven aan de volgende pagina
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
require_once('config.php');
$member_ID = $_SESSION['SESS_MEMBER_ID'];
$city_ID = $_SESSION['SESS_CITY_ID'];
$global_dbh = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
or die("Could not connect to database");
mysql_select_db(DB_DATABASE, $global_dbh)
or die("Could not select database");
?>
require_once('config.php');
$member_ID = $_SESSION['SESS_MEMBER_ID'];
$city_ID = $_SESSION['SESS_CITY_ID'];
$global_dbh = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
or die("Could not connect to database");
mysql_select_db(DB_DATABASE, $global_dbh)
or die("Could not select database");
?>
<html>
<head>
<title>Left-Frame</title>
<link href="loginmodule.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Menu:</h1>
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
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
<?php
if(!empty($_POST['Page'])){
session_start();
$_SESSION['VAR'] = $_POST['session_var'];
header("Location: ".$_POST['Page']);
exit;
}
$city_query = "SELECT Name
FROM city
WHERE member_ID = '$member_ID'";
$city_result = mysql_query($city_query)
or die(mysql_error());
echo '<FORM NAME="dropdown" ACTION="link" METHOD="post">';
echo '<input name="session_var" type="hidden" value="">';
echo '<select name="dropdown" onchange="dropdown.submit();">';
while($rows = mysql_fetch_assoc($city_result))
{
echo '<option value="' . $rows['Name'] . '">' . $rows['Name'] . '</option><br>';
echo $rows['Name'] . '<BR>';
}
echo '</select>';
echo '</FORM>';
if(!empty($_GET['debug'])){
echo "<PRE>\$_SESSION['VAR'] = ";
session_start();
var_dump($_SESSION['VAR']);
echo "</PRE>";
}
?>
if(!empty($_POST['Page'])){
session_start();
$_SESSION['VAR'] = $_POST['session_var'];
header("Location: ".$_POST['Page']);
exit;
}
$city_query = "SELECT Name
FROM city
WHERE member_ID = '$member_ID'";
$city_result = mysql_query($city_query)
or die(mysql_error());
echo '<FORM NAME="dropdown" ACTION="link" METHOD="post">';
echo '<input name="session_var" type="hidden" value="">';
echo '<select name="dropdown" onchange="dropdown.submit();">';
while($rows = mysql_fetch_assoc($city_result))
{
echo '<option value="' . $rows['Name'] . '">' . $rows['Name'] . '</option><br>';
echo $rows['Name'] . '<BR>';
}
echo '</select>';
echo '</FORM>';
if(!empty($_GET['debug'])){
echo "<PRE>\$_SESSION['VAR'] = ";
session_start();
var_dump($_SESSION['VAR']);
echo "</PRE>";
}
?>
</body>
</html>
Thnx Ryflex
Je form en select hebben dezelfde naam, ik denk dat dat jouw probleem is. Wijzig de naam van je select veld of gebruik this.form.submit();
Dank je voor je snelle reactie.
Ik heb de naam van de select gewijzigd naar dropdownselect. Maar nu vraag ik me af wat dan de $_POST variabele word... Ik heb al het nodige geprobeerd maar het werkt niet helemaal zoals het hoort.
Thnx Ryflex
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
while($rows = mysql_fetch_assoc($city_result))
{
echo '<option value="' . $rows['Name'] . '">' . $rows['Name'] . '</option><br>';
echo $rows['Name'] . '<BR>';
}
?>
while($rows = mysql_fetch_assoc($city_result))
{
echo '<option value="' . $rows['Name'] . '">' . $rows['Name'] . '</option><br>';
echo $rows['Name'] . '<BR>';
}
?>
Tekst en line-breaks tussen je opties door slaat zover ik weer nergens op. Maak daar in elk geval het volgende van:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
while($rows = mysql_fetch_assoc($city_result))
{
echo '<option value="' . $rows['Name'] . '">' . $rows['Name'] . '</option>';
}
?>
while($rows = mysql_fetch_assoc($city_result))
{
echo '<option value="' . $rows['Name'] . '">' . $rows['Name'] . '</option>';
}
?>
Verder is action = "link" vreemd, ook bij het gebruik van MOD_REWRITE zou ik absolute paths gebruiken.
Als je formulier dan correct verzonden word zou $_POST['dropdownselect'] de waarde van de geselecteerde optie moeten bevatten. Je kunt op de bestemmingspagina alle geposte gegevens natuurlijk bekijken met print_array($_POST). Controleer anders of $rows['name'] überhaupt een waarde bevat.
Thnx weer voor de snelle reactie.
De action ="link" geeft alleen aan dat daar normaal een link staat die ik er niet op wil zetten ivm site in aanbouw.
De extra tekst was een testje om de waardes te controleren in de $rows['Name'] variable.
De $rows['Name'] bevat een goede waarde die word weergegeven in de dropdown dus in zoverre gaat het goed.
Na het openen van de doelpagina word de $_POST niet doorgegeven en word deze gezien als leeg.
De functie print_array($_POST); geeft een error aan die oproept naar een undefined function.
Thnx Ryflex
Ai, dat moet natuurlijk zijn print_r($_POST)...
Hartstikke bedankt,
Die print_r onthou ik ff is inderdaad makkelijk om te zien wat er in de post staat.
overigens werkt de functie nu super.
Gr Ryflex