PDA

View Full Version : سوال: تعداد اجرای نامعلوم حلقه for



Yashar1989
چهارشنبه 16 بهمن 1392, 22:08 عصر
سلام
یه سری اطلاعات رو دارم از یه سایت مرجع میگیرم
برای دریافت و وارد کردن به دیتابیس از حلقه for استفاده کردم

for ($i = 0; $i <= 200; $i++) {
mysql_query.....

}

اون 200 که تعیین کردم در صفحات متغیره و بین 170 تا 200 تا هستند که خوب اگه کمتر باشه اطلاعات رو میگیره اما باز ارور خط به خط میده تا برسه به 200 بار اجرای حلقه for

راه حلش چیه که دیگه اون ارورها رو نگیرم و وقتی دیگه اطلاعاتی پیدا نکرد حلقه اجرا نشه؟

SadeghPro19
پنج شنبه 17 بهمن 1392, 00:14 صبح
لطفا واضح تر توضیح بدید و اینکه کد اطلاعاتتون هم اگه امکان داره بزارین..

Yashar1989
پنج شنبه 17 بهمن 1392, 00:27 صبح
توسظ preg_match_all اطلاعات رو میگیرم و بعدش توسط حلقه for کوئری رو اجرا میکنم و وارد دیتابیس میکنم

SadeghPro19
پنج شنبه 17 بهمن 1392, 00:31 صبح
خب متن ارورتون رو لطفا بزارین !!!
سوال دومتون هم چک کنید اگه متغییر یا آرایه خالی بود از حلقه خارج بشین.

if($data=='')
break;

Yashar1989
پنج شنبه 17 بهمن 1392, 10:24 صبح
اروری که میده اینه:
Notice: Undefined offset: 196 in file.php
Notice: Undefined offset: 197 in file.php
Notice: Undefined offset: 198 in file.php
Notice: Undefined offset: 199 in file.php
Notice: Undefined offset: 200 in file.php
دستوری که گفتی رو گذاشتم فقط تعداد ارورها رو یدونه میکنه و اگر خالی بود یه خط ارور برمیگردونه

sadegh1362
پنج شنبه 17 بهمن 1392, 14:18 عصر
سلام
برای حل این مشکل از تابع isset استفاده کنید یعنی متغیر هاتون رو چک کنید که وجود دارند یا خیر . در شرط if بذارید


if(isset($_POST[$variable]))
{
// your code
}
در این حالت اگر متغیری رو نشناسه یا به عبارت بهتر اون متغیر set نشده باشه صرف نظر می کنه .

Yashar1989
پنج شنبه 17 بهمن 1392, 16:53 عصر
سلام
برای حل این مشکل از تابع isset استفاده کنید یعنی متغیر هاتون رو چک کنید که وجود دارند یا خیر . در شرط if بذارید


if(isset($_POST[$variable]))
{
// your code
}
در این حالت اگر متغیری رو نشناسه یا به عبارت بهتر اون متغیر set نشده باشه صرف نظر می کنه .
متاسفانه این روش هم باز ارور اضافه میده
به شکل زیر عمل کردم درست شد
http://stackoverflow.com/questions/5321937/how-to-use-multiple-preg-match-with-one-foreach-loop
اول تعداد خروجی ها رو $count حساب کردم بعد همون تعداد رو داخل حلقه for استفاده کردم

MMSHFE
پنج شنبه 17 بهمن 1392, 21:12 عصر
کد داخل for رو ندیدم و نمیدونم دقیقاً این خطا برای چی صادر میشه ولی بهرحال Undefined Index یعنی اینکه آرایه شما اندیسی با مقدار مشخص شده نداره. شما باید قبلش همونطور که دوستان گفتن، با isset یا هر روش دیگه که لازم باشه، چک کنید ببینید مقدار دارین یا نه و اگه نبود، با continue اون دور حلقه رو نادیده بگیرین یا کلاً با break از حلقه بیاین بیرون. مثال:


for($i = 1; $i <= 200; $i++) {
$result = mysql_query("SELECT * FROM `table` WHERE (`id`='{$i}') LIMIT 1");
if($result && mysql_num_rows($result) > 0) {
echo '<pre>' . print_r(mysql_fetch_assoc($result), true) . '</pre>' . PHP_EOL;
}
}