PDA

View Full Version : سوال: انتخاب مقادیر کنترل <select> بر اساس انتخاب کاربر



atryad
شنبه 02 خرداد 1394, 09:39 صبح
با سلام
چطور میتونم مقادیر یک کنترل select را بر اساس مقادیر انتخابی توسط کاربر که در select دیگری انتخاب می شود بارگزاری کنم
من اینو هم دیدم اما برای مقادیر ثابت نمیخوام
http://www.appelsiini.net/projects/chained/demo.html
این مقادیر از دوجدول جدا در دیتابیس خوانده میشه که به هم بر اساس یک کلید ارتباط داردند
من مقادیر رو توی دو کنترل جداگانه فراخوانی کردم اما میخوام وقتی که کاربر در کنترل اول تغییری ایجاد میکند فراخوانی بر اساس مقدار value کنترل به کنترل دوم اعمال شود
onchange کنترل هم که تمام صفحه رو دوباره خوانی میکند و محتویات دیگر فیلد ها از بین میرود

کد های من با PHP است
ممنون میشم راهنمایی بفرمایید

saeed-71
شنبه 02 خرداد 1394, 10:12 صبح
باید از ajax استفاده کنید.


$("#brand").change(function()
{
$('#model').html("<option value='0'>لطفا صبر نمایید ...</option>");
var id=$(this).val();
//alert(id);
var dataString = 'id='+ id;
$.ajax
({
type: "POST",
url: "http://localhost/site/site/model",
data: dataString,
cache: false,
success: function(html)
{
$("#model").html(html);
}
});
});

atryad
دوشنبه 04 خرداد 1394, 23:46 عصر
با سلام دوستان کارم با کد زیر راه افتاد





function showacc(str) { document.getElementById("acc2").innerHTML = " <option value='0'>لطفا صبر نمایید ...</option>";
if (str == "") { document.getElementById("acc2").innerHTML = ""; return; } else { 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("acc2").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET","loadAcc.php?q1="+str,true); xmlhttp.send(); }}
که فراخوانی در فایل loadAcc.php انجام میگیرد
اما مشکل من این است که وقتی 0004 را به کنترل <select> میفرستم و سپس مقدار آن را میگیرم 4 را برمیگرداند یعنی 0004 که به value اختصاص داده شده 4 میشود چطور میتونم اینو حل کنم
<option value="'.$row['Code'].'">'.$row['Name'].'</option>
چون فرمت یه نوع شماره حساب است که مقادیر 0 قبل از اعداد برای ایجاد حساب ها مهم است

atryad
چهارشنبه 06 خرداد 1394, 13:06 عصر
دوستان بزرگوار چرا کسی پاسخگو نیست
من به این نیاز دارم

مشکل من این است که وقتی 0004 را به کنترل <select> میفرستم و سپس مقدار آن را میگیرم 4 را برمیگرداند یعنی 0004 که به value اختصاص داده شده 4 میشود چطور میتونم اینو حل کنم
<option value="'.$row['Code'].'">'.$row['Name'].'</option>
چون فرمت یه نوع شماره حساب است که مقادیر 0 قبل از اعداد برای ایجاد حساب ها مهم است

دانیال دزفولی
چهارشنبه 06 خرداد 1394, 13:49 عصر
دوستان بزرگوار چرا کسی پاسخگو نیست
من به این نیاز دارم

مشکل من این است که وقتی 0004 را به کنترل <select> میفرستم و سپس مقدار آن را میگیرم 4 را برمیگرداند یعنی 0004 که به value اختصاص داده شده 4 میشود چطور میتونم اینو حل کنم
<option value="'.$row['Code'].'">'.$row['Name'].'</option>
چون فرمت یه نوع شماره حساب است که مقادیر 0 قبل از اعداد برای ایجاد حساب ها مهم است


توی js مقدار 0004 رو توی تابع String بذارید

atryad
یک شنبه 17 خرداد 1394, 10:52 صبح
دوستان عزیز سلام

من روشهای مختلفی رو تست کردم جهت مقدار دهی به کنترل select مانند

echo '<option value="'.(string) $row['Code'].'">'.$row['Name'].'</option>';
اما وقتی مقدار این select رو میفرستم به جاوا onchange="showacc(String(this.value)) از string هم استفاده میکنم
برای فیلتر یک ستون از جدول در دیتابیس که مقدار آن varchar میباشد وداری مقادیری ماننده 01,02,03,04,0004 که مقدار صفر قبل از عدد قرار میگیرد صفر از مقدار حذف شده و پاسخ صحیحی دریافت نمی شود
کد مقدار دهی به کنترل

<option value="">انتخاب کنید...</option>
<?php
$sql="SELECT * FROM total_accounts ";
$select=mysql_query($sql);
while($row=mysql_fetch_array($select))
{

echo '<option value="'.(string) $row['Code'].'">'.$row['Name'].'</option>';
}

?>




کد جاوا

function loadAcc(str )
{
document.getElementById("reza").innerHTML = " لطفا صبر کنید";
if (str == "")
{
document.getElementById("reza").innerHTML = "اتوماتیک";
return;
} else
{
if (window.XMLHttpRequest)
{

xmlhttp = new XMLHttpRequest();
} else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("reza").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","loadAcc.php?qload="+str,true);
xmlhttp.send();
}

}
</script>



تابع دریافت مقادی از دیتا بیس و مقدار دهی کنترل دیگر

$q1 = intval($_GET['q1']);


$q1=mysql_real_escape_string($q1);
$sql="SELECT * FROM certainـaccounts WHERE codeTotal = '{$q1}'";

$result=mysql_query($sql);


while($row=mysql_fetch_array($result))
{
echo '<option value="'.$row['codeF'].'">'.$row['Name'].'</option>';

}
}


ممنون میشم راهنمایی بفرمایید

farzad-kh
دوشنبه 18 خرداد 1394, 15:38 عصر
یه چک کن ببین قبل ارسال توی جاوااسکریپت نوزم همون مقدار اصلی هست یا تغییر کرده...اگه تغییر کرده بود برای اینکه واقعا رشته بمونه یه کاراکتر به اولش اضافه کن بعد توی صفحه php اون کاراکتر رو پاک کن...
اینو هم بررسی کن وقتی $_GET['q1']داری مقدار همون اصلیه هست یا نه تغییر کرده...