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

كيفية تقسيم الروابط بعد استعمال GROUP_CONCAT php MySQL

Flutter Dev

السؤال

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

قمت باستعمال GROUP_CONCAT  لدمج البيانات المتشابها بين جدولين مع استعمال LEFT JOIN لتوضيح الفكرة مرفق تصميم الجداول قبل وبعد كالتالي :

قبل استعمال GROUP_CONCAT:

Output:
+-----------+--------+----------+-----------+
|id| name   | Cmpany | POSTID   |ImageTopic |
|1 | John   |  Js    |  1       |1png       |
|1 | John   |  Js    |  1       |2png       |
|1 | John   |  Js    |  1       |3png       |
|1 | John   |  Js    |  1       |4png       |
+-----------+--------+----------+-----------+

 

بعد استعمال GROUP_CONCAT

Output:
+---+------+-----------+--------+------------------------+
|id | name |    Cmpany | POSTID |   ImageTopic           |
|1  | John |      Js   |  1     |   1png,2png,3png,4png  |
+---+------+-----------+--------+------------------------+

 

مشكلتي الان مع عمود (Image Topic) قمت بالحصول على الأربع صور المرتبطة بنفس الشخص ولكن لا يمكن قراءة الصور بشكل هذا او حتى الضغط عليهم 

احصل عليهم كالتالي:

ImageTopic: "https://png.pngtree.com/element_our/20200703/ourlarge/pngtree-butterfly-purple-red-wings-ink-transparent-png-bright-image_2300442.jpg,https://www.picng.com/upload/butterfly/png_butterfly_61701.png,https://www.picng.com/upload/butterfly/png_butterfly_61701.pnghttps://www.picng.com/upload/butterfly/png_butterfly_61700.png"

 

أيضا صوره لتوضيح المشكلة اضافيه 

GgOs2.thumb.png.035b4fd33e9d64c6221d2d64cb87478a.png

 

ولو حاولت الضغط عليهم يتم الضغط بشكل مدموج واحصل على الخطاء التالي:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>JF8C24VHE7Z9NKAC</RequestId>
<HostId>+yKClkshmm8kCqYydoRsaPDwjkkM+anF0vQI6nt0eTY6TvCuQ5QDv7hfq//eTxUJ9ApNMNWpPfc=</HostId>
</Error>

 

الكود المستعمل كالتالي:

<?php
require_once 'con.php';

$id=$_GET['id'];


$sql= "SELECT * FROM topics

LEFT JOIN (SELECT POSTID, GROUP_CONCAT(DISTINCT ImageTopic  ) ImageTopic 
FROM ImagePost GROUP BY POSTID
) ImageTopic ON topics.id = ImageTopic.POSTID


where topics.id=? "
;

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

$stmt->bind_param("s",$id);

$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 {

    $json = json_encode(["result" => "No Data Foun"]);
}
 echo $json;

 
$con->close();
 



?>


 

 

كيف يمكن حل هذا المشكلة؟ انا لا استطيع استعمال الصور بشكل هذا / احتاج لاحقا الى استعملهم في تطبيقي

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

Recommended Posts

  • 0

