تسجيل الدخول

مشاهدة النسخة كاملة : مساعدة في php


حسناء 1961
2012-11-07, 10:40
السلام عليكم ورحمة الله تعالى وبركاته
اريد منكم مساعدتي في كيفية عمل
deux select dans un formulaire
تتغير معلومات الثاني بعد الاختيار في الاول
وشكرا لكم

الصديق الذهبي
2012-11-07, 13:24
يرحى التوضيح أكثر أختي

حسناء 1961
2012-11-07, 14:22
مثال
عند اختيار الدولة شريط الولايات يتغير حسب الدولة
مثل موقع annonce-algerie.com

الصديق الذهبي
2012-11-07, 14:33
لا أظن أن الأمر يحتاج php فقط بل الى javascript ايضا لان الأمر يتم دون تحديث الصفحة ومادام الأمر يتم مع السيرفر

فمطلوب الajax هنا

حسناء 1961
2012-11-07, 14:41
نعم
avec la fonction dhtmlxcombo
لكني لم اتمكن من وضعها

حسناء 1961
2012-11-08, 08:18
هي موجودة في قاعدة البيانات

ahmed_algerie
2012-11-08, 19:22
كان من الأحسن لو عرضتي بنية الجداول لتسهيل الشرح
لايهم سنضع بنية لجداول تقريبية وبعدها تطبقين الفكرة على موقعك

نفترض أن هناك جدولين الأول للدول والثاني للولايات على الشكل التالي:

http://dc613.4shared.com/img/5ojTxsm8/s7/0.7109863991072505/001.png

ونفترض أن الجداول تحتوي على البيانات التالية:

http://dc389.4shared.com/img/bmeGdbjN/s7/0.15111012505367094/002.png

بالنسبة إلى ملف php نسميه مثلا get_states.php
سنقوم بجلب البيانات من قاعدة البيانات وتحديدا من الجدول الخاص بالولايات:


$country_id = $_GET['country_id'];
$states = mysql_query("SELECT * FROM states WHERE country_id='$country_id'");

while($state_info = mysql_fetch_array($states)){
$states_list .= "<option value='$state_info[state_id]'>$state_info[state_name]</option>";
}

echo $states_list;


بالنسبة إلى المستخدم
سنقوم بكتابة دالة لجلب البيانات عن طريق تقنية ajax

أولا نفترض أن لديك العناصر التالية في الفورم
- صندوق اختيار خاص بالبلدان
- صندوق اختيار خاص بالولايات داخل إطار يحمل المعرف "states_container" كالتالي: "<div id="states_container">" .
- افترضنا أن صندوق الاختيار الخاص بالولايات يحمل الاسم states

مثال عن الفورم:


<select name="countries">
<option>....</option>
</select>

<div id="states_container">
<select id="states">
<option>....</option>
</select>
</div>


الآن نقوم بكتابة الدالة التي ستقوم بجلب البيانات مباشرة من قاعدة البيانات.


function get_states(country_id){

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
var states_container = document.getElementById('states_container');
states_container.innerHTML = '<select name="states">'+xmlhttp.responseText+'</select>';
}
}

xmlhttp.open("GET", "get_states.php?country_id="+country_id, true);
xmlhttp.send();
}


هذه الدالة تأخذ رقم التعريف الخاص بالبلد وتستعمله لجلب البيانات عن طريق ملف "get_states.php"

بالنسبة إلى طريقة استخدام الدالة:
نقوم باستعمال الدالة عند تغيير البلد، برمجيا هذا يعني وضعها داخل وسم onchange الخاص بصندوق الاختيار
كالتالي:


<select name="countries" onchange="get_states(this.value)">


هذا على افتراض أني فهمت السؤال بشكل جيد :)

حسناء 1961
2012-11-11, 09:35
شكرا جزيلا اخي
بارك الله فيك

the_leader
2012-11-17, 00:00
كان من الأحسن لو عرضتي بنية الجداول لتسهيل الشرح
لايهم سنضع بنية لجداول تقريبية وبعدها تطبقين الفكرة على موقعك

نفترض أن هناك جدولين الأول للدول والثاني للولايات على الشكل التالي:

http://dc613.4shared.com/img/5ojTxsm8/s7/0.7109863991072505/001.png

ونفترض أن الجداول تحتوي على البيانات التالية:

http://dc389.4shared.com/img/bmeGdbjN/s7/0.15111012505367094/002.png

بالنسبة إلى ملف php نسميه مثلا get_states.php
سنقوم بجلب البيانات من قاعدة البيانات وتحديدا من الجدول الخاص بالولايات:


$country_id = $_GET['country_id'];
$states = mysql_query("SELECT * FROM states WHERE country_id='$country_id'");

while($state_info = mysql_fetch_array($states)){
$states_list .= "<option value='$state_info[state_id]'>$state_info[state_name]</option>";
}

echo $states_list;


بالنسبة إلى المستخدم
سنقوم بكتابة دالة لجلب البيانات عن طريق تقنية ajax

أولا نفترض أن لديك العناصر التالية في الفورم
- صندوق اختيار خاص بالبلدان
- صندوق اختيار خاص بالولايات داخل إطار يحمل المعرف "states_container" كالتالي: "<div id="states_container">" .
- افترضنا أن صندوق الاختيار الخاص بالولايات يحمل الاسم states

مثال عن الفورم:


<select name="countries">
<option>....</option>
</select>

<div id="states_container">
<select id="states">
<option>....</option>
</select>
</div>


الآن نقوم بكتابة الدالة التي ستقوم بجلب البيانات مباشرة من قاعدة البيانات.


function get_states(country_id){

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
var states_container = document.getElementById('states_container');
states_container.innerHTML = '<select name="states">'+xmlhttp.responseText+'</select>';
}
}

xmlhttp.open("GET", "get_states.php?country_id="+country_id, true);
xmlhttp.send();
}


هذه الدالة تأخذ رقم التعريف الخاص بالبلد وتستعمله لجلب البيانات عن طريق ملف "get_states.php"

بالنسبة إلى طريقة استخدام الدالة:
نقوم باستعمال الدالة عند تغيير البلد، برمجيا هذا يعني وضعها داخل وسم onchange الخاص بصندوق الاختيار
كالتالي:


<select name="countries" onchange="get_states(this.value)">


هذا على افتراض أني فهمت السؤال بشكل جيد :)



اسمح لي أن احييك أخي العزيز على اهتمامك وإلمامك وسهولك شرحك
والله لقد فتنت بردك القيم والجميل
جزاك ربي الجنان بما تفعله من صالح الأعمال آمـــــــــــــــــين

تفبلوا مروري .. تحياتيـ the_leader