Forum Moderators: coopster

Message Too Old, No Replies

Drop down box selected value to open in a DIV

         

Amehotep

8:47 am on Aug 26, 2009 (gmt 0)

10+ Year Member



Hi,

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


<?php

ini_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]

andrewsmd

9:39 pm on Aug 26, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



To keep selected values in a dropdown with session variables you would need to do something like this

<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>

rocknbil

5:29 pm on Aug 27, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Or, build the list as you go through the loop, providing an easier to read output at the end.


$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]