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

كيف استعلام من جدولين

بدأه man in dark في 25 يوليو 2011 · 14 رد · 1,323 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد التحديد من جدولين ولكن المشكله في نقطه التحقق من التساوي

الاستعلام

$query = "SELECT messages.*, mkmessages.*
FROM messages, mkmessages
	WHERE messages.center = '882'";
$result = mysql_query($query) or die(mysql_error());

ولكن المشكله من السطر التساوي حقل messages.center لابد ان يساوي 882 لايتحقق يظهر لي جميع البيانات يساوي 882 او لايساوي الرقم

كود كامل

$query = "SELECT messages.*, mkmessages.*
FROM messages, mkmessages
	WHERE messages.center = '882'";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){

echo $row['name']." - ".$row['age']" - ".$row['center'];
#2

ما هي العلاقة بين الجدولين؟

#3

لعلاقة بين الجدولين حقل idnumer في كلا الجدولين

#4

يجب أن تحدد هذه العلاقة في الإستعلام.

جرب التالي

SELECT m.*, mk.*  
FROM messages m INNER JOIN mkmessages mk ON m.idnumer=mk.idnumer
WHERE m.center = '882'

تم تعديل هذه المشاركة بواسطة herch في 25 يوليو 2011 في 13:50

1
#5

ماشاء الله تبارك الله مبدع اخي herch

والف الف شكر....

#6

اخي herch

الكود كان 100% ولكن الان يظهر لي تكرار في نتائج الاستعلام

الكود كامل

<?php
include('config.php');
$query = "SELECT messages.*, mkmessages.*  
FROM messages INNER JOIN mkmessages  ON messages.idnumber=mkmessages.idemplo
WHERE messages.center ='7'  AND mkmessages.center='7'";
$result = mysql_query($query) or die(mysql_error());


?>


<?php
while($rows= mysql_fetch_array($result)){
?>

<p><?php echo $rows['notauser'];?></p>

<?php echo $rows['idnumber'];?></h2></div>



<p><?php echo nl2br($rows['notausermk']);?>
<h2><?php echo $rows['idnumbermk'];?></h2></div>

			</p>
<?php }  ?>

تم تعديل هذه المشاركة بواسطة man in dark في 31 يوليو 2011 في 17:03

#7

يبدو لي أن الجدولين يحتويان على نفس البيانات. إذا كان هذا صحيح فيجب أن تعيد النظر في بنية قاعدة البيانات

على العموم جرب التالي

$query = "SELECT messages.*, mkmessages.*  
FROM messages INNER JOIN mkmessages  ON (messages.idnumber=mkmessages.idemplo AND messages.center=mkmessages.center)
WHERE messages.center ='7'";
#8

الجدولين يحتويان على البيانات مختلفه جدا

ونفس المشكله

ادخلت في الجدول notausermk

محمد 1

محمد 2

محمد 3

ادخلت في الجدول notauser

احمد 1

احمد 2

احمد 3

وهذا الناتج

post-131439-018879900 1312125292_thumb.j

الكود كامل بعد التعديل

<?php
include('config.php');


$query = "SELECT messages.*, mkmessages.*  
FROM messages INNER JOIN mkmessages  ON (messages.idnumber=mkmessages.idemplo AND messages.center=mkmessages.center)
WHERE messages.center ='7'";
$result = mysql_query($query) or die(mysql_error());


?>



<table border="1" width="60%">
	<tr>
		<td><font color="#FF0000" size="5">notauser</font></td>
		<td><font size="5">notausermk</font></td>
	</tr>
<?php
while($rows= mysql_fetch_array($result)){
?>
	<tr>
		<td><font color="#FF0000" size="5"><?php echo $rows['notauser'];?></font></td>
		<td><font size="5"><?php echo nl2br($rows['notausermk']);?></font></td>
	</tr>


<?php }  ?>
</table>
المرفقات
1.JPG

تم تعديل هذه المشاركة بواسطة man in dark في 31 يوليو 2011 في 18:15

#9

ممكن ترفع الجدولين، لأني لم أفهم الشكل جيدا

#10

رفعت صورة لك لنتائج الاستعلام في المشاركه السابقه

#11

