💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۸ هادی جیبر
مشکل در خواندن id فولدرها
محسن موحد حل شده توسط محسن موحد

سلام

برای اضافه کردن task هر فولدری که انتخاب می‌کنم در آدرس بار کد فولدر را نمایش میده اما در زمان اضافه شدن در سورس برنامه تسک‌ها رو فقط به فولدر آخری اضافه می‌کنه.

سلام هادی جان، لطفا کدهای مربوط به قسمت اضافه کردن تسک به فولدرها هم php و هم بخش قالبش رو بفرستید تا بتونیم راهنمایی تون کنیم

صادق برزگر ۱۶ آبان ۱۴۰۲، ۱۲:۵۰

<!DOCTYPE html>

<html lang="en" >

<head>

  <meta charset="UTF-8">

  <title>CodePen - Task manager UI</title>

  <link rel="stylesheet" href="assets/css/style.css">


 

</head>

<body>

<!-- partial:index.partial.html -->

<div class="page">

  <div class="pageHeader">

    <div class="title">Dashboard</div>

    <div class="userPanel"><i class="fa fa-chevron-down"></i><span class="username">John Doe </span><img src="https://s3.amazonaws.com/uifaces/faces/twitter/kolage/73.jpg" width="40" height="40"/></div>

  </div>

  <div class="main">

    <div class="nav">

      <div class="searchbox">

        <div><i class="fa fa-search"></i>

          <input type="search" placeholder="Search"/>

        </div>

      </div>

      <div class="menu">

        <div class="title">Folders</div>

        <ul class="folderMenu">


 

          <li class="<?= isset($_GET['folderid']) ? '' : 'active' ?>">

          <a href="http://localhost/taskmanager/"><i class="fa fa-folder"></i>All</a>

          </li>


 

          <?php foreach($folders as $folder) :?>

          <li class="<?= ($_GET['folderid'] = $folder->id) ? 'active' : '' ?>">

            <a href="?folderid=<?= $folder->id?>"><i class="fa fa-folder"></i><?= $folder->name ?></a>

            <a href="?delfolder=<?= $folder->id?>" style ="float: right;"><i class="fa fa-trash-o" onclick="return confirm('Are You Sure To Delete This Folder?');"></i></a>

          </li>

          <?php endforeach; ?>          

        </ul>

      </div>

      <div>

        <input id="inputFolderAdd" style="margin-left: 24px; width: 110px;" placeholder="Input Folder Name">

        <button id="folderAdd">Add</button>

      </div>

    </div>

    <div class="view">

      <div class="viewHeader">

        <div class="title">Manage Tasks</div>

        <input id="inputTaskAdd" style=" margin: 8px 0px 0px 48px; width: 234px; float: left;" placeholder="Input Task Name">

        <div class="functions">

          <div class="button active">Add New Task</div>

          <div class="button">Completed</div>

          <div class="button inverz"><i class="fa fa-trash-o"></i></div>

        </div>

      </div>

      <div class="content">

        <div class="list">

          <div class="title">Today</div>

          <ul>

            <?php if(sizeof($tasks) > 0) :?>

            <?php foreach($tasks as $task) :?>

            <li class="<?= $task->is_done ? "checked" : "" ?>"><i class="<?= $task->is_done ? "fa fa-check-square-o" : "fa fa-square-o" ; ?> "></i><span><?=$task->title?></span>

              <div class="info">

                <div style="background-color: #AAA;float: right;width: 31px;height: 30px;border-radius: 4px;margin: 10px 10px;text-align: center;cursor: pointer;color: White;font-weight: 700;">

                <a href="?deltask=<?= $task->id?>" onclick="return confirm('Are You Sure TO Delete This Item? (<?=$task->title?>)');"><i class="fa fa-trash-o" style="line-height: 31px;margin-left: 0;"></i></a></div><div class="button green">In progress</div><span>Complete by <?= $task->created_at?></span>

              </div>

            </li>  

            <?php endforeach; ?>

            <?php else: ?>


 

              <li>There are no item for display...</li>


 

            <?php endif; ?>

          </ul>

        </div>

        <div class="list">

          <div class="title">Tomorrow</div>

          <ul>

            <li><i class="fa fa-square-o"></i><span>Find front end developer</span>

              <div class="info"></div>

            </li>

          </ul>

        </div>

      </div>

    </div>

  </div>