حتى تتمكن من فتح الصور يجب أولاً أن يكون لديك صلاحية الوصول الى مسار حفظ هذه الملفات وهو أمر تستطيع برمجته إن لم تفعل بعد. الشيء الثاني إذا كنت تستلم الصور بهذه الصيغة التي تعرضها في الصورة  المرفقة فجيب أن تقسم النص مثلاً في JavaScript بإستعمال الدالة split من خلال العلامة الفاصلة بين جزء من النص وأخر أي بين روابط الصور وهو في حالتك الفاصلة (,) . بعد ذلك يمكنك وضع روابط الصور في عنصر html المسمى a لكي يصبح قابل للفتح.

	// imagesString لنفرض أن النص الذي يحتوي على روابط الصور لديك هو
	let array= imagesString.split(",")
	الأن كل عنصر من عناصر المصفوفة أعلاه هو رابط صورة. حيث يمكنك المرور على جميع العناصر في حلقة تكرار وتكوين عنصر قابل للضغط.
	array.map( (img, index ) =>{
	    ...
	    //هي رابط صورة img هنا كل
	    // <a href=`${img}` >...</a>
	}
	// يعتمد الأمر على ماذا تستعمل في الواجهة الأمامية لذا وضعنا حلاً عاماً لتاخذ منه الفكرة
	
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال علي محسن:

حتى تتمكن من فتح الصور يجب أولاً أن يكون لديك صلاحية الوصول الى مسار حفظ هذه الملفات وهو أمر تستطيع برمجته إن لم تفعل بعد. الشيء الثاني إذا كنت تستلم الصور بهذه الصيغة التي تعرضها في الصورة  المرفقة فجيب أن تقسم النص مثلاً في JavaScript بإستعمال الدالة split من خلال العلامة الفاصلة بين جزء من النص وأخر أي بين روابط الصور وهو في حالتك الفاصلة (,) . بعد ذلك يمكنك وضع روابط الصور في عنصر html المسمى a لكي يصبح قابل للفتح.


	// imagesString لنفرض أن النص الذي يحتوي على روابط الصور لديك هو
	let array= imagesString.split(",")
	الأن كل عنصر من عناصر المصفوفة أعلاه هو رابط صورة. حيث يمكنك المرور على جميع العناصر في حلقة تكرار وتكوين عنصر قابل للضغط.
	array.map( (img, index ) =>{
	    ...
	    //هي رابط صورة img هنا كل
	    // <a href=`${img}` >...</a>
	}
	// يعتمد الأمر على ماذا تستعمل في الواجهة الأمامية لذا وضعنا حلاً عاماً لتاخذ منه الفكرة
	

اهلا اخي الكريم

بالنسبة الى الصلاحيات لا توجد مشكله في ذلك 

المشكله في تقسيم الصور هما 3 روابط الان ولكن بسبب انهم متصلين ببعض لا يمكن الانتقال لهم

بالنسبة الى التقسيم نعم هو ما ابحث عنه ولكني لم اجد حل له 

بالنسبة الى انا استعمل php and MySQL

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

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

اهلا اخي الكريم

بالنسبة الى الصلاحيات لا توجد مشكله في ذلك 

المشكله في تقسيم الصور هما 3 روابط الان ولكن بسبب انهم متصلين ببعض لا يمكن الانتقال لهم

بالنسبة الى التقسيم نعم هو ما ابحث عنه ولكني لم اجد حل له 

بالنسبة الى انا استعمل php and MySQL

كما شرحنا لك يمكنك عمل تقسيم الروابط في جافاسكربت أي في المتصفح وليس في الخادم. ماذا تستعمل للواجهة الأمامية مثلاً jQuery  أو React.js أو حتى javascript بكل الحالات تستطيع ذلك فقط الطريقة ستختلف جزئياً لكن المبدأ هو نفسه كما وضحنا لك في الرد الأول.

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

  • 0

يُمكنك تحويل السلسلة النصية إلى مصفوفة في PHP بإستخدام الدالة explode مثال:

<?php

$imageTopic =  "https://png.pngtree.com/element_our/20200703/ourlarge/pngtree-butterfly-purple-red-wings-ink-transparent-png-bright-image_2300442.jpg,https://www.picng.com/upload/butterfly/png_butterfly_61701.png,https://www.picng.com/upload/butterfly/png_butterfly_61701.png,https://www.picng.com/upload/butterfly/png_butterfly_61700.png";

$images = explode(',', $imageTopic);

var_dump($images);

الناتج سيكون:

array(4) {
  [0]=>
  string(133) "https://png.pngtree.com/element_our/20200703/ourlarge/pngtree-butterfly-purple-red-wings-ink-transparent-png-bright-image_2300442.jpg"
  [1]=>
  string(62) "https://www.picng.com/upload/butterfly/png_butterfly_61701.png"
  [2]=>
  string(62) "https://www.picng.com/upload/butterfly/png_butterfly_61701.png"
  [3]=>
  string(62) "https://www.picng.com/upload/butterfly/png_butterfly_61700.png"
}

و بعد تحويل السلسلة النصية إلى مصفوفة ترسل الناتج إلى قسم العميل لعرضه بالطريقة التي ترغب فيها، لديك مصفوفة تحوي عدد من الروابط.

الطريقة الثانية أن يكون التحويل في قسم العميل نفسه أعتقد أنك تستخدم لغة dart و في dart يُمكنك القيام بذلك بإستخدام التابع split:

مثال:

String imageTopic = "https://png.pngtree.com/element_our/20200703/ourlarge/pngtree-butterfly-purple-red-wings-ink-transparent-png-bright-image_2300442.jpg,https://www.picng.com/upload/butterfly/png_butterfly_61701.png,https://www.picng.com/upload/butterfly/png_butterfly_61701.png,https://www.picng.com/upload/butterfly/png_butterfly_61700.png";

List<String> images = imageTopic.split(",");

print(images);

الناتج سيكون:

[https://png.pngtree.com/element_our/20200703/ourlarge/pngtree-butterfly-purple-red-wings-ink-transparent-png-bright-image_2300442.jpg, https://www.picng.com/upload/butterfly/png_butterfly_61701.png, https://www.picng.com/upload/butterfly/png_butterfly_61701.png, https://www.picng.com/upload/butterfly/png_butterfly_61700.png]

و هو قائمة تحمل عدد من العناصر كل عُنصر هو رابط صورة. لك الحرية في طريقة العرض بعد ذلك.

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...