Variable qui est signalée comme undefined dans un foreach
Résolu
kalen
-
kalen -
kalen -
Bonjour,
Dans mon code je defini une variable $yTasks qui contien un array.
quand je fais un var_dump de cette variable tout marche mais quand je veut l'utiliser juste plus bas dans un foreach ces erreurs sont retournées
Warning: Undefined variable $ytasks in D:\Xammp\htdocs\my_php_projects\todo_list\index.php on line 66
Warning: foreach() argument must be of type array|object, null given in D:\Xammp\htdocs\my_php_projects\todo_list\index.php on line 66
voici mon code php:
$yTasks = array_filter($allTasks,function($e){ return $e["date"] > $e['beforeYesterday'] AND $e["date"] < $e['today']; }); var_dump($yTasks); $new_y_tasks=array(); foreach( $ytasks as $key => $task ) { if($task['parentId']===0){ array_push($new_y_tasks,$task); } } var_dump($new_y_tasks);
Et mon code en entier si besoin :
<?php if(!isset($_COOKIE['connectionCookie'])){ header('location:/my_php_projects/todo_list/login_page.php'); } include "db.php"; $mail=$_COOKIE['connectionCookie']; $date=DateTime::createFromFormat('d-m-Y H:i:s', date('d-m-Y').' 00:00:00')->getTimestamp(); $beforeYesterdayTimestamp=$date-(3600*24*2); $yesterdayTimestamp=$date-(3600*24); $todayTimestamp=$date; $tomorowTimestamp=$date+(3600*24); // delete old tasks $delSQL="DELETE FROM tasks WHERE mail='$mail' AND date < '$yesterdayTimestamp' "; $delReq= $db->prepare($delSQL); $delReq->execute(); // moove in today yesterday's tasks which aren't checked $getTasksToMooveSQL="SELECT id FROM tasks WHERE date = $yesterdayTimestamp AND checked = 0"; $getTasksToMooveReq= $db->prepare($getTasksToMooveSQL); $getTasksToMooveReq->execute(); if($getTasksToMooveReq->rowCount()>0){ $ids=$getTasksToMooveReq->fetchAll(); $newIds=array(); foreach ($ids as $id) { array_push($newIds,$id['id']); } $mooveSQL="UPDATE tasks SET date = $todayTimestamp WHERE "; foreach ($newIds as $key => $id) { $mooveSQL=$mooveSQL." id = ".$id." OR parentId = ".$id; if($key < count($newIds)-1){ $mooveSQL=$mooveSQL." OR"; } } $mooveReq= $db->prepare($mooveSQL); $mooveReq->execute(); } $allTasksSQL="SELECT * FROM tasks WHERE mail='$mail' ORDER BY id"; $allTasksReq=$db->prepare($allTasksSQL); $allTasksReq->execute(); $allTasks = $allTasksReq->fetchAll(); // add day to tasks foreach ($allTasks as $key => $task) { $allTasks[$key]['beforeYesterday']=$beforeYesterdayTimestamp; $allTasks[$key]['yesterday']=$yesterdayTimestamp; $allTasks[$key]['today']=$todayTimestamp; $allTasks[$key]['tomorow']=$tomorowTimestamp; } // get tasks by day $yTasks = array_filter($allTasks,function($e){ return $e["date"] > $e['beforeYesterday'] AND $e["date"] < $e['today']; }); var_dump($yTasks); $new_y_tasks=array(); foreach( $ytasks as $key => $task ) { if($task['parentId']===0){ array_push($new_y_tasks,$task); } } var_dump($new_y_tasks); $todTasks = array_filter($allTasks,function($e){ return $e["date"] > $e['yesterday'] AND $e["date"] < $e['tomorow']; }); $tomTasks = array_filter($allTasks,function($e){ return $e["date"] > $e['today'] ; }); function displayTasks($tasks){ foreach ($tasks as $task) { $value=$task['value']; $id=$task['id']; $checked=$task['checked']===1?'checked':''; echo " <div class='task $checked' data-id='$id'> <div class='content'> <input type='checkbox' $checked id='taskCheck$id' /> <label for='taskCheck$id'>$value</label> <button class='addChild'>+</button> <button class='delete'>X</button> </div> </div> "; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>TO DO List</title> <link rel="stylesheet" href="css/baseColor.css" /> <link rel="stylesheet" href="css/reset.css" /> <link rel="stylesheet" href="css/index.css" /> <script src="js/index.js" defer></script> </head> <body> <div class="container"> <div class="scroll"> <div class="yesterday"> <h1>Yesterday</h1> <div class="content"> <?php displayTasks($yTasks); ?> <form action="" method="post"> <input type="text" placeholder="Enter a new task..." name="new_task"/> </form> </div> </div> <div class="today"> <h1>Today</h1> <div class="content"> <?php displayTasks($todTasks); ?> <form action="" method="post"> <input type="text" placeholder="Enter a new task..." name="new_task"/> </form> </div> </div> <div class="tomorow"> <h1>Tomorow</h1> <div class="content"> <?php displayTasks($tomTasks); ?> <form action="" method="post"> <input type="text" placeholder="Enter a new task..." name="new_task"/> </form> </div> </div> </div> </div> </body> </html>
Merci d'avance pour votre aide je ne comprend vraiment pas d'où viens le problème
Windows / Chrome 106.0.0.0
A voir également:
- Variable qui est signalée comme undefined dans un foreach
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Correction python ✓ - Forum Python
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret? ✓ - Forum Python
- Variable d'environnement temp - Forum Word
- Le mot secret ne s'affiche pas, comment pourrais-je faire? ✓ - Forum Python
3 réponses
Oh merci je n'avais pas vu
Sinon j'ai un autre problème,
quand j'exécute ce code:
$yTasks = array_filter($allTasks,function($e){ return $e["date"] > $beforeYesterdayTimestamp AND $e["date"] < $todayTimestamp; });
j'ai ces erreurs:
Warning: Undefined variable $beforeYesterdayTimestamp in D:\Xammp\htdocs\my_php_projects\todo_list\index.php on line 62 Warning: Undefined variable $todayTimestamp in D:\Xammp\htdocs\my_php_projects\todo_list\index.php on line 62
alors que j'ai défini ces variables avant comme ça :
$date=DateTime::createFromFormat('d-m-Y H:i:s', date('d-m-Y').' 00:00:00')->getTimestamp(); $beforeYesterdayTimestamp=$date-(3600*24*2); $yesterdayTimestamp=$date-(3600*24); $todayTimestamp=$date; $tomorowTimestamp=$date+(3600*24);
Savez vous d'où viens le problème ?