</div>


 

<!-- partial -->

  <script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script><script  src="assets/js/script.js"></script>


 

  <script>

    $(document).ready(function(){


 

        $('#folderAdd').click(function(){

            var folderName = $('#inputFolderAdd').val();

            $.ajax({

                  type: "POST",

                  data: {action: "addFolder",name:folderName},

                  url: "process/ajaxHandlers.php",

                  success: function(response){

                    if(response = '1'){


 

                      $('<li><a href="?folderid=<?= $folder->id?>"><i class="fa fa-folder"></i>'+folderName+'</a></li>').appendTo('.folderMenu');


 

                    }else{

                      alert(response);

                    }

                  }

            });

        });

   

        $('#inputTaskAdd').on('keypress',function(e) {

          if(e.which == 13) {

            var taskName = $('#inputTaskAdd').val();

                                                     

                $.ajax({

                  type: "POST",

                  data: {action: "addTask",folder_id: <?= $_GET['folderid'] ?> ,title: taskName},

                  url: "process/ajaxHandlers.php",

                    success: function(response){

                      if(response = '1'){

                        location.reload();

                      }else{

                      alert(response);

                      }

                    }

                });

          }

        });

    });

   

  </script>


 

</body>

</html>

 

function addtask($taskName,$folderId){
    global $pdo;
    $userId = curentUserID();
    $sql = "INSERT INTO tasks (title , user_id , folder_id) VALUES (:title , :user_id , :folder_id)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([':title'=>$taskName ,':userid'=>$userId , ':folder_id'=>$folderId]);
    return $stmt->rowCount();
}
هادی جیبر ۱۷ آبان ۱۴۰۲، ۰۷:۳۱
 case "addTask":
        $folderId = $_POST['folder_id'];
        $taskName = $_POST['title'];
        if(!isset($folderId) || empty($folderId)){
            echo "Please Selected Folder.";
            die();
        }
        echo addtask($taskName,$folderId);
    break;
هادی جیبر ۱۷ آبان ۱۴۰۲، ۰۷:۳۲

سورستون رو زیپ کنید و قرار بدید.

محسن موحد ۱۷ آبان ۱۴۰۲، ۱۹:۴۸

دقت کنید که در شروط حتما و حتما از == مساوی یا === استفاده کنید. تک مساوی (=) برای انتساب مقدار است.

1. لاین 120 از دو مساوی در شرط ajax استفاده کنید:

if(response == '1'){

 

2. مورد بعدی که مشکلتون برای این قسمت هست بازهم به تک مساوی برمیگرده در لاین 32 که در شرط بجای == از عملگر انتساب استفاده کردید.

($_GET['folderid'] == $folder->id) ? 'active' : ''

این لاین رو تصحیح کنید به شکل بالا.

چطور میشه ایرادو فهمید؟

هم از داخل دیتابیس که میبینید folder_id آیدی آخرین فولدر شده میشه فهمید مقدار درستی نمیگیره و هم از قسمت ajax میتونید payload رو در inspect ببینید که چه مقادیری ارسال شده:

Screenshot-2023-11-11-041635-MCq9.png

 

محسن موحد ۲۰ آبان ۱۴۰۲، ۰۰:۵۳

مشکل برطرف شد فقط زمانی که روی گزینه All کلیک می‌کنم این متن نمایش داده میشه.Error-1s95.png

هادی جیبر ۲۰ آبان ۱۴۰۲، ۱۰:۴۵

لاین 32 رو به این شکل بنویسید:

(isset($_GET['folderid']) && $_GET['folderid'] == $folder->id) ? 'active' : ''
بهترین پاسخ
محسن موحد ۲۱ آبان ۱۴۰۲، ۲۳:۴۱

سلام

دلیل لینکه در آموزش به این شکل کد زده نشد چی هست؟

هادی جیبر ۱۰ شهریور ۱۴۰۳، ۰۶:۳۴