تغطية مباشرة لأحداث منتدى الإعلام الجديد المقام بمدينة أبوظبي
هل تقترح تمديد مسابقة سوالف كاست؟

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#1 (permalink)  
ما هي طريقة اعادة ترتيب نتائج الاستعلام بهذه الطريقة؟؟


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

هناك طريقة رائعة وهي تتيح لك اعادة ترتيب نتائج الاستعلام كما تريد
للتوضيح كالتالي :
لنفرض ان لدينا استعلام select من قاعدة البيانات وسيعرض لنا الاسماء التالية
  • احمد
  • محمد
  • علي
  • ابراهيم
  • عماد
وكالتالي ..

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






__________________
أخى أنت حر وراء السدود ** أخى أنت حر بتلك القيود
إذا كنت بالله مستعصـــمــا ** فماذا يضيرك كيد العبـيـد

التعديل الأخير تم بواسطة : مهندس مصرى بتاريخ 10-02-2008 الساعة 03:56 PM.
مهندس مصرى غير متواجد حالياً   قديم 10-02-2008, 03:55 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Aug 2007-
#2 (permalink)  

بامكانك ان تجعل عمود في الجدول في قاعدة البيانات تسميه tab مثلاً

و تجعل فيه قيمة الترتيب و من ثم عند الاستعلام قم بعرض النتائج مرتبة تبعاً لذلك الحقل باستخدام ORDER BY






__________________
RedMan Blog
مدونة تقنية تهتم بتطوير مواقع الويب و قضايا تنمية المجتمع
RedMan غير متواجد حالياً   قديم 10-02-2008, 08:51 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2000-
#3 (permalink)  

بحاول اجيب حل من عندي

قم بانشاء حقل مثلاً feild5
هذا الحقل ياخذ قيمة 1 عند اضافة اول بيانات له

بعد كذا عند اضافت اي بيانات جديد راح يزيد +1

بعد كذا عند الاستعراض للبيانات

تضع سهم للاعلى قيمته +1
update table set feild5=feild5+1
وضع سهم الاسفل قيمته -1
update table set feild5=feild5-1
طبعاً القيمه هي تحديث للحقل feild5

ان شاء الله وصلت المعلومه واعذرنا اذا صار فيه تقصير






الطالب غير متواجد حالياً   قديم 10-02-2008, 08:52 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#4 (permalink)  

شكراً لكم على المساعدة ..
نعم انا كنت اعلم هذا الحل . لكن هذه ليست المشكلة
انما المشكلة بعد تغيير رقم عرض اى عنصر لابد من تغيير عرض العناصر الاخرى كلها
يعني مثلا
عماد ,,, 1
محمد,,, 2
احمد ,,, 3
علي ,,, 4

الان سنجعل احمد = 1 وهي بسيطة عن طريق عمل update للحقل الذي يوجد به "احمد"
الان سيكون لدينا حقلين بنفس القيمة وهي 1 (احمد - عماد)
فهل هناك طريقة لتحديث جميع السجلات مرة اخرى باعادة ترقيمها؟
وشكرا لكم






__________________
أخى أنت حر وراء السدود ** أخى أنت حر بتلك القيود
إذا كنت بالله مستعصـــمــا ** فماذا يضيرك كيد العبـيـد
مهندس مصرى غير متواجد حالياً   قديم 11-02-2008, 01:25 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#5 (permalink)  

عملت على هذا الامر ووجدت انه يستهلك استعلامات كثيره وتركته

الافضل الاستعانه بكلاس يخدم هذا الامر عن طريق الـ xml






__________________
قد اكون مختلف معك في الرأي ولكني مستعد للموت دفاعا عن حقك في ابداء رأيك
_________________
رحم الله رجلاً أهداني عيوبي في السر s6ur
_________________
للعلم أخواني يستخدم العضويه أكثر من شخص
s6ur غير متواجد حالياً   قديم 11-02-2008, 03:09 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Apr 2002-
#6 (permalink)  

