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

طلب معالجة مشكلة في كود ( للاخ مستر برمجة )

بدأه fatmaali في 15 فبراير 2014 · 10 رد · 927 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

اولا اعتذر لك بوضع اسمك فى الموضوع لكن

 

 

لقد قمت سابقاً ولك جزيل الشكر ولك الفضل بحل الامر سابقا لي ووضع الكود وتصحيحة لي

 

 

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

 

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

 

 

-------------------------------------------------------------------------

 

 

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

 

 

الكود كامل يعمل بشكل سليم لكن رغبت بانه يجلب المكرر فى موضوع محدد بمعنى بدلاله موضوع معين

 

 

يعني مثلا

 

prod=1

 

prod=2

 

قمت بتجربة كافة الطرق فى الكود ولكنه لا يعمل ويجلب لي اخطاء كثيرة

 

 

الكود كامل والذي يعمل بشكل طبيعي ولكن بدون اى دلالات

 

ما اريدة تحديداً بهذا السطر

$query2a = mysql_query("SELECT id_arc FROM arc INNER JOIN( SELECT mzayda FROM arc  GROUP BY mzayda HAVING COUNT(mzayda) > 1 ) temp ON arc.mzayda=temp.mzayda");

بمعني اريدة يجلب هذه المعلومات بناء على

prod_id='$fatma'

ولكنه حاليا يطلع جميع الارقام فى جميع المدخلات

 

يعني الكل وليس الخاص بهذا الموضوع فقط

 

 

وهذا كود الاستعلام كامل

<?php
include("inc/config.php");
echo"<table  width='100%'   dir='ltr' cellspacing='3' class=mc cellpadding='0'>

			<tr>
				<td class=mc3 align='center' height='35'>

				<p align='center'><b><span lang='ar-eg'><font color='#333333'>مبلغ 
		المزايدة</font></span></b></td>

				<td class=mc3 align='center' height='35' >


		<p align='center'><b><span lang='ar-eg'><font color='#333333'>العنوان</font></span></b></td>

				<td class=mc3 align='center' height='35'>


		<p align='center'><b><span lang='ar-eg'><font color='#333333'>الأسم كامل</font></span></b></td>

				<td class=mc3 align='center' height='35'>

		<b>#</b>
				</td>";
				$fatma= (int) $_GET['pp'];

