الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استدعاء حقل قائمة Select Menu من قاعدة بيانات

بدأه manal ali في 28 يوليو 2008 · 8 رد · 1,222 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اعدت كتابة السؤال لان الاول كان مخالف وذلك من العنوان

فارجو المساعدة

المشكلة كالاتي:

عملت فورم يحتوي على Radio option

واحدة لعرض كافة المعلومات عن مدرسين يتم استدعائها من قاعدة بيانات

والاخرى يتم تحديد اسم المدرس من قائمة select

والكود كالاتي:

elseif($_POST[R]=="V2")//choice the second radio option 
{
			$db=mysql_connect("localhost","root","");
			if (!$db)
			{
			echo "Cannot Connect";
			exit;
			}
			mysql_select_db("information system website",$db);
			$teacher=$_post['menu1'];//the name of select menu
 			$result=mysql_query("SELECT * FROM teachers WHERE 'tename'=$teacher");
 			While($num=mysql_fetch_array($result))
 			{
				echo"<tr><th width=400 bgcolor=#D7C1AA width=300 align=right><b>";
				echo $row['tename'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				echo $row['qualif'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				echo $row['gspec'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				echo $row['gradplace'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
 			}

عند تنفيذ الصفحة يظهر الخطأ التالي

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\allteachers.php on line 61

فهل الخطأ في استدعائي لل menu

#2

الموضوع كان مخالف من جميع النواحي ! ..

الكود المرفق (مبتور) , كيف يمكن ان يجيب احد والكود يبدأ بإ elseif مباشره !؟ .. ومن ثم الخطأ يشير الى السطر 61 , اين هذا السطر في الكود ؟

اذا اردنا دائماً فقط ان نسأل بدون محاوله او بحث , فلنسأل على الاقل بشكل صحيح ..

بالنسبه للكود , هناك مشكله في السطر :

$teacher=$_post['menu1'];//the name of select menu

$_post يجب ان يكون بالاحرف الكبيره $_POST لان الـ PHP حساسه لحاله الاحرف ..

جربي تغيرها ..

تم تعديل هذه المشاركة بواسطة محمد معاشر في 28 يوليو 2008 في 13:06

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#3

السلام عليكم

شكرا استاذي محمد معاشر على نصايحك

لكن من المستحيل ان اكتب الكود من بدايته انا كتبت من موضع الخلل وجزء IF الاول تم تطبيقه بنجاح الخلل في الجزء الثاني.

الخطأ في السطر 61 كان واضح من صيغة الخطأ اين موقع الخطأ وهي جملة mysql_fetch_array

انا حاولت في الكود أكثر من شهر وأملي الاخير كان اني اتفضل بالسؤال للفريق العربي.

على كل حال الشكر الجزيل لك وما نستغني عنك

جربت وغيرت كلمة POST الى أحرف كبيتال.

لكن المشكلة ليست في البوست.

هل طريقة كتابتي للاستدعاء من select menu صحيحة؟

وللإحاطة فالفورم هو كالاتي:

<form method="POST" action="allteachers.php">
		<p><input type="radio" value="V1" unchecked name="R"><span lang="ar-sa">الكل					  
		</span><input type="radio" value="V2" unchecked name="R"><span lang="ar-sa">   
		اختيار عضو هيئة تدريس 
		<select name="menu1">
		<option>أحمد عوض بن مبارك</option>
		<option>معاذ</option>
		<option>عبداللطيف</option>
		<option>وجدي حمزة داود</option>
		</select>
		</span></p>
		<p align="center">
		<input type="submit" value="موافق">
	</p>
	</form>
#4
اقتباس
لكن من المستحيل ان اكتب الكود من بدايته انا كتبت من موضع الخلل وجزء IF الاول تم تطبيقه بنجاح الخلل في الجزء الثاني.

الخطأ في السطر 61 كان واضح من صيغة الخطأ اين موقع الخطأ وهي جملة mysql_fetch_array

لفهم المشكله , احياناً يكون هناك حاجه للتتبع كامل البرنامج ,,

نموذج الـ HTML في الغالب سليم , وللتأكد من ان القيمة المختاره تمرر الى الملف allteachers.php بشكل سليم , قومي فقط بعمليه طباعه قبل تنفيذ الاستعلام اي قبل تنفيذ mysql_query , كالتالي :

echo $_POST['menu1'];

لاحظت وجود العديد من الاخطاء في الكود الخاص بالـ PHP ان كنت تعملي عليه . مثلاً , السطر :

elseif($_POST[R]=="V2")//choice the second radio option

الـ R يجب ان تكون بين علامه تنصيص 'R' ..

ايضاً , في السطر :

While($num=mysql_fetch_array($result))

المتغير المستخدم لحفظ النتيجه هو $num , بينما , في الطباعة , مستخدمه متغير غير موجود اساساً هو $row ..

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#5

غيرت ما يلزم ولكن لا فايدة ما زال الخطأ في mysql_fetch_array

هذا الكود جزء if كاملاً

ارجو ارشادي لمعرفة الخطأ

لا تقولوا ما حاولت والله انا أحاول من الصباح الى الان

الكود والله عقدني ساعدوني

if($_POST['R']=="V1")
{
				$host="localhost"; // Host name 
   				$username=""; // Mysql username 
				  $password=""; // Mysql password 
				  $db_name="Information System Website"; // Database name 
				  $tbl_name="teachers"; // Table name 
				// Connect to server and select databse.
				  $con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
 				mysql_select_db("$db_name")or die("cannot select DB");
				echo"<table border=5 width=800  dir=rtl cellpadding=9>";
					echo "</th><th bgcolor=#800000 width=350 align=right> اسم عضو التدريس</th><th bgcolor=#800000 width=100 align=center>الدرجة العلميه<th bgcolor=#800000 width=100 align=center>التخصص العام<th bgcolor=#800000 width=100 align=center>جامعة التخرج</th><th bgcolor=#800000 width=100 align=center>الجنسية</tr>";
				$sql ='SELECT * FROM teachers ORDER BY `tename` DESC LIMIT 0, 10 ';
				$result=mysql_query($sql);
				while($row=mysql_fetch_array($result))
				{
				echo"<tr><th width=400 bgcolor=#D7C1AA  align=right><b>";
				echo $row['tename'];
				echo"</th><th width=200 bgcolor=#D7C1AA  align=center><b>";
				echo $row['qualif'];
				echo"</th><th width=200 bgcolor=#D7C1AA  align=center><b>";
				echo $row['gspec'];
				echo"</th><th width=200 bgcolor=#D7C1AA  align=center><b>";
				echo $row['gradplace'];
				echo"</th><th width=200 bgcolor=#D7C1AA  align=center><b>";
				switch($row['nat'])
				{
					case 1:echo "يمني";
					break;
					case 2:echo "سعودي";
					break;
					case 3:echo "عراقي";
					break;
				}
				echo"</th></tr>";
		}
		mysql_close($con);
}


elseif($_POST['R']=="V2")
{
			$db=mysql_connect("localhost","root");
			if (!$db)
			{
			echo "Cannot Connect";
			exit;
			}
			mysql_select_db("information system website",$db);
			$teacher=$_POST['menu1'];
			echo $teacher;
 			$res=mysql_query("SELECT * FROM teacher WHERE 'tename'=$teacher");
 			while($row=mysql_fetch_array($res))
				{
				echo"<tr><th width=400 bgcolor=#D7C1AA width=300 align=right><b>";
				echo $row['tename'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				echo $row['qualif'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				echo $row['gspec'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				echo $row['gradplace'];
				echo"</th><th width=200 bgcolor=#D7C1AA width=200 align=center><b>";
				switch($row['nat'])
				{
					case 1:echo "يمني";
					break;
					case 2:echo "سعودي";
					break;
					case 3:echo "عراقي";
					break;
					Default:
					Echo "   ";
				}
				echo"</th></tr>";
				}
				mysql_close();
		}
#6

هناك اثنين mysql_fetch_array في المثال السابق , هل الاولى تعمل و الثانية لا ؟

قومي برفع كل البرنامج + قاعده البيانات ..

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#7

استاذ محمد معاشر قمت برفع البرنامج و قاعدة البيانات

my_sample_site.rar

#8

واضح ان ألياس أثر عليك اختي :rolleyes: ..

هناك مشكلتين في الملف الاساسي لديك وهوallteachers.php . المشكله الاولى هي خطأ كان يجب ان لاتقعي فيه بتاتاً وهواسم الجدول في الاستعلام :

$res=mysql_query("SELECT * FROM teacher WHERE 'tename'=$teacher");

مذكور في الاستعلام teacher , بينما في الاصل الجدول هو teachers في قاعدة البيانات . طبعاً هذا ليس الخطأ الجوهري .

الخطأ الجوهري مخفي نوعاً ما , وهو بسبب مشكله الترميز . اذا جربتي ان تستخدمي اللغة الانجليزيه في بيانات الجدول teachers بدلاً من العربيه طبعاً مع تعديل مايلزم في teachers.php , سوف يعمل السكربت (طبعاً بعد تعديل اسم الجدول في الاستعلام) ..

ولكن بسبب ان الترميز المستخدم هوWindows 1256 و ليس UTF8 , فإن تنفيذ mysql_query سوف يقود الى خطأ وذلك لان لاختلاف تراميز character_set_client و character_set_connection في الـ MySQL (للمراجــعه) . لحل هذه المشكله هنا طريقتين , الاولى هي تنفيذ السطر التالي قبل عمل الاستعلام :

mysql_query("set NAMES cp1256");

فهذا سوف يجعل ترميز character_set_client و character_set_results و character_set_connection للـ MySQL هو الترميز Windows 1256 .

الحل الثاني والافضل , هو حل المشكله من جذورها واستخدام UTF8 بدلاً من Windows 1256 ..

عموماً , ارفقت الملف allteachers.php , بعد عمل التعديلات اللازمه .

مشروع جيد , وبالتوفيق ..

allteachers.zip

تم تعديل هذه المشاركة بواسطة محمد معاشر في 31 يوليو 2008 في 13:44

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#9

السلام عليكم

انا مش عارفة اشكرك استاذي محمد معاشر

الموقع تطبق فعلاً وفي حاجات كثيره اطبقت

والسبب مشكلة الترميز

ولينك للمراجعة افادني كثير

ودرس مش حنساه ابدا ما حييت

اقتباس
في الملف الاساسي لديك وهوallteachers.php . المشكله الاولى هي خطأ كان يجب ان لاتقعي فيه بتاتاً وهواسم الجدول في الاستعلام

خطأ فادح وقعت فيه :blush: ومحرج جدا جدا

مرة ثانية اشكرك استاذ محمد

مواضيع مشابهة