اذهب إلى المحتوى
  • 0

مشكلة في الاستعلام بين جدولين مربوطين في MYSQL باستخدام PHP

عبد القدوس النويرة

السؤال

احتاج مساعدة بلغة php عندي جدولين الاول test ويحتوي على id الفحص واسم الفحص والثاني result ويحتوي على id النتيجة و id المريض و id الفحص والنتيجة واريد الاستعلام عن اسماء الفحوصات من جدول test ولاكن يظهر لي اسم الفحص الاول فقط بالرغم من وجود حلقة wile

ارجو المساعدي لدي مشروع تخرج

تم التعديل في بواسطة Hassan Hedr
توضيح العنوان
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 2 ساعات قال عبد القدوس النويرة:

احتاج مساعدة بلغة php عندي جدولين الاول test ويحتوي على id الفحص واسم الفحص والثاني result ويحتوي على id النتيجة و id المريض و id الفحص والنتيجة واريد الاستعلام عن اسماء الفحوصات من جدول test ولاكن يظهر لي اسم الفحص الاول فقط بالرغم من وجود حلقة wile

ارجو المساعدي لدي مشروع تخرج

62bb5ae6cdd4b_2.PNG.b8b335aef0ce232fe62fd9688afc2b0f.PNG62bb5afcdf069_.PNG.1c6358c911bb536a202c92849ce192d0.PNG62bb5aba9ec53_.PNG.8371efcf5634a0238ecc17cd87f0727f.PNG62bb5aa17d426_.thumb.PNG.923e6f4cc029ee414b393b5c93d701fc.PNG

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 24 دقائق مضت قال Hassan Hedr:

يرجى تبديل صورة الشيفرة بالشيفرة نفسها بشكل نصي عند طرح أي سؤال 

 

الشيفرة تطلع مقلوبة

<?php
$s=mysql_query("select * from hospital where  id=$row[hid]");
while($ro=mysql_fetch_array($s))
{
?> 
                                         
<td class="center"><?php echo $ro['hosname']; }?></td>
<?php
$s=mysql_query("select * from clinec where  id=$row[cid]");
while($ro=mysql_fetch_array($s))
{
?>
                                          
<td class="center"><?php echo $ro['Cname']; }?></td>

<?php
                               $ret=mysql_query("select * from testt where id=$row[tid]");

while ($re=mysql_fetch_array($ret)) {
                               ?>
                                          
<td><?php echo $re['testname'];}?></td>
 <td><form action="" method="post">

                              
<input type="text" value="<?php echo $re['result']; ?>" name="testname" class="form-control wd-450" >
<?php
                               $ret=mysql_query("select * from testt where id=$row[tid]");

while ($re=mysql_fetch_array($ret)) {
                               ?>
     <button type="submit" value="<?php echo $re['id']; }?>" name="submitt" class="btn btn-primary"> حفظ</button> 
<form></td/>

 </tr>
 
<?php  }?>

 

تم التعديل في بواسطة Hassan Hedr
تنسيق الشيفرة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال عبد القدوس النويرة:

 

الشيفرة تطلع مقلوبة


<?php
$s=mysql_query("select * from hospital where  id=$row[hid]");
while($ro=mysql_fetch_array($s))
{
?> 
                                         
<td class="center"><?php echo $ro['hosname']; }?></td>
<?php
$s=mysql_query("select * from clinec where  id=$row[cid]");
while($ro=mysql_fetch_array($s))
{
?>
                                          
<td class="center"><?php echo $ro['Cname']; }?></td>

<?php
                               $ret=mysql_query("select * from testt where id=$row[tid]");

while ($re=mysql_fetch_array($ret)) {
                               ?>
                                          
<td><?php echo $re['testname'];}?></td>
 <td><form action="" method="post">

                              
<input type="text" value="<?php echo $re['result']; ?>" name="testname" class="form-control wd-450" >
<?php
                               $ret=mysql_query("select * from testt where id=$row[tid]");

while ($re=mysql_fetch_array($ret)) {
                               ?>
     <button type="submit" value="<?php echo $re['id']; }?>" name="submitt" class="btn btn-primary"> حفظ</button> 
<form></td/>

 </tr>
 
<?php  }?>

 

يجب جلب الفحوصات عن طريق مطابقة مُعرّف id المريض مع الحقل cid من جدول الفحوصات وليس مع مُعرّف الفحص نفسه، ليصبح الاستعلام كالتالي: 

SELECT * FROM testt WHERE cid=$row[tid]
                          ^^^

يمكنك الاستفادة من قراءة المقال التالي:

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال عبد القدوس النويرة:

 

الشيفرة تطلع مقلوبة


<?php
$s=mysql_query("select * from hospital where  id=$row[hid]");
while($ro=mysql_fetch_array($s))
{
?> 
                                         
<td class="center"><?php echo $ro['hosname']; }?></td>
<?php
$s=mysql_query("select * from clinec where  id=$row[cid]");
while($ro=mysql_fetch_array($s))
{
?>
                                          
<td class="center"><?php echo $ro['Cname']; }?></td>

<?php
                               $ret=mysql_query("select * from testt where id=$row[tid]");

while ($re=mysql_fetch_array($ret)) {
                               ?>
                                          
<td><?php echo $re['testname'];}?></td>
 <td><form action="" method="post">

                              
<input type="text" value="<?php echo $re['result']; ?>" name="testname" class="form-control wd-450" >
<?php
                               $ret=mysql_query("select * from testt where id=$row[tid]");

while ($re=mysql_fetch_array($ret)) {
                               ?>
     <button type="submit" value="<?php echo $re['id']; }?>" name="submitt" class="btn btn-primary"> حفظ</button> 
<form></td/>

 </tr>
 
<?php  }?>

 