$query2a = mysql_query("SELECT id_arc FROM arc INNER JOIN( SELECT mzayda FROM arc  GROUP BY mzayda HAVING COUNT(mzayda) > 1 ) temp ON arc.mzayda=temp.mzayda");
$upsav=mysql_query("UPDATE arc SET tap = '1' WHERE mzayda IN (SELECT mzayda FROM (SELECT mzayda FROM arc WHERE prod_id='$fatma' GROUP BY mzayda HAVING count(*) > 1) AS temp)");

        while ($rowali = mysql_fetch_assoc($query2a)) {
            $res2[] = $rowali;
        }
        $repeated = array();
        foreach ($res2 as $value) {
            foreach ($value as $value2) {
                $repeated[] = $value2;
            }
        }

        if (!$count3rod) {
            $count3rod = 0;
        }
        $aliid = (int) $_GET['pp']; 
        $TotalRecords = mysql_query("SELECT * FROM arc  where prod_id='$aliid' ORDER BY id_arc desc");
        $check_end = mysql_num_rows($TotalRecords);
        $pages1 = 50;
        $check_end = ceil($check_end / $pages1);
        $limit = ($count3rod > 1) ? ($count3rod - 1) * $pages1 : 0;
        $aliid = (int) $_GET['pp']; 
        $selectt = "SELECT * FROM arc  where prod_id='$aliid'  ORDER BY id_arc desc LIMIT $limit,$pages1 ";
        $Result = mysql_query($selectt);
        $account3rod = mysql_num_rows($Result);
        $sd = 0;
        while ($Roow = mysql_fetch_assoc($Result)) {
            $sd++;
            extract($Roow);
            ?>










		</tr>



<tr>

<td align="center" dir="rtl" class=mc height="35">

<?
if ($Rooow['end'] == "0")
{
?>
		<?php
                        if (in_array($Roow['id_arc'], $repeated)) {
                            echo " <div style='text-decoration:line-through; color:red'> ###### $omla</div>";
                        } else {
                            echo " <div> ###### $omla</div>";
                        }
                        ?>  
<?PHP
}else
{?>	

		
		                <?php
                        if (in_array($Roow['id_arc'], $repeated)) {
                            echo " <div style='text-decoration:line-through; color:red'>   $Roow[mzayda] $omla</div>";
                        } else {
                            echo " <div>  $Roow[mzayda] $omla</div>";
                        }
                        ?>
		
<?php } ?>                    


</td>

<td align="center" class=mc height="35" >
		        <font color="#669900">
		        
		        
<?php
if (in_array($Roow['id_arc'], $repeated)) {
?>
 <div style='text-decoration:line-through; color:#669900'> <?
				$select1="select * from country where country_id='$country_id'";
				$Result1=mysql_query($select1);
				while($Rowcountry=mysql_fetch_array($Result1))
				{
				extract($Rowcountry);
				?>
                <?=$country_name;?>
				<?
				}
				?> / <?
				$select1="select * from city where city_id='$city_id'";
				$Result1=mysql_query($select1);
				while($Rowcountry=mysql_fetch_array($Result1))
				{
				extract($Rowcountry);
				?>
                <?=$city_name;?>
				<?
				}
				?>
</div>
<?
} else {
?>

 <?
				$select1="select * from country where country_id='$country_id'";
				$Result1=mysql_query($select1);
				while($Rowcountry=mysql_fetch_array($Result1))
				{
				extract($Rowcountry);
				?>
                <?=$country_name;?>
				<?
				}
				?> / <?
				$select1="select * from city where city_id='$city_id'";
				$Result1=mysql_query($select1);
				while($Rowcountry=mysql_fetch_array($Result1))
				{
				extract($Rowcountry);
				?>
                <?=$city_name;?>
				<?
				}
				?>
<?
}
?>
		        
		       
				
				
				
				
</font>
</td>

<td align="center" class=mc dir=rtl height="35">

<font color="#2EAFE3">
<?php
if (in_array($Roow['id_arc'], $repeated)) {
?>
 <div style='text-decoration:line-through; color:#2EAFE3"'>
<?php
$letter_num = 3;//تغير الى عدد الحروف
?>

<?
if ($Rooow['end'] == "0")
{
?>
		<?php  echo ''.substr($Roow['name'],0,$letter_num).'####'; ?>
		
		
		
	<?PHP
}else
{?>	

		<?=$name;?>
		
<?php } ?>
</div>
<?
} else {
?>



<?php
$letter_num = 3;//تغير الى عدد الحروف
?>

<?
if ($Rooow['end'] == "0")
{
?>
		<?php  echo ''.substr($Roow['name'],0,$letter_num).'####'; ?>
		
		
		
	<?PHP
}else
{?>	

		<?=$name;?>
		
<?php } ?>




<?php } ?>

</font>


</td>

<td align="center" class=mc height="35">

		<font color="#669900"><b>
		<?=$sd;?></b></font></td>



		
    <?php
    $rod++;

    if ($rod == 1) {
        ?>

        <?php
        $rod = 0;
        }
        }
        ?>
							
        </tr>

		

			

		</table>

</div>


<?php
        echo"</p>";
        echo"<div class='nav2' align='center' dir='rtl'  ><b><a href='index.php?count3rod=1'>الاولى</a></div>";
        $i = 1;
        $next = ($count3rod > 5) ? $count3rod - 5 : 1;
        while ($next <= ($count3rod + 5) && $next <= $check_end) {
            if ($count3rod == $next) {
                echo"
        <div class='navc' align='center' dir='rtl'  >
        $next</div>";
            } else {
                echo"<div class='nav2' align='center' dir='rtl'  ><a href='index.php?count3rod=$next' >$next</a></div>";
            }
            $next++;
            $i++;
        }
        echo"<div class='nav2' align='center' dir='rtl'  ><a href='index.php?count3rod=$check_end'>الاخيرة</a></div>";
        ?>

قمت بالتجربة اكثر من مرة باشكال مختلفه

 

ويجلب لي دائما خطاء بهذا السطر

 

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\testnew\mazad_details.php on line 757

 

وهوا هذا السطر

 

