Bonjour à tous ! j'ai l'impression que c'est une erreur classique mais impossible de comprendre ou de voir là ou est le problème..
voici l'erreur : Notice: Undefined index: id in /Library/WebServer/functions/post.func.php on line 21
Voici ce que me renvoi le navigateur après un var dump/ die :
array(2) { ["page"]=> string(4) "post" ["id3"]=> string(0) "" }
Vous avez des idéees ?
(j'ai essayé de resoudre le problème avec la video de grafikart sur le debbug mais sans succès :/
page index.php :
<?php
include 'functions/main-functions.php';
$pages =scandir('pages/');
if(isset($_GET['page']) && !empty ($_GET['page'])){
if(in_array($_GET['page']. '.php',$pages)){
$page= $_GET['page'];
echo "";
} else {
$page = "error";
}
}else{
$page = "home";
}
$pages_functions = scandir('functions/');
if(in_array($page.'.func.php', $pages_functions)){
include 'functions/'.$page.'.func.php';
}
?>
<!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="css/materialize.css" media="screen,projection"/>
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<?php
include 'body/topbar.php'
?>
<div class="container">
<?php
include 'pages/'.$page.'.php';
?>
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<!--JavaScript at end of body for optimized loading-->
<script type="text/javascript" src="js/materialize.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<?php
$pages_js = scandir('js/');
if(in_array($page.'.func.js',$pages_js)){
?>
<script type="text/javascript" src="js/<?= $page ?>.func.js"></script>
<?php
}
?>
</body>
</html>
page post.php :
<h2> page des postes </h2>
<?php
$post = get_post();
if ($post == false){
header("Localisation:index.php?page=error");
}else{
?>
</div>
<div class="parallax-container">
<div class="parallax">
<img src="img/posts/<?= $post->image ?>" alt="<?= $post->title ?>"/>
</div>
</div>
<div class="container">
<?php
}
page post.func.php :
<?php
function get_post(){
global $db;
$req = $db->query("
SELECT posts.id,
posts.title,
posts.image,
posts.content,
posts.date,
admins.name
FROM posts
JOIN admins
ON posts.writer = admins.email
WHERE posts.id='{$_GET['id']}'
");
$result = $req->fetchObject();
return $result;
}
?>
Merci à tous !
Bonjour.
L'erreur veux simplement dire que tu fais appel à l'index id de la variable $_GET
, sauf que celui-ci n'existe pas.
Donc avant de faire ta requête SQL, vérifie que l'index id existe bien dans les paramêtre passés dans l'url et que sa valeur n'est pas vide.
Donc par exemple :
function get_post()
{
global $db;
if (!empty($_GET['id'])) {
// Ton code qui à la fin retourne les résultats
}
return false;
}
Merci de ta réponse ! donc je dois remplacer le code de post.func.php par ca :
<?php
function get_post()
{
global $db;
if (!empty($_GET['id'])) {
// Ton code qui à la fin retourne les résultats
}
return false;
}
$req = $db->query("
SELECT posts.id,
posts.title,
posts.image,
posts.content,
posts.date,
admins.name
FROM posts
JOIN admins
ON posts.writer = admins.email
WHERE posts.id='{$_GET['id']}'
");
$result = $req->fetchObject();
return $result;
?>
cela ne fonctionne pas, la ligne 27 pose toujours problème :/
donc je dois remplacer le code de post.func.php par ca
Non, tu dois remplacer :
// Ton code qui à la fin retourne les résultats
Par :
$req = $db->query("
SELECT posts.id,
posts.title,
posts.image,
posts.content,
posts.date,
admins.name
FROM posts
JOIN admins
ON posts.writer = admins.email
WHERE posts.id='{$_GET['id']}'
");
$result = $req->fetchObject();
return $result;
Soit au final :
function get_post()
{
global $db;
if (!empty($_GET['id'])) {
$req = $db->query("
SELECT posts.id,
posts.title,
posts.image,
posts.content,
posts.date,
admins.name
FROM posts
JOIN admins
ON posts.writer = admins.email
WHERE posts.id='{$_GET['id']}'
");
$result = $req->fetchObject();
return $result;
}
return false;
}
Et puis, il est totalement inutile de fermer la balise de PHP à la fin de ton fichier.