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

استخراج البيانات من الداتا بيس وربطها بجدول اخر

بدأه حجازي في 22 نوفمبر 2011 · 6 رد · 769 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

استفسار:

لدي جدول باسم play وبهد حقل catid

ويوجد جدول اخر باسم cat وبه حقل catid وحقل catname

عملت استعلام من خلال جدول play

المطلوب : اريد عند الاستعلام بدلا من ان يظهر البيانات الموجودة في حقل catid من جدول play اريده ان يظهر البيانات الموجودة في حقل catname من جدول cat يعني إذا كانت النتجية مثل عند الاستعلام في حقل catid من جدول play رقم 14 يروح يشوف في جدول cat في حقل catid متطابق يظهر الموجود في catname

مثال: نفترض لدي في جدول play في حقل catid قيمة 14 وهذي القيمة في جدول cat في حقل catid نفسها ومقابلها في حقل catname قيمة " القران الكريم" .

أريد أن يظهر كلمة القران الكريم بدلا من رقم catid

#2

تستطيع ذلك عن طريق Join في جملة SELECT

مثال :

$catid = 1;

	$query = mysql_query("SELECT c.catname FROM play p JOIN cat c ON (p.catid  = c.catid) WHERE p.catid = '$catid' ");
	$row = mysql_fetch_array($query);
	echo $row['catname'].'<br />';

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#3

ما ضبط معاي اخوي

مرفق لك الكود كاملا

<?php

	include("config.php");

	$data = $_POST['data'];

	$query = mysql_query("SELECT * FROM play WHERE data = '$data'");
	echo '<table align="center" width="80%" border="0" border=\"1\" cellpadding=\"3\" cellspacing=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#C0C0C0\" id=\"AutoNumber1\">
				<tr>';
	 while($row = mysql_fetch_array($query))
	{
		echo ' 
	<table border="1" width="80%" bordercolorlight="#BCD8FE" bordercolordark="#8CBCFD" bgcolor="#B0FFDA" bordercolor="#C7DFFE" id="table1">
		<tr>
			<td width="79%" align="right" bgcolor="#E4E4E4">
			<p align="center"><b>عنوان الخبر</b></td>
			<td width="19%" align="right" bgcolor="#E4E4E4">
			<p align="center"><b>التاريخ</b></td>
		</tr>
		<tr>
			<td width="79%" align="right">
			<p align="center">'.$row['name'].'</td>
			<td width="19%" align="right" bgcolor="#E4E4E4">
			<p align="center">'.$row['data'].'</td>
		</tr>
		<tr>
			<td align="right">'.$row['comm'].'</td>
			<td align="right" bgcolor="#E4E4E4">
			<p align="center"><b>نص الخبر</b></td>
		</tr>
		<tr>
			<td align="right" colspan="2" bgcolor="#000000" height="3"> </td>
		</tr>
	</table>
	';



	}
	$num = mysql_num_rows($query);
	if($num < 1)
	{
		echo '<td>لا توجد بيانات</td>';
	}
	echo '</tr></table>';


?>

تم تعديل هذه المشاركة بواسطة حجازي في 22 نوفمبر 2011 في 18:18

#4

استفسارك في وادي والكود الذي وضعته في وادي ثاني

اتت ذكرت حقل catname و حقل catid ما اشوفك استخدمتهم في الكود

عموما ً استبدل c.catname بعلامة النجمة * حتى يتم تحديد جميع الصفوف

ستصبح جملة SELECT هكذا

SELECT * FROM play p JOIN cat c ON (p.catid  = c.catid) WHERE p.data = '$data'

والكود تبعك سيصبح هكذا

<?php

        include("config.php");

        $data = $_POST['data'];

        $query = mysql_query("SELECT * FROM play p JOIN cat c ON (p.catid  = c.catid) WHERE p.data = '$data'");
        echo '<table align="center" width="80%" border="0" border=\"1\" cellpadding=\"3\" cellspacing=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#C0C0C0\" id=\"AutoNumber1\">
                                <tr>';
         while($row = mysql_fetch_array($query))
        {
                echo ' 
        <table border="1" width="80%" bordercolorlight="#BCD8FE" bordercolordark="#8CBCFD" bgcolor="#B0FFDA" bordercolor="#C7DFFE" id="table1">
                <tr>
                        <td width="79%" align="right" bgcolor="#E4E4E4">
                        <p align="center"><b>عنوان الخبر</b></td>
                        <td width="19%" align="right" bgcolor="#E4E4E4">
                        <p align="center"><b>التاريخ</b></td>
                </tr>
                <tr>
                        <td width="79%" align="right">
                        <p align="center">'.$row['name'].'</td>
                        <td width="19%" align="right" bgcolor="#E4E4E4">
                        <p align="center">'.$row['data'].'</td>
                </tr>
                <tr>
                        <td align="right">'.$row['comm'].'</td>
                        <td align="right" bgcolor="#E4E4E4">
                        <p align="center"><b>نص الخبر</b></td>
                </tr>
                <tr>
                        <td align="right" colspan="2" bgcolor="#000000" height="3"> </td>
                </tr>
        </table>
        ';



        }
        $num = mysql_num_rows($query);
        if($num < 1)
        {
                echo '<td>لا توجد بيانات</td>';
        }
        echo '</tr></table>';


?>

لا تقم بنسخ لصق الكود عدله حسب البرنامج لديك

الكود بهذه الطريقة يفترض ان يكون هناك فعلا ً جدول اسمه play وجدول اسمه cat

وحقل مشترك بينهم اسمه catid

اذا حدثت معك مشكلة ضع رسالة الخطأ التي تظهر لديك

1

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#5

عزيزي شكرا لك

ظهرت مشكلة وهي :

حقل .$row['comm']

نص الخبر لا يظهر

علماً بأن الحقل comm يوجد في جدولين :

play

cat

انا اريد ان يظهر النتائج الخاصة بحقل comm

من جدول play

علماً أنه باستخدام :

	$query = mysql_query("SELECT * FROM play WHERE data = '$data'");

تظهر البيانات الموجودة في حقل comm من جدول play

اما بعد تعديل الكود إلى :

        $query = mysql_query("SELECT * FROM play p JOIN cat c ON (p.catid  = c.catid) WHERE p.data = '$data'");

ظهر catname لكن اختفى comm

علماً بأن الحقل comm موجود في الجدولين play و cat

انا اريد ان يظهر النتيجة اللي في جدول play هذا بالنسبة لحقل comm

تم تعديل هذه المشاركة بواسطة حجازي في 26 نوفمبر 2011 في 12:38

#6

اذن عليك ان تحدد ماهي الحقول التي تريد استخراجها في الاستعلام

بحيث يصبح الاستعلام هكذا

"SELECT p.comm,c.catname  FROM play p JOIN cat c ON (p.catid  = c.catid) WHERE p.data = '$data'"

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#7

جاري التجربة

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…