PDA

View Full Version : كمك در مورد select : منظورم همون سلكت فرمه



miki_ir
سه شنبه 29 شهریور 1390, 14:46 عصر
سلام
ميخام
دو تا بخش سلكت توي فرمم داشته باشم
وقتي كاربر ليست اولو كليك كرد از پايگاه داده option ها يا گزينه هاي ليست به نمايش در بياد بعد اگه كاربر اومد
و يكي رو انتخاب از ليست اول انتخاب كرد با توجه به مقدار انتخاب شدش ليست دومم گزينه هاشو از پايگاه داده بگيره

mohsen6500
سه شنبه 29 شهریور 1390, 15:12 عصر
سلام
اگر بخواهید که این کار رو به صورتهمزمان انجام بدید باید از AJAX استفاده کنید
این بک مثال خیلی ساده و بسیار پرکاربرد! (http://w3schools.com/php/php_ajax_database.asp)

miki_ir
سه شنبه 29 شهریور 1390, 16:22 عصر
شهيد بزرگوار به خدا خسته شدم چند روزه دنبالشم فايده اي نداشته
ببين من راهو رفتم
اومدم چكار كردم : اين بخش اجكس كدمه : دو تابعه كه يكيشون ليست اول رو از پايگاه ميگيره وقتي ليست كليك ميشه . تابع دومم وقتي يك گزينه از ليست اول انتخاب ميشه ميره يه جستجو ميكنه و ليست دوم رو از پايگاه پر ميكنه
خب اينم رويدادا رويداد

<select name="section" onchange="getDoctor(this.value)" onclick="getSection()" >
اينم كد بخشي از آجكس

function getSection() {

var strURL="findSection.php?section="+"my";
var req = getXMLHTTP();

if (req) {

req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('sectiondiv').innerHTML=re q.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
function getDoctor(sectionId) {
var strURL="findDoctor.php?section="+sectionId;
var req = getXMLHTTP();

if (req) {

req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('doctordiv').innerHTML=req .responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}

}
حالا برنامه برا قسمت اول كار ميكنه فقط بعضي ها رو چند بار تكرار كرده نميدونم چرا . اما تو رويداد onchange كه بايد باعث بشه كامبوباكس دوم پر بشه عمل نميكنه
نميدونم چكار كنم
اينم كد php براي كامبو باكس اول كه تا حدودي درست كار مي كنه

<?php
$section=$_GET["section"];
//echo $section;
$link = mysql_connect('localhost', 'root', ''); //changet the configuration in required
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("myClinic",$link);
$query="SELECT * FROM `section` ";
$result=mysql_query($query,$link);
//$row=mysql_fetch_assoc($result);
// echo mysql_num_rows($result);
//while ($row = mysql_fetch_assoc($result))
//echo $row["name"];
// print_r(mysql_fetch_assoc($result));
?>



<select name="section">
<option>بخش را انتخاب كنيد</option>
<?php
$options="";
while ($row = mysql_fetch_assoc($result)) {
$idSec=$row['idSec'];
$name=$row['name'];
$options .="<option VALUE=\"$idSec\">".$name.'</option>';
// extract($options);
//echo $name;
echo $options;
?>
<?php } ?>
</select>
اين كد php قسمت دوم كه درست كار نميكنه

<?php
//
$section=$_GET['section'];
//echo $section.'-------------------';
$link = mysql_connect('localhost', 'root', ''); //changet the configuration in required
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("myClinic",$link);
$query="SELECT idُِِDo ِِِِ,name FROM doctor where idSec ='$section' ";
$result=mysql_query($query,$link);

?>

<select name="doctor">
<option>دكتر را انتخاب كنيد</option>
<?php
$options="";
while ($row = mysql_fetch_assoc($result)) {
$idSec=$row['idDo'];
$name=$row['name'];
$options .="<option VALUE=\"$idDo\">".$name.'</option>';

echo $options;

?>

<?php } echo "<option VALUE=\"\">".$section.'</option>'; ?>
</select>
اگه كسي بلده كمك كنه ثواب داره
رسما داغون شدم

miki_ir
سه شنبه 29 شهریور 1390, 18:49 عصر
Help Me Please

mohsen6500
سه شنبه 29 شهریور 1390, 22:50 عصر
سلام به دوست عزیز خودم
عرض کنم که شما به لینکی که دام انگار توجه نکردید!
اما اشکالی نداره برای این که هم شما و هم شاید دوستان دیگری هم دنبال این قضیه باشند باید عرض کنم که
برای این کار ابتدا یک کد جاوا اسکریپت نیاز هست که صفحه مارا بعنوان یک مرورگر تبدیل میکند!
البته باید در قسمت head نوشته بشه!



<script type="text/javascript">
function Ostan_Id(str)//نام متغییر اول
{
if (str=="")
{
document.getElementById("City_Name").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("City_Name").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","show_city.php?q="+str,true);//صفحه ایی که میخواهیم رجوع کنیم
xmlhttp.send();
}
</script>



نکات مورد نظر رو توی خود کد نوشتم
ولی خوب بازم میگم اول اینکه نام تابع رو با نام سلکت اول باید یکی بگیرید



function Ostan_Id(str)//نام متغییر اول



دوم اینکه نام سلکت دو را در کد جاوا اسکریپت باید هم نام با نام سلکت دوم بذارید



document.getElementById("City_Name").innerHTML="";



حال نوبت به درج سلکت ها میرسه این اولین سلکت که من برای مثال از 3 استان استفاده کردم



//اینم از سلکت اول که اسامی دلخواه را مینویسم
//من برای مثال 3تا استان نوشتم
<select name="Ostan" onChange="Ostan_Id(this.value)" dir="rtl"
style="font:tahoma;color:#0033CC;" >
<option value="0" selected="selected" >لطفا استان مورد نظرتان راانتخاب کنید</option>
<option value="1">خوزستان</option>
<option value="2">بوشهر</option>
<option value="3">همدان</option>
</select>



و این هم از سلکت دوم که باید نام شهرها باشه
فقط من یه آپشن گذاشتم برای حالت پیش فرض



//آغاز سلکت دوم که بر اساس سلکت اول نتایج را درج میکند
//نکته اینکه آی دی را حتما باید مطابق کد جاوا اسکریپت بگذارید
//document.getElementById("City_Name").innerHTML=""ک
//گذاشتم City_Name همانطور که می بینید من

<select name="City_Name" id="City_Name">
<option value="0">---------</option>//حالت پیش فرض
</select>



این از صفحه اول که کارمون باهاش تموم شد
حالا باید به صفحه دوم برویم و مقدار درخواستی رو چک کنیم و بر اون اساس شهرهاشو نشون بدیم



<?php
if(isset($_GET['q']))
{
$q=@$_GET["q"];
if($q == "1" )//اگر استان درخواستی خوزستان بود
{
echo' <option value="1_1">آبادان</option>
<option value="1_2">اهواز</option>
<option value="1_3">اندیمشک</option>';
return true;
}
elseif($q == "2" )//اگر شهر مورد نظر بوشهر بود
{
echo'<option value="2_1">بوشهر</option>
<option value="2_2">بردخون</option>
<option value="2_3">دیر</option>';
return true;
}
elseif($q == "3" )//درنهایت اگر شهر مورد نظر همدان بود
{
echo'<option value="3_1">همدان</option>
<option value="3_2">ملایر</option>
<option value="3_3">نهاوند</option>';
return true;
}
}
?>



به همین سادگی همه چیز کاملا واضحه!
ولی بازم اگر سوالی بود درخدمتم
اینم فایلهاش
75557

miki_ir
چهارشنبه 30 شهریور 1390, 00:41 صبح
سيد دستت درد نكنه اما اگه كدامو نگاه ميكردي متوجه ميشدي اينارو بلدم . اي وايه من .انگار بد سوال كردم
من با اجكس ايجادش كردم كد بالا رو ببين همه چي الظاهر درسته اما جواب نميده
منن حتي اينم تست كردم

function hich() {
//var name_element = document.getElementById('s');
//var name = name_element.value;
var name = Document.F.section.options[Document.F.section.options.selectedIndex].value;
var strURL="findDoctor.php?section="+name;
var req = getXMLHTTP();

if (req) {

req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('doctordiv').innerHTML=req .responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}

}
اينم تست كرده بودم فايده نداشت

miki_ir
چهارشنبه 30 شهریور 1390, 00:47 صبح
آويني جون كدت كار نميكنه

tem988
چهارشنبه 30 شهریور 1390, 01:19 صبح
سلام
من این کارو با جی کوئری نوشتم و کار میکنه خودم ازش استفاده کردم

<script type="text/javascript">
function refreshCity(ostan){
var ostan_id=ostan.options[ostan.selectedIndex].value;

$('#city').load('selectCity.php?q='+ostan_id);
}
</script>
</head>
<body>
<form action="" method="post">
<select name="ostan" id="ostan" onchange="refreshCity(this)">
<?php
$res=@mysql_query("SELECT * FROM ostans")or die(mysql_error());
while($row=@mysql_fetch_array($res,MYSQL_ASSOC) ){
echo "<option value='$row[id]'> $row[ostan] </option>";
}
mysql_close($con);
?>
<option value='******'selected='selected'>انتخاب کنید</option>
</select>
<br />
<select style='font:9pt Tahoma;direction:rtl' name="city" id="city" >
<option value='******'selected='selected'>شهر</option>
</select>
</form>

اینم کدهای فایل selectCity.php


$ostan=$_REQUEST['q'];
$res=@mysql_query("SELECT * FROM citys WHERE ostan_id=$ostan") or die(mysql_error());

while($row=@mysql_fetch_array($res,MYSQL_ASSOC) ){
echo "<option value='$row[id]'>$row[citys]</option>";
}

miki_ir
چهارشنبه 30 شهریور 1390, 08:43 صبح
خدا همتونو خير بده
تا حدودي حل شد

davidrobert
دوشنبه 20 شهریور 1391, 17:20 عصر
سلام من با php با مشكل بر خورديم ميخوام تو قسمت تبليغات از دو تا كامبو باكس استفاده كنيم وقتي در كامبوباكس اول اسم آرايشگاه اورديم در كامبوباكس دوم بيگي آرايشگاه زنانه يا مردانه و روي كامبوباكس اول در ضميني تجارت كليك كرديك در كامبوباكس دوم در مورد اطلاعات كامبوباكس اول بياري كه بيگي بازرگاني ، تجارتي هستش خيلي ممنون ميشيم من رو كمك كنيد اگه با ديتابيس استش لطفا اگه همچين فايلي داريد بديد ممنون ميشيم هيچ جور با اين كدا جواب نگريفتيم ممنون ميشيم من رو كمك كنيد

davidrobert
چهارشنبه 22 شهریور 1391, 22:35 عصر
كسي فايلي نداري به عنوان كمكي بده خدا وكيلي دهن من هم سرويس شده نمي دونيم بايد چطور درست كنيم و از 2 تا كامبوباكس كه اولي عنوان باشه و دومي زير عنوان ، عنوان ها باشه ممنون ميشيم كمك كنيد.