أظن أن الناتج صحيح، مثلا "أحمد 1" مرتبط ب "محمد 1" و "محمد 2" و "محمد 3، وبالتالي سيظهر ثلاث مرات.

كيف تريد أن تظهر النتائج؟

أيضا لا يمكنني المساعدة كثيرا بدون الجدولين

#12

من المفترض ان يظهر لي الجدول هكذا بدون تكرار

post-131439-039660400 1312149571_thumb.j

يعني في البدايه الاستعلام يظهر الاسم الذي في جدول messages في الحقلnotauser

م يذهب ويظهر الاسم الذي في الجدول mkmessages في الحقل notausermk ومن ثم يعيد ذلك حتى يظهر جميع البيانات

ملف sql لجدول messages

-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- http://www.phpmyadmin.net
-- 
-- المزود: localhost
-- أنشئ في: 01 أغسطس 2011 الساعة 00:50
-- إصدارة المزود: 5.0.22
--  PHP إصدارة: 4.4.4
-- 
-- قاعدة البيانات: `test`
-- 

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

-- 
-- بنية الجدول `messages`
-- 

CREATE TABLE `messages` (
  `id` int(4) NOT NULL auto_increment,
  `idnumber` varchar(10) NOT NULL,
  `name` varchar(50) NOT NULL,
  `center` varchar(10) NOT NULL,
  `datatime` varchar(50) NOT NULL,
  `notauser` longtext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=5 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `messages`
-- 

INSERT INTO `messages` (`id`, `idnumber`, `name`, `center`, `datatime`, `notauser`) VALUES 
(1, '9999', 'خالد العتيبي', '7', '11/07/2011', 'احمد 1'),
(2, '9999', 'خالد العتيبي', '7', '1311591140', 'احمد 2'),
(3, '9999', 'خالد العتيبي', '7', '11/7/2011', 'احمد 3');

ملف sql لجدول mkmessages

-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- http://www.phpmyadmin.net
-- 
-- المزود: localhost
-- أنشئ في: 01 أغسطس 2011 الساعة 00:50
-- إصدارة المزود: 5.0.22
--  PHP إصدارة: 4.4.4
-- 
-- قاعدة البيانات: `test`
-- 

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

-- 
-- بنية الجدول `mkmessages`
-- 

CREATE TABLE `mkmessages` (
  `id` int(4) NOT NULL auto_increment,
  `idnumbermk` varchar(10) NOT NULL,
  `name` varchar(50) NOT NULL,
  `center` varchar(10) NOT NULL,
  `idemplo` varchar(10) NOT NULL,
  `datatime` varchar(50) NOT NULL,
  `notausermk` longtext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=5 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `mkmessages`
-- 

INSERT INTO `mkmessages` (`id`, `idnumbermk`, `name`, `center`, `idemplo`, `datatime`, `notausermk`) VALUES 
(1, '11111', 'خالد', '7', '9999', '10/7/2011', 'محمد 1'),
(2, '22222', 'محمد', '6', '768796', '10/7/2011', 'سامي'),
(3, '11111', 'خالد', '7', '9999', '25/7/2011', 'محمد 2'),
(4, '11111', 'خالد', '7', '9999', '11/7/2011', 'محمد 3');
المرفقات
2.JPG
#13

لا يمكن الحصول على النتيجة التي تريد، يكفي أن تنظر إلى بياناتك. مثلا في الجدول messages، لديك center = 7 و idnumber = 9999، وفي الجدول mkmessages يوجد 3 أسطر لديها نفس هذه القيم، وبالتالي عند الربط بين الجدولين ستحصل على تكرار.

إما أن هناك مشكل في البيانات، أو جرب استرجاع البيانات من كل جدول على حدة.

#14

اخي herch

الغرض من الكود ان كل مستخدم يدخل الى الموقع يقوم بوضع سؤال

و السؤال راح يكون في الجدول وامامه الجواب بس انظر الى الصورة

post-131439-040997300 1312193006_thumb.j

انا اريد ان اعرف كيف اعدل على الكود ليظهر لي النتيجه صحيحه

المرفقات
1.JPG
#15

الله يعطيك العافيه تم تغيير الجدول والكود والان الكود 100%

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