donc rajouté une page qui n'existais pas avant cette réponse, je cherche a redirigé l'utilisateur vers la page en court soit vers la page nouvellement créer a l'instant de la réponse.$pages = ceil($Count/$PerPage);
Si je comprends bien, pendant la lecture de l'utilisateur sur la dernière page, il se peut qu'il y ai un nouveau post ?donc rajouté une page qui n'existais pas avant cette réponse, je cherche a redirigé l'utilisateur vers la page en court soit vers la page nouvellement créer a l'instant de la réponse.
Code : Tout sélectionner
<?php
namespace App;
class URL{
public static function getInt(string $name, ?int $default = null): ?int
{
global $router, $match;
if(!isset($_GET[$name])) return $default;
if($_GET[$name] === '0') return 0;
if(!filter_var($_GET[$name], FILTER_VALIDATE_INT)) {
if(isset($match['params']) && $match['params'] != null){
if(isset($match['params']['slug']) && $match['params']['slug'] != null){
header('Location:' . $router->generate($match['name'], ['slug' => $match['params']['slug'], 'id' => $match['params']['id']]));
}else{
header('Location:' . $router->generate($match['name'], ['id' => $match['params']['id']]));
}
}else{
header('Location:' . $router->generate($match['name']));
}
setFlash("Le paramètre $name dans l'url n'est pas un entier",'orange');
http_response_code(301);
exit();
}
return (int)$_GET[$name];
}
public static function getPositiveInt(string $name, ?int $default = null): ?int
{
global $router,$match;
$param = self::getInt($name, $default);
if($param !== null && $param <= 0){
if(isset($match['params']) && $match['params'] != null){
if(isset($match['params']['slug']) && $match['params']['slug'] != null){
header('Location:' . $router->generate($match['name'], ['slug' => $match['params']['slug'], 'id' => $match['params']['id']]));
}else{
header('Location:' . $router->generate($match['name'], ['id' => $match['params']['id']]));
}
}else{
header('Location:' . $router->generate($match['name']));
}
setFlash("Le paramètre $name dans l'url n'est pas un entier positif",'orange');
http_response_code(301);
exit();
}
return $param;
}
}
Code : Tout sélectionner
if(isset($_GET['page']) && $_GET['page'] === '1'){
$uri = explode('?',$_SERVER['REQUEST_URI'])[0];
$get = $_GET;
unset($get['page']);
$query = http_build_query($get);
if(!empty($query)){
$uri = $uri . '?' . $query;
}
header('Location:' . $uri);
http_response_code(301);
exit();
}
/********
* pagination
*********/
use App\URL;
$PerPage = (int) $GetParams->GetParam(2);
$CurrentPage = URL::getPositiveInt('page', 1);
$smtp = $db->prepare('SELECT COUNT(id) FROM f_topics_reponse WHERE f_topic_id = ?');
$smtp->execute([intval($params['id'])]);
$Count = (int)$smtp->fetch(PDO::FETCH_NUM)[0];
$pages = ceil($Count/$PerPage);
//on vérifie si la page existe bien sinon on redirige si on a pas de réponse
if($CurrentPage > $pages && $CurrentPage > 1) {
setflash("Ce numéro de page n'hexiste pas","orange");
header('Location:' . $router->generate($match['name'], ['id' => $params['id']]));
http_response_code(301);
exit();
}
$offset = $PerPage * ($CurrentPage - 1);
//ici ma requête select from reponse ORDER BY f_topic_rep_date ASC LIMIT $PerPage OFFSET $offset");
Code : Tout sélectionner
$db->prepare("INSERT INTO f_topics_reponse SET f_user_id = ?, f_rep_name = ?, f_topic_reponse = ?, f_topic_id = ?, f_topic_rep_date = NOW()")->execute($i);
setFlash("Votre réponse a bien étais poster");
redirect($router->generate('viewtopic',['id' => $params['id'] . '?page=' . $pages . '#rep-' . $db->lastInsertId()]));
sur un topic j'ai 1 page et ma pagination s'arrête a 6 réponse max par page, au moment de la réponse je passerai a la nouvelle page donc la 2 mais au moment de la réponse elle n'existe pas puisse qu'elle se créer pendant la réponse $Count passe a 7 donc seulement là j'aurais 1 page +1 donc pendant la redirection je dois redirigé ver la 2 ieme page sauf si elle n'existe pas bien sur.var_dump('nombre max de page ' . $PerPage,'page en cour ' . $CurrentPage, 'nombre de pages total '.$pages,'nombre de réponse obtenue ' .$Count);
public\modules\viewtopic.php:109:string 'nombre max de page 6' (length=20)
public\modules\viewtopic.php:109:string 'page en cour 1' (length=14)
public\modules\viewtopic.php:109:string 'nombre de pages total 1' (length=23)
public\modules\viewtopic.php:109:string 'nombre de réponse obtenue 6' (length=28)