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

استعلام من قاعدة البيانات يتسبب في تهنيج المتصفح

بدأه أبو حنان في 30 سبتمبر 2012 · 2 رد · 862 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي استعلام من قاعدة البيانات يقوم بجلب اسماء القوائم ومن ثم يقوم بادراج <li > لهذه القائمة وتحتها القوائم الفرعية

وهذا هو الكود :

 <?php
           $count =0 ;
        do{
             if (!empty($row_rsmainmenu['catname'])){
             if ($count<6){
        ?>

         <li style=" border-right  : 1px solid #cfcfcf;" ><a  href="showcat.php?id=<?php echo $row_rsmainmenu['catid'];?>" class='popup_down' >

            <?php echo $row_rsmainmenu['catname']; ?></a> 
            <?php
             do{   
           $newid=$row_rsmainmenu['catid'];

           $query_rscategories = "SELECT * FROM cats WHERE cats.mainid LIKE '$newid' ORDER BY ordernumber";

$rscategories = mysql_query($query_rscategories, $mysqlconnection) or die(mysql_error());
$row_rscategories = mysql_fetch_assoc($rscategories);
$totalRowscategories= mysql_num_rows($rscategories);



             if (!empty($row_rscategories['mainid'])){

                 if ($totalRowscategories>1)   {

        ?>
           <ul> 
         <li  ><a  href="showcatdetails.php?id=<?php echo $row_rscategories['catid'];?>"  ><?php echo $row_rscategories['cattitle']; ?></a> 
            </li> 
            </ul>    
         <?php
             }
            }

 } while ($row_rscategories = mysql_fetch_assoc($rscategories));


       ?>



            </li>

       <?php

             } $count+=1; }    
 } while ($row_rsmainmenu = mysql_fetch_assoc($rsmainmenu));
 unset($row_rsmainmenu);
         mysql_free_result($rsmainmenu);
        ?>

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

بارك الله فيكم وجزاكم الله خيرا

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

#2

السلام عليكم

واضح من الكود وجود خطأ منطقى وهو حلقة غير منتهية بسبب وجود الكود التالى داخل حلقة do while الثانية :

$newid=$row_rsmainmenu['catid'];
$query_rscategories = "SELECT * FROM cats WHERE cats.mainid LIKE '$newid' ORDER BY ordernumber";
$rscategories = mysql_query($query_rscategories, $mysqlconnection) or die(mysql_error());
$row_rscategories = mysql_fetch_assoc($rscategories);
$totalRowscategories= mysql_num_rows($rscategories);

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

وعلى هذا يصبح الكود بالشكل التالى :

 <?php
   		$count =0 ;
    	do{
     		if (!empty($row_rsmainmenu['catname'])){
     		if ($count<6){
    	?>

 		<li style=" border-right  : 1px solid #cfcfcf;" ><a  href="showcat.php?id=<?php echo $row_rsmainmenu['catid'];?>" class='popup_down' >

        	<?php echo $row_rsmainmenu['catname']; ?></a> 
        	<?php
		$newid=$row_rsmainmenu['catid'];
		$query_rscategories = "SELECT * FROM cats WHERE cats.mainid LIKE '$newid' ORDER BY ordernumber";
		$rscategories = mysql_query($query_rscategories, $mysqlconnection) or die(mysql_error());
		$totalRowscategories= mysql_num_rows($rscategories);
     		do{

     		if (!empty($row_rscategories['mainid'])){

         		if ($totalRowscategories>1)   {

    	?>
   		<ul> 
 		<li  ><a  href="showcatdetails.php?id=<?php echo $row_rscategories['catid'];?>"  ><?php echo $row_rscategories['cattitle']; ?></a> 
        	</li> 
        	</ul>	
 		<?php
     		}
        	}

 } while ($row_rscategories = mysql_fetch_assoc($rscategories));


   	?>



        	</li>

   	<?php

     		} $count+=1; }	
 } while ($row_rsmainmenu = mysql_fetch_assoc($rsmainmenu));
 unset($row_rsmainmenu);
 		mysql_free_result($rsmainmenu);
    	?>

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

2

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#3

مرحبا أخي أبو حنان ,

الكود المرفق يمكن ان يصاغ بطريقة اسهل من هذه بكثير

لا داعي لاستخدام

do{
if()

}while()

يمكنك استبدالها مباشرة بـ

while($row=mysql_fetch_query($result))
{

////
}

وكما اشار الاخ أحمد الكويري يجب ان يسبق عملية استخلاص البيانات

$result=mysql_query("sql");

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…