foreach ($res2 as $value) {

تم تعديل هذه المشاركة بواسطة fatmaali في 15 فبراير 2014 في 13:25

#2

في انتظار الرد

#3

جربى أختى إضافة هذة الجزئية فى أخر الاستعلام.

AND arc.prod_id='$fatma'

أنا أسف, لم أجرب الكود بسبب أننى مشغول فى الوقت الحالى ..

تم تعديل هذه المشاركة بواسطة مستر برمجة في 15 فبراير 2014 في 17:25

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#4

قمت بعمله هذا الشكل

$query2a = mysql_query("SELECT id_arc FROM arc INNER JOIN( SELECT mzayda FROM arc  GROUP BY mzayda HAVING COUNT(mzayda) > 1 ) temp ON arc.mzayda=temp.mzayda AND arc.prod_id='$fatma'");

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

 

684416203.jpg
اعتذر لك ان كنت سببت لك اي ازعاج من اى نوع

 

ولكن اتمنى ان تساعدنى في الكود لان الاسكربت كامل متوقف على هذه النقطه فقط وكامل الاسكربت انتهي بفضل الله ثم تعاونك معي

 

 

المشكلة انه الان اذا جدول arc فارغ

 

يطلع لي خطاء

 

وعشان اخليه يشتغل لازم اضعله مدخلين وهميين بشرط يكون ارقامهم متشابهة عشان ميطلعش الخطاء

وفيما بعد

 

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

 

ولما بعدل الكود بيطلع هذا الخطاء

 

Warning: Invalid argument supplied for foreach()

 

وهذا الخطاء بهذا السطر
 

foreach ($res2 as $value) {

تم تعديل هذه المشاركة بواسطة fatmaali في 15 فبراير 2014 في 18:13

#5

في انتظار الرد

#6
اقتباس

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

 

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

 

 

اقتباس

المشكلة انه الان اذا جدول arc فارغ

يطلع لي خطاء

وعشان اخليه يشتغل لازم اضعله مدخلين وهميين بشرط يكون ارقامهم متشابهة عشان ميطلعش الخطاء

 

يا أختى العزيزة أنا قلت لك فى أستفسار سابق لك بأن تقومى بعمل أستعلام لكى تتأكدى من وجود بيانات فى الجدول أم لا بأستخدام مثلا mysql_num_rows أو غيرها,إذا كان تانج هذة الدالة أكبر من صفر تعرضى البيانات وإذا لا, لا تعرضى شئ , هذا هو الحل النظرى.

تم تعديل هذه المشاركة بواسطة مستر برمجة في 19 فبراير 2014 في 17:53

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#7

لا عزيزي انتا مفهمتش قصدي

 

 

اقصد انا عندي موضوعين تمام اخي

 

الموضوع الاول مدخله فيه رقم مثلا 11 و 28

 

والموضوع الثاني مدخله فيه 13 و 11

 

يقوم شاطب 11 من الموضوع الاول

 

 

و11 من الموضوع الثاني

 

يعني مش بيشطب المدخلات الخاصة فى هذا الموضوع فقط

 

بيشطب الى متشابه متواجد بجدول arc عموما بغض النظر عن id الموضوع

 

والمفروض انو ميعملش كدا يشطب فقط المدخلات المتشابه والخاصة فقط بالموضوع الاول

 

بغض النظر ان كان هناك فى نفس الجدول مدخلات شبيهه لنفس الرقم اتمنى تكون وصلك مقصدي

تم تعديل هذه المشاركة بواسطة fatmaali في 19 فبراير 2014 في 17:56

#8

جربى هذا الشرط فى أخر الاستعلام .

WHERE prod_id='$fatma'

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#9

نفس الشيئ عزيزي

 

قمت بتجربته ونفس الناتج

 

 

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

( SELECT mzayda FROM arc WHERE prod_id='$pp' GROUP BY mzayda  HAVING COUNT(mzayda)> 1 )

لكن هناك مشكلة عندما يكون المنتج لا يوجد به اي ارقام مضاف   مبعني يساوي 0  يخرج لي هذا الايرور

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\testnew\mazad_details.php on line 757

وهوا بهذا السطر

            foreach ($value as $value2) {

وطبعا كنت قد اخبرتني سابقا يجب وضع

 

mysql_num_rows

 

 

ان كان يساوي صفر فاقوم يجلب رقم 0 او لا يجلب شيئ واذا اكبر من صفر يجلب المدخل

 

وقمت بعمله على اساس كلامك بالشكل التالى ولكن ظلت نفس المشكلة قائمة ونفس الخطاء

 

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

 

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

<?php
include("inc/config.php");
echo"<table  width='100%'   dir='ltr' cellspacing='3' class=mc cellpadding='0'>

			<tr>
				<td class=mc3 align='center' height='35'>

				<p align='center'><b><span lang='ar-eg'><font color='#333333'>مبلغ 
		المزايدة</font></span></b></td>

				<td class=mc3 align='center' height='35' >


		<p align='center'><b><span lang='ar-eg'><font color='#333333'>العنوان</font></span></b></td>

				<td class=mc3 align='center' height='35'>


		<p align='center'><b><span lang='ar-eg'><font color='#333333'>الأسم كامل</font></span></b></td>

				<td class=mc3 align='center' height='35'>

		<b>#</b>
				</td>";
$query2a = mysql_query("SELECT id_arc FROM arc  INNER JOIN ( SELECT mzayda FROM arc WHERE prod_id='$pp' GROUP BY mzayda  HAVING COUNT(mzayda)> 1 ) temp ON arc.mzayda=temp.mzayda ");
$upsav=mysql_query("UPDATE arc SET tap = '1' WHERE mzayda IN (SELECT mzayda FROM (SELECT mzayda FROM arc WHERE prod_id='$aliid' GROUP BY mzayda HAVING count(*)> 1 ) AS temp)");


        while ($rowali2 = mysql_fetch_assoc($query2a)) {
        
            $res2[] = $rowali2;
        }
        $repeated = array();
        foreach ($res2 as $value) {
            foreach ($value as $value2) {
                $repeated[] = $value2;
            }
        }
        if (!$count3rod) {
            $count3rod = 0;
        }
        $fatma = (int) $_GET['pp']; 
        $TotalRecords = mysql_query("SELECT * FROM arc  where prod_id='$fatma' ORDER BY id_arc desc");
        $check_end = mysql_num_rows($TotalRecords);
        $pages1 = 50;
        $check_end = ceil($check_end / $pages1);
        $limit = ($count3rod > 1) ? ($count3rod - 1) * $pages1 : 0;
        $aliid = (int) $_GET['pp']; 
        $selectt = "SELECT * FROM arc  where prod_id='$aliid'  ORDER BY id_arc desc LIMIT $limit,$pages1 ";
$Result=mysql_query($selectt);
$count3rod=mysql_num_rows($Result);
if($count3rod==0)
{
?>

لايوجد مزايدات مضافة
<?
}
else
{
while($Roow=mysql_fetch_array($Result))
{
extract($Roow);
?>

تم تعديل هذه المشاركة بواسطة fatmaali في 20 فبراير 2014 في 23:34

#10

أختى العزيزة

 

طريقة التأكد إذا كان يوجد بيانات فى هذا القسم أم لا, لكى يتم تفادى رسالة الخطأ ( Warning: Invalid argument supplied for foreach () )

$query2a = mysql_query("SELECT id_arc FROM arc INNER JOIN( SELECT mzayda FROM arc  GROUP BY mzayda HAVING COUNT(mzayda) > 1 ) temp ON arc.mzayda=temp.mzayda");
$upsav = mysql_query("UPDATE arc SET tap = '1' WHERE mzayda IN (SELECT mzayda FROM (SELECT mzayda FROM arc WHERE prod_id='$fatma' GROUP BY mzayda HAVING count(*) > 1) AS temp)");

$numRows = mysql_num_rows($query2a);
if ($numRows > 0) {
    // يتم إضافة جميع الاكواد التى سوف يتم تنفيذها و التى سوف تظهر فى حالة وجود بيانات فى القسم
} else {
    // يضاف هنا رسالة تفيد بأن لا يوجد بيانات فى هذا القسم
}

|

|

|

أيضا أختى العزيز يوجد بعض الملاحظات على الاكواد التى تكتبيها (نقد بناااااء).

 

  • طريقة كتابة الاكواد غير منظمة, للاسف تُجهد من يتابع الكود لانة غير مرتب (للاسف أجهدتنى كثيرا لكى أتابع الكود, وسوف تجهدك أنتى أيضا عند مراجعة الكود بعد فترة زمنية).

الحل: حاولى فى برمجياتك القادمة فصل الكود البرمجى PHP, عن واجهة المستخدم أكواد HTML, وذلك بأستخدام محركات القوالب (Templates engine) مثل سمارتى وغيرها .

 

  • لازلتى تستخدمين دوال MySql وهذة الدوال سيتم إيقافها بدأ من الاصدار 5.5.0 من PHP, لذلك لن يعمل هذا الاسكربت الذى تعملية حين يتم تحديث السيرفر إلى الاصدار PHP 5.5.0 .

الحل: أستخدمى البديل وهو Mysqli  وأيضا PDO وهى البدائل الجديدة للتعامل مع قواعد البيانات .

 

 

أتمنى لك التوفيق ..

تم تعديل هذه المشاركة بواسطة مستر برمجة في 21 فبراير 2014 في 12:24

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#11

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

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

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

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

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

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