بمكن عمل ازاحة للترتيب كالتالي:
ان تزيد واحد على الارقام التى اكبر او تساوي الرقم المراد الازاحه اليه
تريد ازاحة "علي" الى الرقم 2 يصبح الاستعلام
كود PHP:
UPDATE tbl_name SET sort=sort+1 WHERE sort>=
كود PHP:
UPDATE tbl_name SET sort=2 WHERE name='علي' 
اعتقد سيعمل بشكل سليم , وحتى لا يحدث فراغات في الترتيب يمكن الاستعلام عن الاسم اولا وتحديث فقط الصفوف التى بين الترتيبين
كود PHP:
UPDATE tbl_name SET sort=sort+1 WHERE sort>=AND sort<






__________________
I Love PHP (d4d@hotmail.com)
http://www.daif.net/
daif غير متواجد حالياً   قديم 11-02-2008, 03:27 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Aug 2004-
#7 (permalink)  

الاستعلام الاول لرفع حقل معين والاستعلام الثاني لتنزيل حقل معين

طبعا في البداية نستعلم من قاعدة البيانات عن قيمة الحقل المراد زيادته او انقاصه وبنائا عليه نقوم بزيادة او انقاص الحقول المجاوره له

كود PHP:
if ($id)
{
$id intval$_GET['id'] );

$result mysql_query("SELECT sort FROM tbl_name WHERE id='$id'") or die (mysql_error() );
while(
$row mysql_fetch_array($result)){
$sort =$row[sort];
}
   
$sql1=mysql_query("UPDATE tbl_name SET sort=sort+1 WHERE sort=$sort-1") or die (mysql_error() );
   
$sql2=mysql_query("UPDATE tbl_name SET sort=sort-1 WHERE id='$id'") or die (mysql_error() );
}
echo 
"<div align=\"center\">تم التحديث بنجاح</div>\n"

كود PHP:
if ($id)
{
$id intval$_GET['id'] );

$result mysql_query("SELECT sort FROM tbl_name WHERE id='$id'") or die (mysql_error() );
while(
$row mysql_fetch_array($result)){
$sort =$row[sort];
}
   
$sql1=mysql_query("UPDATE tbl_name SET sort=sort-1 WHERE sort=$sort+1") or die (mysql_error() );
   
$sql2=mysql_query("UPDATE tbl_name SET sort=sort+1 WHERE id='$id'") or die (mysql_error() );
}
echo 
"<div align=\"center\">تم التحديث بنجاح</div>\n"






__________________
لا اله الا الله محمد رسول الله

لا تقل لا أعلم بل اقرأ و تعلم

مقاطع بلوتوث
II MATRIX II غير متواجد حالياً   قديم 11-02-2008, 06:51 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#8 (permalink)  

شكراً لجميع الاخوة الذين تعاونوا ..
RedMan
الطالب
s6ur
daif
II MATRIX II

شكرا لكم جميعا






__________________
أخى أنت حر وراء السدود ** أخى أنت حر بتلك القيود
إذا كنت بالله مستعصـــمــا ** فماذا يضيرك كيد العبـيـد
مهندس مصرى غير متواجد حالياً   قديم 11-02-2008, 09:26 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Aug 2004-
#9 (permalink)  

العفو اخوي ونتمنى ان تكون قد وجدت ضالتك






__________________
لا اله الا الله محمد رسول الله

لا تقل لا أعلم بل اقرأ و تعلم

مقاطع بلوتوث
II MATRIX II غير متواجد حالياً   قديم 12-02-2008, 05:40 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#10 (permalink)  

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

ID الاسم الترتيب
1 عماد 1
2 محمد 2
3 أحمد 3
4 علي 4

وأردت نقل علي خطوة واحدة للأعلى، فلديك بداية رقم ID الخاص به، فتستطيع الحصول على قيمة ترتيبه وهي 4، ثم تنقص منها مقدار 1 وتنفذ إستعلام بغية الحصول على ID السجل الذي يسبقه في الترتيب، وهو في هذه الحالة السجل 3 الخاص بأحمد

بعد ذلك تنفذ إستعلامي تعديل أولهما يعدل قيمة الترتيب للسجل الذي يراد نقله مرتبة واحدة للأعلى وهو سجل علي ذي ID التي قيمتها 4 ويعطى ترتيب أقل بمقدار 1 لتصبح قيمة ترتيبه هي 3.

