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

استفسار في المصفوفات

مغلق
بدأه المحترف في 1 ديسمبر 2007 · 17 رد · 1,066 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أخواني الأفاضل

لدي المصفوفة التالية :

$asmemr_select = mysql_query ("SELECT * from subject_replays where

subject_id='$advid' and active='1' order by id desc");

while ($Row55=mysql_fetch_array($asmemr_select))

{

$ssub_id = $Row55[id];

$member_id = $Row55[mem_id];

$replay = $Row55[replay];

$date = $Row55[date];

المشكلة في الـ ID المميز باللون الأحمر

حيث يسجل الرقم التسلسلي بناءً على عدد الردود كاملة أي الردود الخاصة بالموضوع والمواضيع الأخري

أنا أريد أن أطبع بدلاً منه للرد الأول رقم 1

والرد الذي يلية رقم 2

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

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

وفقكم الله وعلى طريق الخير سدد خطاكم

تقبلوا خالص شكري مقدما

#2

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

اخي : المحترف

تفضل الكود بعد التعديل وان شاء ا لله يكون المطلوب على حسب ما فهمت منك

شكرررررررررررررررررررررا .

$asmemr_select = mysql_query ("SELECT * from subject_replays where

subject_id='$advid' and active='1' order by id desc");

$row_num = mysql_num_rows($asmemr_select)

for($s=0;$s<$row_num;$s++)

{

$ssub_id = $s+1;

$member_id = $Row55[mem_id];

$replay = $Row55[replay];

$date = $Row55[date];

}

تم تعديل هذه المشاركة بواسطة عدوووون في 1 ديسمبر 2007 في 16:43

سبحان الله والحمد لله ولا اله الا الله و الله اكبر

اللهم صلي وسلم وبارك على سيدنا محمد وعلى اله وصحبه وسلم

#3

بارك الله فيك على لارد السريع

للأسف أخي العزيز رغم توقعي بأن ما كتبته هو الصح

بإضافتك for($s=0;$s<$row_num;$s++)

و $ssub_id = $s+1;

عندما ادخل الكود تختفي الردود بالكامل لاتظهر

وعندا ألغي جملة for($s=0;$s<$row_num;$s++)

يأخذ كل رد الرقم واحد وهذا طبيعي من $ssub_id = $s+1; لعدم وجود إضافة في المتغير s$

كما لاحظت أن هناك كود كتبته انت لايكون مصفوفة بل يبحث عن الصفوف فقط

وهو $row_num = mysql_num_rows($asmemr_select)

والاصل while ($Row55=mysql_fetch_array($asmemr_select

أيهما تتوقع أصح

وعندما استخدم الأمر $row_num = mysql_num_rows($asmemr_select)

تظهر رسالة الخطأ

Parse error: parse error, unexpected T_FOR in C:\AppServ\www\myweb\index.php on line 1813

شاكرا ومقدرا لك جهودك - وآمل منكم سرعة المساعدة

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

#4

حسب ما فهمت منك

$asmemr_select = mysql_query ("SELECT * from subject_replays where subject_id='$advid' and active='1' order by id desc");

$i=1;

while($row=mysql_fetch_array($asmemr_select))
{
 echo "no.".$i."<br>".$row[replay]."<br>";
 $i++;
}

تم تعديل هذه المشاركة بواسطة ahmad123 في 1 ديسمبر 2007 في 19:21

#5

أخي احمد بارك الله فيك

ياليت تكمل الكود حتى يشتمل على عملية الاسناد

{

$ssub_id = $Row55[id];

ما ابي يطبع القيمة

بل يسندها إلى ssub_id

اتوقع الرد الأول اقرب للصواب ولكن يلزمه بعض التدقيق والمراجعة والتدقيق في جملة while

بارك الله فيكم

#6

جرب إستخدام الدالة mysql_afceted_row و التي مهمتها أنها ترى آخر تحديث في الحقول ،أعذرني لأني مار بسرعة

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#7

شكرا أخي على مرورك

أنا لا أبحث عن آخر تحديث

بل أريد مصفوفة ثم طباعة عدد المصفوفات التي تكونت بداخلها بالتسلسل من 1 إلى آخر تحمله المصفوفة

والناتجة من عدد الردود على موضوع معين حسب ما هو واضح في الكود الذي وضعته في أول الاستفسار

شاكرا ومقدرا مرورك

وأتمنى منك ومن باقي الأخوان مساعدتي في الأمر للأهمية

تحياتي لكم جميعا

#8

اخي انت تريد رقم الرد والكود الذي اعطيتك ياه يفي بلغرض تماما

فهو يقوم بعمل عداد

وعند طباعة الموضوع الاول يقوم الاعداد بطباعة قيمته وهي واحد وعند تكرار عملية استخراج القيم من قاعدة البيانات يقوم العداد

بطباعة قيمته التي تكون قد زادت بمقدار واحد اي للرد ثاني رقم 2

هذه عمليه ببساطه .. لا يحتاج الامر كتابة id المستخدم بل رقم الرد فلأول يأخذ واحد وثاني اثنان وهكذا..

ارجو ان تكون الفكره قد وصلت

#9

فعلاً أخي احمد

مشكور على التوضيح

جزاك الله ألف خير

تم تعديل هذه المشاركة بواسطة المحترف في 2 ديسمبر 2007 في 00:57

#10

بارك الله فيكم وحرم على جلودكم النار

لقد قربتم فعلا الفكرة لي وتوصلت ولله الحمد إلى كتابة الكود بشكل صحيح وإتمام عملية الإسناد ولله الحمد

بارك الله فيك أخي احمد123 فعلا لم انتبه جيدا في بداية الأمر إلى ردك لولا الله ثم توضيحك في الرد التالي

$asmemr_select = mysql_query ("SELECT * from subject_replays where subject_id='$advid' and 

active='1' order by id desc");
$i=1;
while($row55=mysql_fetch_array($asmemr_select))
{

			$ssub_id = "$i";
			  $member_id = $row55[mem_id];
			  $replay = $row55[replay];
			  $date = $row55[date];
$i++;
#11

باق استفسار واحد فقط

ابي أضيف متغير يخزن رقم آخر رد

مثلا إذا كان عدد الردود عشرة

يظهر لي آخر رد رقم ( 10 )

اتمنى لكم دوام التقدم والتوفيق

#12
$num=mysql_num_rows('write query here');

تم تعديل هذه المشاركة بواسطة ahmad123 في 3 ديسمبر 2007 في 18:03

#13

أخي احمد بارك الله فيك

كلامك سليم 100% ولكن حاولت ولم تنجح معي الطريقة

وهذا الكود

المطلوب أن يخزن في المتغير

countfs$

رقم آخر رد تم على الموضوع

ارجو تعديل الكود

وفقكم الله

$ass11_select = mysql_query ("SELECT * from subject_replays where subject_id='$s_id' and 

active='1' order by id desc");
$countfs= mysql_num_rows($ass11_select);				
while ($Row41=mysql_fetch_array($ass11_select))
 			{
			$re_id = $Row41 [$countfs];
			$meme_id = $Row41 [mem_id];
			  $re_replay = $Row41 [replay];
			  $re_date = $Row41 [date];

تم تعديل هذه المشاركة بواسطة المحترف في 4 ديسمبر 2007 في 19:50

#14

طلب غير مفهوم اعطينا الخلاصه ماهو هدفك من هذه عمليات عشان نعطيك طريقه :lol:

#15

يا حياك الله أخوي احمد

الطلب ببساطة

أبي المتغير

$re_id = $Row41 [$countfs];

عدد الردود الكلي

مثلا عدد الردود 11 يظهر لي في المتغير السابق الرد الآخير رقم 11

فمثلا في الجدول الذي تم الاستعلام من خلالها في الكود التالي subject_replays

$ass11_select = mysql_query ("SELECT * from subject_replays where subject_id='$s_id' and 

active='1' order by id desc");
$countfs= mysql_num_rows($ass11_select);				
while ($Row41=mysql_fetch_array($ass11_select))
			{
			$re_id = $Row41 [$countfs];
			$meme_id = $Row41 [mem_id];
			  $re_replay = $Row41 [replay];
			  $re_date = $Row41 [date];

فيه الحقول التالية

id subject_id mem_id replay date active

ابي يبحث لي عن عدد المواضيعsubject_id

التي يتفق رقمها مع'$s_id'

ويخزن عددها في re_id

عندما أفكر بالكود السابق أقول صحيح 100% أين الخطأ وبالتجريب

إذا تركت الكود كما هو وخاصة

$re_id = $Row41 [$countfs];

يظهر لي رقم تسلسل العضو بالنسبة لمجموع الأعضاء

وإذا عدلته إلى

$re_id = $Row41 [$id];

يظهر لي

رقم تسلسل رد العضو على الموضوع بالنسبة لمجموع ردوده على كافة المواضيع فإذا كان له 20رد وارتبط رد 9 بالموضوع هذا يظهر لي رقم 9

أبي إذا الموضوع عليه 3 ردود يظهر لي آخر رد رقم 3

وإذا عليه 15 يظهر لي آخر رد رقم 15

كيف أعدل $re_id = $Row41 [$countfs];

ليقرأ القيمة المطلوبة

شاكرا ومقدا جهودك يا أخ احمد ولا يهون باقي الزملاء

تحياتي

#16

اخي عزيز..

كما قلت لك لايجاد اخر رد

الرد الاخير هو الذي عدد الردود الكلي اي عدد صفوف المستعلم عنها

والكود

$ass11_select = mysql_query ("SELECT * from subject_replays where subject_id='$s_id' and active='1' order by id desc");
$last_reply= mysql_num_rows($ass11_select);
#17

جزاك الله خير

فعلا من المفترض أن تعطيني عدد الصفوف المستعلم عنها

ولكن استغرب ان النتيجة غير المتوقع

هل للمصفوفة دور في تغيير القيمة

حيث يتبع الكود الذي كتبته انت الكود التالي

$ass11_select = mysql_query ("SELECT * from subject_replays where subject_id='$s_id' and 

active='1' order by id desc");
$last_reply= mysql_num_rows($ass11_select);				
while ($Row41=mysql_fetch_array($ass11_select))
			{
			$re_id = $Row41 [$last_reply];
			$meme_id = $Row41 [mem_id];
			  $re_replay = $Row41 [replay];
			  $re_date = $Row41 [date];

لتخزين العدد في re_id$

بالصيغة هذه يظهر لي رقم العضو المقابل لآخر رد فعلا والمخزن في الحقل mem_id

هل للمصوفة دور في تغيير القيمة

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

وفقك الله وحرم على جلدك النار

#18

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

يعطيكم العافية يا شباب

اخي المحترف الله يسلمك الكود كله صح بس السطر

 $re_id = $Row41 [$last_reply];

فيو المشكلة

والصح هو :

 $re_id = $last_reply;

فمثلا اذا كان عندك عشر ردود لعضو معين , فان المتغير السابق سوف ياخذ القيمة 10

لان

$last_reply= mysql_num_rows($ass11_select);

تم تعديل هذه المشاركة بواسطة عدوووون في 6 ديسمبر 2007 في 15:34

سبحان الله والحمد لله ولا اله الا الله و الله اكبر

اللهم صلي وسلم وبارك على سيدنا محمد وعلى اله وصحبه وسلم

هذا الموضوع مغلق.

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