الان هو يحفظ ال id الخاص بالفحص ولاكن اريد وقت الاستعلام يظهر الاسم وليس الرقم والاسم في جدول آخر ولا يظهر لي حقول ادخال بعدد الفحوص الي في قاعدة البيانات

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال عبد القدوس النويرة:

الان هو يحفظ ال id الخاص بالفحص ولاكن اريد وقت الاستعلام يظهر الاسم وليس الرقم والاسم في جدول آخر ولا يظهر لي حقول ادخال بعدد الفحوص الي في قاعدة البيانات

يرجى توضيح استفسارك أكثر، هل يمكنك توفير مثال على نتيجة خاطئة والنتيجة المرغوبة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 دقائق مضت قال Hassan Hedr:

يرجى توضيح استفسارك أكثر، هل يمكنك توفير مثال على نتيجة خاطئة والنتيجة المرغوبة

 

شوف اساسا المفروض يظهر لدي اربعة حقول ادخال وليس حقل واحد لان لدي في قاعدة البيانات اربعة فحوصات لا يظهر الا الحقل الي يتبع اول فحص فقط

 

62bb6f4381e70_.PNG.7e82de8b437736659dc6a9ce281838cd.PNG

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال عبد القدوس النويرة:

شوف اساسا المفروض يظهر لدي اربعة حقول ادخال وليس حقل واحد لان لدي في قاعدة البيانات اربعة فحوصات لا يظهر الا الحقل الي يتبع اول فحص فقط

هل بدلت استعلام جلب الفحوصات بالاستعلام الذي ذكرته لك قبلًا؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 دقائق مضت قال Hassan Hedr:

هل بدلت استعلام جلب الفحوصات بالاستعلام الذي ذكرته لك قبلًا؟

يا عزيزي بس ال cid هو المعرف الخاص بالعيادات وليس معرف المريض وانا اريد اسم الفحص من هذا الجدول62bb72bab172b_.PNG.36dfd5e2bc203d6315242b34fe30e2f0.PNG

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال عبد القدوس النويرة:

يا عزيزي بس ال cid هو المعرف الخاص بالعيادات وليس معرف المريض وانا اريد اسم الفحص من هذا الجدول

إذًا لا يوجد لديك ربط بين جدول الفحوصات وجدول المرضى، يجب أن يحوي جدول الفحوصات على حقل يمثل معرف المريض الذي يتبع له، مثلًا pid، ولجلب الفحوصات الخاصة بمريض معين يمكنك الاستعلام وفق شرط أن يكون pid في جدول الفحوصات يساوي معرف المريض الذي تحاول عرض فحوصاته: 

SELECT * FROM testt WHERE pid=$row["pid"]
                              ^^^^^^^^^^^
                              معرف المريض

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 8 دقائق مضت قال Hassan Hedr:

إذًا لا يوجد لديك ربط بين جدول الفحوصات وجدول المرضى، يجب أن يحوي جدول الفحوصات على حقل يمثل معرف المريض الذي يتبع له، مثلًا pid، ولجلب الفحوصات الخاصة بمريض معين يمكنك الاستعلام وفق شرط أن يكون pid في جدول الفحوصات يساوي معرف المريض الذي تحاول عرض فحوصاته: 


SELECT * FROM testt WHERE pid=$row["pid"]
                              ^^^^^^^^^^^
                              معرف المريض

 

يا عزيزي اذا كان لا يوجد ربط بين الجداول لماذا يظهر لي اسم اول فحص المشكلة ليست في الربط وانما في حلقة التكرار while المشكله فيها فهي لا تمر على جميع الصفوف تظهر بيانات الصف الاول فقط

بتاريخ 11 دقائق مضت قال Hassan Hedr:

إذًا لا يوجد لديك ربط بين جدول الفحوصات وجدول المرضى، يجب أن يحوي جدول الفحوصات على حقل يمثل معرف المريض الذي يتبع له، مثلًا pid، ولجلب الفحوصات الخاصة بمريض معين يمكنك الاستعلام وفق شرط أن يكون pid في جدول الفحوصات يساوي معرف المريض الذي تحاول عرض فحوصاته: 


SELECT * FROM testt WHERE pid=$row["pid"]
                              ^^^^^^^^^^^
                              معرف المريض

 

انا استعلم من جدول testt بشرط ان ال id في هذا الجدول يساوي ال tid في الجدول الآخر وهو المعرف الخاص بالفحص

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال عبد القدوس النويرة:

يا عزيزي اذا كان لا يوجد ربط بين الجداول لماذا يظهر لي اسم اول فحص المشكلة ليست في الربط وانما في حلقة التكرار while المشكله فيها فهي لا تمر على جميع الصفوف تظهر بيانات الصف الاول فقط

انا استعلم من جدول testt بشرط ان ال id في هذا الجدول يساوي ال tid في الجدول الآخر وهو المعرف الخاص بالفحص

طبيعة العلاقة بين الجدولين التي تطلبها هي وجود عدة فحوصات لكل مريض، في هذه الحالة يجب إما أن يكون هناك حقل مفتاح ثانوي في جدول الفحوصات يشير إلى المريض صاحب ذلك الفحص،

في تصميمك يمكنك استخدام الاستعلام الفرعي لجلب كل الفحوصات للمريض الحالي ضمن جدول الربط لديك:

SELECT * FROM testt WHERE id IN (
  SELECT * FROM result WHERE pid=$row["pid"]
}

المشكلة لديك في تصميم الجداول، يجب أولًا تحديد العلاقات بين المفاهيم ضمن المشروع (مريض - فحص - عيادة ...)، ثم على أساسها نصمم جداول تكون أسهل في الاستعلام، أنصحك بقراءة المقال المذكور مسبقًا والكتاب التالي:  

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...