ايران ويج

نسخه‌ی کامل: خطای Invalid argument supplied for foreach
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
باسلام
ممنون میشم دوستان راهنمایی کنید که خطا از کجا میتونه باشه

نوع متغیر row آرایه هست باید اینطوری نوشته بشه :


کد:
https://stackoverflow.com/questions/10258345/php-simple-foreach-loop-with-html


کد php:
   <?php foreach($array as $key=>$value): ?>
    <tr>
        <td><?php echo $key?></td>
    </tr>
    <?php endforeach; ?>

راستی شما از native php یا از framework خاصی استفاده میکنید؟
سلام 
ممنون از راهنماییتون 
ولی متاسفانه روشی که فرمودید رو من نتونستم مشابه اون رو تو کدهام اجرا کنم و نتیجه بگیرم ممنون میشم کمی بیشتر توضیح دهید یا روشی که راحت تر بتونم موضوع رو حل کنم، اگر لازم باشه کدها رو هم میتونم تو پست بعدی منتشر کنم (نبده مدت کمی هست php رو شروع کردم)

بنده هنوز از فریم ورک خاصی استفاده نمیکنم که اگر موفق بشم تسلطی رو php پیدا کنم پس از اون برم طرف لاراول

(که متاسفانه  غمگین - بهینه شده برای ورژن جدید  بر خلاف میل باطنی ممکنه php رو کنار بزارم و برم سراغ asp.net چون تو محل کار ما شیرپوینت داره راه اندازی میشه و هسته اون دات نتی هست و به هرحال یه جاهایی لازم به برنامه نویسی خواهد شد.)
کد میشه بزاری.
فریم ورک و هم برای این پرسیدم که به نظر خودم یادگرفتن یه فریم ورک مثل لاراول خیلی راحتر و خوش دستر از native هست...
باسلام

این لینک فایل بصورت کامل هست
http://s8.picofile.com/file/8349665868/CMS.rar.html

و این هم کدهایی که تو برنامه موجب خطا شدم باهاشون

کد php:
  <?php
                                
@$row=listmenudefault();
 
                               foreach ($row as $val):
 
                               ?>

                              <div class="dropdown">
                                  <button class="dropbtn">درباره ما</button>
                                  <div class="dropdown-content">
                                      <li><a href="index.php">لینک اول</a></li>
                                      <li><a href="index.php">لینک دوم</a></li>
                                      <li><a href="#">لینک سوم</a></li>
                                  </div>
                              </div>
                              <?php endforeach; ?>

کد php:
function listmenudefault()
{
 
   $connection config();
 
   $sql "SELECT * FROM menu_tbl WHERE  status='1' AND chid='0' ORDER BY sort ASC";
 
   $row mysqli_query($connection$sql);
 
   while ($res mysqli_fetch_assoc($row)) {
 
       $result[]=$res;
 
   }
 
       return $result

این قسمت ها با هم مرتبط هستند نیاز به بررسی دارند

در پاسخ شما دوست عزیز 
بله لاراول خیلی خیلی خوب هست و اگر هر کسی هدفمند بخواد پیگیر باشه در انتها باید بتونه با فریم ورک پروژه هاش رو ببنده ولی روز اول که من میخواستم شروع کنم با مدرس تماس داشتم و توصیه داشتن که اول php رو یاد بگیرم و با مفاهیم و کدنویسی آشنا بشم و بعداز اون برم سراغ لاراول ...
بالاخره وقت کردم نگاش کنم، ببخشید دیر شد..
مختویات این menu_tbl از دیتابیس بهم نشون میدی؟
کدت مشکلی نداره به نظرم
(۰۷-بهمن-۱۳۹۷, ۲۰:۴۹:۴۳)nImaarek نوشته است: [ -> ]بالاخره وقت کردم نگاش کنم، ببخشید دیر شد..
مختویات این menu_tbl از دیتابیس بهم نشون میدی؟
کدت مشکلی نداره به نظرم

خب اوکی شدش.
مشکل اینجا بود که آرایه result تو فایل functions تابع listmenudefault درست پر نمیکردی. کد شما :

کد php:
function listmenudefault()
{
    $connection config();
    $sql "SELECT * FROM menu_tbl WHERE  status='1' AND chid='0' ORDER BY sort ASC";
    $row mysqli_query($connection$sql);
    while ($res mysqli_fetch_assoc($row)) {
        $result[]=$res;
    }
        return $result;
}
?>

کد درست :
کد php:
function listmenudefault()
{
    $result = [];
    $connection config();
     $sql "SELECT * FROM menu_tbl WHERE  status='1' AND chid='0' ORDER BY sort ASC";
    $row mysqli_query($connection$sql);
    if ($row){
        while ($res mysqli_fetch_assoc($row)) {
            array_push($result$res);
        }
    }
    return $result;
}
?>

راستی یه سوال توی فایل index چرا @ گذاشتی تو خط 80 ؟ اینطوری متوجه مشکل نمیشدی !
بعد هم اینکه یکم بهتر کد بزن وقتی مقداری میریزی تو یه متغیر اطمینان حاصل کن ( شادی − بهینه شده برای ورژن جدید ) که این کار درست انجام شده مثلا با گرفتن طولش یا اصلا چاپ مقادیرش، مثلا تابع config کد شما:
کد php:
function config()
{
 
   $server "localhost";
 
   $username "root";
 
   $password "";
 
   $db "cms";
 
   $connect mysqli_connect($server$username$password$db);
 
   /*"خط اول بهتر عمل میکند"*/
 
   mysqli_set_charset($connect"UTF8");
 
   mysqli_query($connect"SET NAMES 'UFT8'");
 
   return $connect;


کد درستر:

کد php:
function config()
{
 
   $server "localhost";
 
   $username "root";
 
   $password "";
 
   $db "cms";
 
   $connect mysqli_connect($server$username$password$db);
    if (
$connect->connect_error) {
        die(
"Connection failed: " $connect->connect_error);
    }
 
   /*"خط اول بهتر عمل میکند"*/
 
   mysqli_set_charset($connect"UTF8");
 
   mysqli_query($connect"SET NAMES 'UFT8'");
 
   return $connect;


یا مثلا من وقتی داشتم کدت و چک میکردم از فایل index شروع کردم و اول چک کردم خروجی تابع listmenudefault() آرایه هست یا نه!
از تابع php به اسم var_dump استفاده کردم اینطوری :
کد php:
<?php
$row
=listmenudefault();
var_dump($row);
foreach (
$row as $key):
    echo $key;
?>

البته من query رو هم عوض کرده بودم به این صورت:


کد:
$sql = "SELECT * FROM menu_tbl";

خروجیش شد:

[attachment=14187]
من php خیلی بلد نیستم در حد دو ماه اینا کار کردم باز عذر میخوام اگه منظورم و نرسوندم یا... دست زدن - بهینه شده برای ورژن جدید 028