استفاده از ajax در php ?

wayiran

New Member
من دارم يه سايت دايركتوري رو با php مي سازمش! http://science.co.sr

يعني كاري مي كنم كه افراد بتونن سايت هاي جديد رو تو شاخه ي مناسبش اضافه كنن.
واسه اين كار بايد از يه optionbox شاخه ي اصلي و از يه optionbox ديگه زيرشاخه هايي رو كه اون سايت بهشون مربوطه رو انتخاب كنن.
من مي خوام يه كاري كنم كه به محض اينكه كاربر شاخه ي اصلي رو انتخاب كردش، زير شاخه هاي مربوطه هم تو optionbox بعدي نشون داده بشه..... تا اونجا كه مي دونم واسه اين كار بايد از Ajax استفاده كنم.... ولي نمي دونم كه چطور ميشه اونو با php استفاده كرد..... يه مثال استفاده از اونو با asp تو سايت w3schools.com قسمت آموزش ajax ديدم ولي چون از asp سر در نميارم هيچ چيز نفهميدم....

اگه ميشه راهنماييم كنين... مرسي.
 

NabiKAZ

Well-Known Member
سلام
از آجاکس میشه استفاده کرد، ولی راحت ترش استفاده از جاوا اسکریپته . چون آجاکس به هر صورت بخشی از صفحه رو رفرش میکنه ، ولی اگر با جاوا اسکریپت اینکارو بکنی نیازی به رفرش شدن صفحه هم نیست.

اصولا من کد هام هر چند ساده رو در اختیار کسی نمیزارم ، ولی اینبارو بیخیال...
شاید یکم کدم در هم برهم باشه ولی اگر دقت کنی و تیز باشی متوجه میشی چیکار کردم.
PHP:
<SCRIPT language=javascript type=text/javascript>
		function checkCompany() {
		   var detailList = new Array(<?=$num_product_companys?>);
<?
while ($row = mysql_fetch_array($Result)) {
?>
detailList[<?=$row['cid']?>] = Array(
<?
$Query2 = "SELECT * FROM `product_products` WHERE cid=$row[cid]";
$Result2 = mysql_query($Query2);
$n=0;
while ($row2 = mysql_fetch_array($Result2)) {
$n++;
if (mysql_num_rows($Result2)==$n) {$kama="\n";}else{$kama=",\n";}
?>
	 Array("<?=$row2['pid']?>", "<?=$row2['p_name_fa']?> (<?=$row2['p_name_en']?>)")<?=$kama?>
<?
}//end row2
?>
	);
<?
}//end row
?>

			with (document.forms["MainForm"]) {
				cid_select = cid.value.toLowerCase()
				if ( cid_select== "") {
					pid.selectedIndex = 0;
					pid.disabled = true;
					return;
				}
				pid.disabled = false;

				detList = detailList[cid_select];
			
				for (i = pid.options.length; i>=1; i--) { pid.remove(i); }
				for (i=0; i<detList .length; i++) {
					pid.options[i+1] = new Option(detList [i][1], detList [i][0]);
				}
				pid.selectedIndex = 0;
			}
		}
</SCRIPT>


اگر متوجه نشدی ، برو تو سایتهایی که این شیوه رو پیاده کردن ، view source کن و کدهاش رو بر دار. بعد درست در جایی که آیتم های option توسط java script تعریف شده (احتمالا به صورت یه آرایه) شما اونها رو توسط php میسازی.

به بخش عضویت سایت www.isoces.ir یه سر بزن ، کدهای جاوای زیادی توش استفاده کردم که شاید برات مفید باشه.

اگر بازم مشکلی داشتی بپرس

چاریم
نبی
 

wayiran

New Member
شايد جاوااسكريپت راحت تر باشه ولي وقتي آجاكس هستش خيلي راه غير منطقي هستش. چرا؟
چون مثلا اگه تو سايتي كه مي سازم 50 تا شاخه ي اصلي وجود داشته باشه و واسه هر شاخه هم 10 زير شاخه باشه كه اين زير شاخه ها هر كدوم شايد باز هم 10 تا زير شاخه داشته باشن با اين حساب اگه قرار باشه كه از جاوااسكريپت استفاده كنم بايد 50*10*10=5000 تا شاخه رو از تو ديتابيس بكشه بيرون، كه اين در حجم زياد پدر سرور رو در مياره....
ولي اگه قرار باشه از آجاكس استفاده بشه، فقط زير شاخه هاي يكي از اون 50 تا رو ميكشه بيرون و اگه زير شاخه هاش هم زير شاخه داشته باشن ميشه: 50+10+10=70 كه نسبتا" عدد كمي هستش.....

كد شما هم به دردم نخورد..... چون نه دقت كردم و نه تيز هستم.....
كدهاي زيادي تو اينترنت پيدا ميشن كه مرتب هم هستن....

البته يه چيز رو يادم رفت: اونم تشكر از شما بود به خاطر توجه تون... چون اگه شما هم اين يه جواب رو نمي دادين.... اين تاپيك واسه چندمين روز بدون جواب ميموند.
 

NabiKAZ

Well-Known Member
حرف شما درست!
اگر تعداد زیر شاخه ها خیلی زیاد باشه بهترین گزینه آژاکسه .
شما که گفتید کد تو اینترنت زیاد است پس چرا اینجا میپرسید؟!

شما که راه حل رو خودتون گفتید، دیگه نمیفهمم مشکلتون کجاست؟!
 

جدیدترین ارسال ها

بالا