بعد ذلك يتم إجراء إستعلام تحديث آخر على السجل الذي كان يسبقه في الترتيب والذي حصلنا في الخطوة الأولى على قيمة ID الخاصة به وهي 3 (أي سجل أحمد)، على إستعلام التحديث المنفذ أن يعطي قيمة ترتيب تزيد بمقدار 1 عن القيمة الحالية لتصبح 4

لاحظ ضرورة وجود حقل ID للدلالة على السجل المراد تغييره وعدم الإكتفاء بالترتيب كمؤشر إلى السجل وذلك نظرا لأن لأن بعد تنفيذ أو استعلام تحديث سنحصل على سجلين لهما ذات قيمة الترتيب وهي 3 (سجل علي بعد التحديث وسجل أحمد قبل التحديث).

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

على كل حال، تحافظ هذه الطريقة على إبقاء أرقام الترتيب متسلسلة دون فراغات فيما بينها مثلما تؤدي إليه بعض الحلول الجزئية التي سبق إيرادها في إجابات بعض الأصدقاء على هذا الإستفسار






__________________
خالد الشمعة - Khaled Al-Shamaa
PHP, MySQL and Arabic language
DNSerror غير متواجد حالياً   قديم 14-02-2008, 02:50 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#11 (permalink)  

بخصوص نظام راما لإدارة المحتوى لمن لديه فضول الإطلاع، فهو منشور ضمن موقع Sourceforge على العنوان التالي:

SourceForge.net: Rama Zaiten CMS






__________________
خالد الشمعة - Khaled Al-Shamaa
PHP, MySQL and Arabic language
DNSerror غير متواجد حالياً   قديم 14-02-2008, 02:52 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#12 (permalink)  

حياك الله اخي DNSerror وشكرا جزيلا لك على الرد..
هناك مشكلة بسيطة ..
مثلا لو كان لدينا فراغ بين سجل نتيجة حذف احد السجلات يعني مثلا لو لدينا سجلات ارقامها كالتالي (5) و (6) و (7) و (8) ..
لنفترض انه تم حذف السجل رقم (5) الان اذا اردنا رفع السجل (4) مكان السجل (6) والاستعلام في الاصل انا مفترض ان يزيد 1 يعني سيكون الرقم بعد الرفع هو (5) (بافتراض اني حذفت السجل رقم 5 من قاعدة البيانات).
ويتم خفض السجل (6) بمقدار 1 فيكون 5 ايضا ً !
فهل من حل لهذه المشكلة؟
وشكراً لكم مجدداً على المساعدة.
بالمناسبة اخي DNSerror انا معجب جدا بالكلاسات التي قمت ببرمجتها وهي كلاسات فى الصميم وممتازة جدا جزاك الله عنا خيراً






__________________
أخى أنت حر وراء السدود ** أخى أنت حر بتلك القيود
إذا كنت بالله مستعصـــمــا ** فماذا يضيرك كيد العبـيـد

التعديل الأخير تم بواسطة : مهندس مصرى بتاريخ 16-02-2008 الساعة 12:29 AM.
مهندس مصرى غير متواجد حالياً   قديم 16-02-2008, 12:26 AM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
لدي قاعدة بيانات طلاب mysql ماهي طريقة الاستعلام topacts PHP 12 18-08-2005 04:11 AM
ممكن شرح طريقة " اعادة ترتيب الاقسام"؟؟؟ elkaser PHP 1 31-01-2005 02:20 PM
اهل يوجد طريقة لعرض اوك 5 نتائج من قواعد البيانات بطريقة و بعد ال 5 عرض 20 نتيجة بطرق elkaser PHP 20 01-10-2004 05:41 PM
ممكن طريقة اعادة عضو تم حذفه GAME^OVER إصلاح وصيانة المنتديات 2 21-09-2004 10:50 AM
ماهي طريقة حذف التكرار من نتائج الاستعلام ؟ abu_salman تطوير الويب 4 21-12-2002 06:31 AM


الساعة الآن: 06:52 AM بتوقيت المملكة العربية السعودية