A-AA+then

เก็บผลจากการเลือกใน combo ไว้ใน session

1,318
จากที่เคยถามเรื่อง combo สองชั้น สามารถทำได้แล้ว นะคะ แต่ตอนนี้ต้องการเก็บข้อมูลที่ select จาก combo ทั้งสองอันไว้ใน session เพื่อนำไปใช้ในฟอร์มอื่นค่ะ

ตอนนี้ สามารถเก็บข้อมูลจาก combo ตัวแรกแล้ว คือ $_SESSION["dbID"]='$database';(ที่หน้า list.php) 

อยากจะช่วยรบกวนให้ดูหน่อยได้มั้ยคะว่า จะเอาข้อมูลที่ select จาก combo ตัวที่สองจากตรงไหนคะ

นี่เปนโค้ดค่ะ
หน้าที่แสดงคอมโบ
<?php    
//ค่าที่ได้รับมาจากการ Submit
$database = $_POST[database];
$exercise = $_POST[exercise];
if ( !empty( $exercise ) )
{
echo "<br /><br />ค่าที่ได้จากการ Submit คือ :<br /<br />ฐานข้อมูลที่เลือก : $database<br />แบบฝึกหัดที่เลือก : $exercise<br /><br /><br />\n";
};
    
echo "<form action='?' method='post'>";
echo "<span id='databaseDiv'>";
echo "<label for='database'>ฐานข้อมูล :</label><select id='database'>";
echo "<option value='$database'>--------------</option>" ;
echo "</select></span>";
    
echo "<span id='exerciseDiv'>";
echo "<label for='exercise'>ชุดแบบฝึกหัด :</label><select id='exercise'>";
echo "<option value='$exercise'>--------------</option>" ;
echo "</select></span>";
echo "<br /><br /><input type='submit' value='Submit' name='submit' />";
echo "</form>";
?>
 
<script type="text/javascript">
//AJAX
function Inint_AJAX()
{
try
{
return new ActiveXObject( "Msxml2.XMLHTTP" );
}
catch ( e )
{
};
 
try
{
return new ActiveXObject( "Microsoft.XMLHTTP" );
}
catch ( e )
{
};
 
try
{
return new XMLHttpRequest();
}
catch ( e )
{
};
 
alert( "XMLHttpRequest not supported" );
return null;
};
 
function dochange( obj )
{
var req = Inint_AJAX();
// เปิดหน้าเว็บครั้งแรก โหลด database
if ( obj=='init' )
{
var data = "database=init";
req.onreadystatechange = function()
{
if ( req.readyState == 4 )
{
if ( req.status == 200 )
{
//alert(req.responseText);
document.getElementById( 'databaseDiv' ).innerHTML = req.responseText;
};
};
};
req.open( "post" , "list.php" , true ); //สร้าง connection
req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); // set Header
req.send( data ); //ส่งค่า
}
// เลือก database โหลด exercise
else if ( obj=='database' ) 
{
var database = document.getElementById('database').value;
var data = "database=" + database;
req.onreadystatechange = function()
{
if ( req.readyState == 4 )
{
if ( req.status == 200 )
{
//alert(req.responseText);
document.getElementById( 'exerciseDiv' ).innerHTML = req.responseText;
};
};
};
req.open( "post" , "list.php" , true ); //สร้าง connection
req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); // set Header
req.send( data ); //ส่งค่า
}
};
 
//โหลดครั้งแรก
window.onload = function()
{
dochange('init');
};
</script>

หน้า list.php
<?php
session_start();
header( "Expires: Sat, 1 Jan 2005 00:00:00 GMT" );
header( "Last-Modified: ".gmdate( "D, d M Y H:i:s" )."GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
header( "content-type: application/x-javascript; charset=UTF-8" );
 
$database = $_POST['database'];
$proID=$_SESSION[username];
$hostname_conn = "localhost";
$username_conn = "root";
$password_conn = "1234";
$database_conn = "myproject";
mysql_connect( $hostname_conn , $username_conn , $password_conn ) or die( "เชื่อมต่อฐานข้อมูลไม่ได้" );
mysql_select_db( $database_conn ) or die( "เลือกฐานข้อมูลไม่ได้" ); // เลือกฐานข้อมูล
 
// เปิดเว็บครั้งแรก โหลด database
if($database == 'init')
{
$sql = "SELECT dbID, dbName FROM database_info WHERE proID='$proID'";
$result = mysql_query( $sql );
$ajax_result = "<label for='database'>ฐานข้อมูล :</label>";
$ajax_result .= "<select id='database' onchange=\"dochange('database');\">";
$ajax_result .= "<option value='0'>------กรุณาเลือกฐานข้อมูล------</option>";
while( $fetcharr = mysql_fetch_array( $result ) )
$id = $fetcharr['dbID'];
$name = $fetcharr['dbName'];
$ajax_result .= "<option value='$id'>$name</option>";
}
$ajax_result .= "</select>";
}
// เลือก database โหลด exercise
else
{
$sql = "SELECT setID FROM exercise_set WHERE dbID='$database'";
$result = mysql_query( $sql );
$ajax_result = "<label for='exercise'>ชุดแบบฝึกหัด :</label>";
$ajax_result .= "<select id='exercise'>";
$ajax_result .= "<option value='0'>-------กรุณาเลือกชุดแบบฝึกหัด------</option>";
while( $fetcharr = mysql_fetch_array( $result ) )
$id = $fetcharr['setID'];
$name = $fetcharr['setID'];
$ajax_result .= "<option value='$id'";
if ( $database == $id )
{
$ajax_result .= " selected='selected'";
}
$ajax_result .= ">แบบฝึกหัดชุดที่ $name</option>";
}
$ajax_result .= "</select>";
}
 
mysql_close();
echo $ajax_result;
?>
  

3 ความคิดเห็น

55+++

//ค่าที่ได้รับมาจากการ Submit
$database = $_POST[database];
$exercise = $_POST[exercise];

โค้ดก็มีคำอธิบายอยู่แล้วนี่ครับ ค่าแรกเก็บ $database ไป ค่าที่สองก็มีแค่ $exercise เท่านั้นที่ยังไม่ได้เก็บ
1

 ถ้าเก็บจากตรงหน้านั้น มันเปนค่าว่างค่ะ ทัง้สองอันเลย 
2

มันต้อง submit ก่อนครับ ไม่ใช่แค่เลือกเฉยๆ แล้วมันจะเก็บค่า เนื่องจาก session อยู่ฝั่ง server ดังนั้นจึงต้องให้มัน submit ก่อน เพื่อส่งค่าที่เลือกไปเก็บยัง server
3
^