Forum Moderators: coopster
I have an unfinished business with three drop down boxes.
My mixed code is on <snip>
As you can see, when selected value from the first box second one is populated... and so on.
But, when you select option from third one, it suppose to open information regarding your selection out from database.
It works ok. But, when script made its work I lose values in boxes, previously selected.
Code:
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language=Javascript>
function Inint_AJAX() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
alert("XMLHttpRequest not supported");
return null;
};function dochange(src, val) {
var req = Inint_AJAX();
req.onreadystatechange = function () {
if (req.readyState==4) {
if (req.status==200) {
document.getElementById(src).innerHTML=req.responseText;
}
}
};
req.open("GET", "locale.php?data="+src+"&val="+val);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); // set Header
req.send(null);
}
window.onLoad=dochange('categoria', -1);
function ViewCrossReference (selSelectObject)
{
if (selSelectObject.options[selSelectObject.selectedIndex].value != "")
{
location.href=selSelectObject.options[selSelectObject.selectedIndex].value
}
}
</script>
</head>
<body><?php
$marka=$_GET["categoria"];
$tip=$_GET["subcategoria"];
$model=$_GET["subcategoria2"];
echo "<font id=\"categoria\"><select>\n";
if ($_POST['categoria'] == $nomeCategoria) {
echo '<option selected="selected">$marka</option>';
}
else {
echo "<option value='0'>- Marka -</option>\n";
}
echo "</select></font>\n";
?>
<?php
echo "<font id=\"subcategoria\"><select>\n";
echo "<option value='0'>auto</option> \n" ;
echo "</select></font>\n";
?>
<?php
echo "<font id=\"subcategoria2\"><select>\n";
echo "<option value='0'>model</option> \n" ;
echo "</select></font>\n";
?>
<?
$host = "localhost";
$user = "root";
$pass = "";
$db = "ajax";
$id=$_GET["id"];
// open connection
$connection = mysql_connect($host, $user, $pass) or die ("Nije moguae uspostaviti vezu sa bazom!");
// select database
mysql_select_db($db) or die ("Nije moguae uspostaviti vezu sa bazom!");
// create query
$query = "SELECT * FROM location WHERE id='$id'";
// execute query
$result = mysql_query($query) or die ("Greka u dohvatu: $query. ".mysql_error());
// see if any rows were returned
if (mysql_num_rows($result) > 0) // yes
// print them one after another
{
echo "<table width=386>";
$row = mysql_fetch_row($result);
$naslov = $row[1];
echo "<tr><td><div class=\"sadrzaj-n\">Marka: $row[1] <br></div></td></tr>";
echo "<tr><td><br><div class=\"vijesti\">$row[2]<br>Ime: $row[3]</div></td></tr><tr><td><div class=\"datum2\">Karakteristike: $row[4] </div></td></tr>";
echo "<tr><td><div align=center><br><a href='javascript:history.go(-1)'>
< nazad </a></div></td></tr></table>";
echo "<br>";
}
else {
$vijest .= "<br><br><br><strong>Nije to to :)</strong>";
}
echo $vijest;
// free result set memory
mysql_free_result($result);
?>
<br />
</body>
</html>
locale.php
<?phpini_set("display_errors", 0); //turn off error reporting!
$data=@$_GET['data'];
$val=@$_GET['val'];
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "ajax";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server") ;
if ($data=='categoria') {
echo "<select name='categoria' onChange=\"dochange('subcategoria', this.value)\">\n";
echo "<option value='0'>- Marka -</option>\n";
$result=mysql_db_query($dbname,"select loc_code from location GROUP BY loc_code");
while(list($nomeCategoria)=mysql_fetch_array($result)){
if ($_POST['categoria'] == $nomeCategoria) {
echo '<option selected="selected"></option>';
}
else {
echo "<option value=\"$nomeCategoria\" >$nomeCategoria</option> \n" ;
}
}
} else if ($data=='subcategoria') {
echo "<select name='subcategoria' onChange=\"dochange('subcategoria2', this.value)\">\n";
echo "<option value='0'>- tip -</option>\n";
$result=mysql_db_query($dbname,"SELECT loc_abbr FROM location WHERE loc_code='$val' GROUP BY loc_abbr");
while(list($name)=mysql_fetch_array($result)){
echo "<option value=\"$name\">$name</option> \n" ;
}
} else if ($data=='subcategoria2') {
echo "<select name='subcategoria2' onChange=ViewCrossReference(this); >\n";
echo "<option value='0'>- model -</option>\n";
$result=mysql_db_query($dbname,"SELECT id , loc_name FROM location WHERE loc_abbr='$val'");
while(list($id, $name)=mysql_fetch_array($result)){
echo "<option value='index.php?id=$id' target='_blank'>$name</option> \n" ;
}
}
echo "</select>\n";
?>
Questions:
1. How to make cookie or session to store selected values?
or
2. How to open value from third drop down box in a DIV without reloading page? <snip>
I'm not good with php or ajax. Thank you for your answer/s!
[edited by: dreamcatcher at 10:13 pm (utc) on Aug. 26, 2009]
[edit reason] No urls, thanks. [/edit]
<html>
<?php
//start the session
session_start();
//this has to be an array of all of your dropdown values
$arr = array("First", "Second", "Third");
//the value from the dropdown
$input = $_POST['dropdown1'];
foreach($arr as $i){
//if the input matches then we set selected
//to true, otherwise we set it to false
if($input == $i){
$_SESSION[$i] = "selected=true";
}//if
else{
$_SESSION[$i] = "";
}//else
}//foreach
?>
<form method="post" name="form">
<select name="dropdown1">
<option value="First" "<?php echo($_SESSION['First']);?>">First Option</option>
<option value="Second" "<?php echo($_SESSION['Second']);?>">Second Option</option>
<option value="Third" "<?php echo($_SESSION['Third']);?>">Third Option</option>
</select>
<br><br>
<input type="submit" name="submit" value="submit">
<br><br>
</form>
</html>
$arr = array("First", "Second", "Third");
$selectList = '<select name="dropdown1" id="dropdown1"><option value="">Select</option>';
foreach($arr as $i){
$selectList .= '<option value="' . $i . '"';
if ($i == $_POST['dropdown1']) {
$selectList .= ' selected';
$_SESSION[$i] = "selected";
}
$selectList .= '>' . $i . '</option>';
}
$selectList .= '</select>';
$form = '
<form action="">
<label for="dropdown1">Select Number:</label> ' . $selectList .
'</form>';
echo $form;
[OT]
For 4.01 doctypes, selected=true and checked=true are invalid, inverse is true of XHTML doctypes . . . but if you're not doing and extending, you should use 4.01/html5.
[/OT]