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

الاستعلام من جدولين MySQL

Flutter Dev

السؤال

السلام عليكم ورحمة الله وبركاته 

تحيه طيبه للجميع 

قمت بتطوير تطبيق من خلال flutter  التطبيق يسمح للمستخدمين القيام بنشر مواضيع عربيه مختلفه وكل موضوع يحتوي على مجموعة صور 4 صور بتحديد

في المقابل عملت جدولين في قاعدة البيانات 

الاول لحفظ المواضيع كالتالي:

topic table : 

--------------------------------------------------------------
id | subject_id | user_id | title
---------------------------------------------------------------
1  | 1          | 1       | مرحبا لدى عدة اسئله على هذا الموضوع
---------------------------------------------------------------
2  | 1          | 2       | مرحبا اخى الكريم هل لديك وقت كافى  

وثاني لحفظ صور المواضيع (تم ربطه لدى الجدول الاولى من خلال id  المواضيع )

Image table : 

--------------------------------------------------------------
id |  subject_id | imageUrl
---------------------------------------------------------------
1  |    1        | ************************
---------------------------------------------------------------
2  |    2        | ************************ 

 

المشكله الان كل موضع مثلا يمتلك 4 صور مختلفه في جدول الصور وموضع واحد في جدول المواضيع / الان انا احتاج الى جلب الموضع مع صوره واحده فقط حتى لا يحدث تكرار للمواضيع واحصل على نفس الموضوع 4 مرات اعتمادنا على عدد الصور 

 

قمت بعمل الاستعلام التالي ولكن ما حدث انه قام بجلب المواضيع بشكل متكرر بحسب عدد الصور يعني كل موضوع تكرر لدي اربع مرات وهذا الامر ليس صحيحا انا احتاج الى ان يتم جلب الموضوع لمره واحده فقط وليكون مرتبط ب اعلى id صور متواجد :

<?php

include 'con.php';


$sql = "SELECT * FROM topic INNER JOIN Image ON topic.subject_id=Image.subject_id WHERE topic.sta = 1 AND topics.Country = 'EG'" ;



$result = $con->query($sql);


$stmt = $con->prepare($sql); 



$stmt->execute();

$result = $stmt->get_result();



 
if ($result->num_rows >0) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
 // http_response_code(404);
    $json = json_encode(["result" => "No Data Foun"]);
}
 echo $json;
$con->close();

?>

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

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

Recommended Posts

  • 1

يمكنك تنفيذ الاستعلام الأول ومن ثم بداخل حلقة التكرار تنفيذ الاستعلام الثاني بناء على id من الاستعلام الأول لكل موضوع سأقوم بوضع مثال ربما يساعدك. 

$query = "SELECT p.id, p.name FROM product p WHERE p.product_id ='".$_GET['product_id']."'";
$resouter = mysqli_query($connect, $query);

$set = array();
$total_records = mysqli_num_rows($resouter);
if($total_records >= 1) {
	while ($link = mysqli_fetch_array($resouter, MYSQLI_ASSOC)){
		$set = $link;
	}
  $set1 = [];
  $q="select img,id from album where id = " . $set['id'];
  $results = mysqli_query($connect, $q);
  while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
      $set1[] = $row['img_url'];
  }
  $set['album'] = $set1;

}


header('Content-Type: application/json; charset=utf-8');
echo $val = str_replace('\\/', '/', json_encode($set));

 

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

  • 0
بتاريخ 12 دقائق مضت قال بلال زيادة:

يمكنك تنفيذ الاستعلام الأول ومن ثم بداخل حلقة التكرار تنفيذ الاستعلام الثاني بناء على id من الاستعلام الأول لكل موضوع سأقوم بوضع مثال ربما يساعدك. 


$query = "SELECT p.id, p.name FROM product p WHERE p.product_id ='".$_GET['product_id']."'";
$resouter = mysqli_query($connect, $query);

$set = array();
$total_records = mysqli_num_rows($resouter);
if($total_records >= 1) {
	while ($link = mysqli_fetch_array($resouter, MYSQLI_ASSOC)){
		$set = $link;
	}
  $set1 = [];
  $q="select img,id from album where id = " . $set['id'];
  $results = mysqli_query($connect, $q);
  while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
      $set1[] = $row['img_url'];
  }
  $set['album'] = $set1;

}


header('Content-Type: application/json; charset=utf-8');
echo $val = str_replace('\\/', '/', json_encode($set));

 

اهلا بك اخي الكريم ساقوم بتجربة الطريقة وافادتك

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

  • 0
بتاريخ 25 دقائق مضت قال مروان مروان3:

اهلا بك اخي الكريم ساقوم بتجربة الطريقة وافادتك

ايضا يمكنك تجربة وضع [] في السطر التالي إذا كان الاستعلام الأول لجلب جميع الحقول وليس حقل محدد حسب id الخاص به

$set[] = $link;

 

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

  • 0
بتاريخ 7 ساعات قال بلال زيادة:

ايضا يمكنك تجربة وضع [] في السطر التالي إذا كان الاستعلام الأول لجلب جميع الحقول وليس حقل محدد حسب id الخاص به


$set[] = $link;

 

هلا بيك اخي

قمت بتجربه هو اعطاني مصفوفه جديده بالاسم الذي ننشاه ولكن المشكله انه ايضا جلب ال 4 صور المرتبطه بالموضوع 

لدي فكره مختلفه ولكن لا اعلم مدى نجاحها ولكن قد يكون من الاسهل اضافة حقل فريد اضافي في جدول الصور 

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

 

شاكر لك اخي الكريم

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

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

هلا بيك اخي

قمت بتجربه هو اعطاني مصفوفه جديده بالاسم الذي ننشاه ولكن المشكله انه ايضا جلب ال 4 صور المرتبطه بالموضوع 

لدي فكره مختلفه ولكن لا اعلم مدى نجاحها ولكن قد يكون من الاسهل اضافة حقل فريد اضافي في جدول الصور 

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

 

شاكر لك اخي الكريم

ممكن تطبيق فكرتك ، ايضا يبدو انك اخطأت في تنفيذ الطريقة المذكورة ، قم بتطبيق الفكرة التي لديك ثم شارك معي أي خطأ يظهر لك.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...