Pagination des catégories et sous-catégories
Résolu
max30_3775
Messages postés
185
Statut
Membre
-
max30_3775 Messages postés 185 Statut Membre -
max30_3775 Messages postés 185 Statut Membre -
Bonjour, je sollicite votre aide car j'ai un problème au niveau de la pagination pour compter les annonces. Si vous avez une solution ... :)
Voici l'url quand je clique sur la page 2 par exemple: http://projetsite/principales/affichage.php?page=2
Les erreurs que j'obtiens sont les suivantes:
) Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '' à la ligne 5 in C:\wamp64\www\Projetsite\principales\affichage.php on line 16
( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '' à la ligne 5 in C:\wamp64\www\Projetsite\principales\affichage.php on line 16
Le code de la page des fonctions:
Le code dans la page affichage.php:
Voici l'url quand je clique sur la page 2 par exemple: http://projetsite/principales/affichage.php?page=2
Les erreurs que j'obtiens sont les suivantes:
) Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '' à la ligne 5 in C:\wamp64\www\Projetsite\principales\affichage.php on line 16
( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '' à la ligne 5 in C:\wamp64\www\Projetsite\principales\affichage.php on line 16
Le code de la page des fonctions:
function getAnnonceCategorie($id_cat){
global $bdd;
$page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1;
$nbr_elements_par_page=5;
$debut=($page-1)*$nbr_elements_par_page;
$sql = ' SELECT A.*
,C.nom_'.$sql_lang.' AS CATEGORIE
,V.ville_'.$sql_lang.' AS VILLE
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
LEFT JOIN villes V ON V.id = A.id_ville
WHERE A.id_categorie = :id_cat
OR C.id_parent = :id_cat
ORDER BY A.created_date DESC
LIMIT '.$debut.','.$nbr_elements_par_page.' ';
try {
//suite...
...
function affichageAnnonce($id_cat){
global $bdd;
$annonces = getAnnonceCategorie($id_cat);
$images = getPhotosAnnonces($annonces);
//suite...
Le code dans la page affichage.php:
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
$anouncement = affichageAnnonce($id_cat);
//On récupère le nombre d'enregistrements
$count= "SELECT COUNT(A.id) AS cpt
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
WHERE C.id_parent=$id_cat";
$stmt= $bdd->prepare($count);
$stmt->execute();
$tstmt=$stmt->fetchAll(); //La ligne 16 de l'erreur
//Pagination
$page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1;
$nbr_elements_par_page=5;
$nbre_de_pages=ceil($tstmt[0]["cpt"]/$nbr_elements_par_page);
$debut=($page-1)*$nbr_elements_par_page;[/code]
Je pense que la numérotation est bien:
[code=php] echo"<div class='pagination'>";
for($i=1;$i<=$nbre_de_pages;$i++){
echo "<a class='paginationlien' href='?page=$i'>$i</a>" ;
}
echo"</div>"; //fin div pagination
Configuration: Windows / Chrome 98.0.4758.82
A voir également:
- Pagination des catégories et sous-catégories
- Pagination powerpoint - Guide
- Sommaire avec pagination - Guide
- Quelles sont les catégories d’autorisations demandées par l’application choisie par yasmine ? ✓ - Forum Mobile
- Erreur lors d'une opération de pagination ✓ - Forum Matériel & Système
- Pagination excel plusieurs feuilles ✓ - Forum Excel
12 réponses
Bonjour Jordane,
Un echo de la variable $tstmt donne l'erreur suivante:
Notice: Array to string conversion in C:\wamp64\www\Projetsite\principales\affichage.php on line 18
Array
et un vardump:
Un echo de la variable $tstmt donne l'erreur suivante:
Notice: Array to string conversion in C:\wamp64\www\Projetsite\principales\affichage.php on line 18
Array
et un vardump:
C:\wamp64\www\Projetsite\principales\affichage.php:19:
array (size=1)
0 =>
array (size=1)
'cpt' => string '15' (length=2)
Bonjour yg_be,
Pour la variable $sql voici l'echo:
Je pensais à $count, dont l'echo et le vardump sont les suivants:
Pour la variable $sql voici l'echo:
SELECT A.* ,C.nom_fr AS CATEGORIE ,V.ville_fr AS VILLE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie LEFT JOIN villes V ON V.id = A.id_ville WHERE A.id_categorie = :id_cat OR C.id_parent = :id_cat ORDER BY A.created_date DESC LIMIT 0,5
Je pensais à $count, dont l'echo et le vardump sont les suivants:
SELECT COUNT(A.id) AS cpt FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.id_categorie = 1 OR C.id_parent=1
C:\wamp64\www\Projetsite\principales\affichage.php:16:string 'SELECT COUNT(A.id) AS cpt FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.id_categorie = 1 OR C.id_parent=1' (length=135)
La page des fonctions cmdaffichage.php dans le dossier control:
Et la page d'affichage.php dans le dossier principales
function getAnnonceCategorie($id_cat){
global $bdd;
$sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr';
$page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1;
$nbr_elements_par_page=5;
$debut=($page-1)*$nbr_elements_par_page;
$sql = ' SELECT A.*
,C.nom_'.$sql_lang.' AS CATEGORIE
,V.ville_'.$sql_lang.' AS VILLE
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
LEFT JOIN villes V ON V.id = A.id_ville
WHERE A.id_categorie = :id_cat
OR C.id_parent = :id_cat
ORDER BY A.created_date DESC
LIMIT '.$debut.','.$nbr_elements_par_page.' ';
echo $sql;
var_dump($sql);
try {
$req = $bdd->prepare($sql);
$req->execute( array('id_cat'=>$id_cat) );
$res = $req->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
}
function getPhotosAnnonces($annonces) {
global $bdd;
$sql = 'SELECT id_annonce,filepath as IMG
FROM images_annonces
WHERE id_annonce IN (' . implode(',', array_column($annonces, 'id')) . ')';
try {
$req = $bdd->prepare($sql);
$req->execute();
$res = $req->fetchAll(PDO::FETCH_GROUP);
} catch (Exception $e) {
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
}
function affichageAnnonce($id_cat){
global $bdd;
$annonces = getAnnonceCategorie($id_cat);
$images = getPhotosAnnonces($annonces);
$res = [];
foreach ($annonces as $R) {
$res[$R['id']] = $R;
$imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL;
if(!empty($imgs)){
foreach($imgs as $I){
$res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null;
}
}else{
$res[$R['id']]['images'] = null;
}
}
return $res;
}
Et la page d'affichage.php dans le dossier principales
<?php
include "../cnx.php";
include "../control/cmdaffichage.php";
include "../header.php";
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
//On récupère le nombre d'enregistrements
$count= "SELECT COUNT(A.id) AS cpt
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
WHERE A.id_categorie = $id_cat
OR C.id_parent=$id_cat";
echo $count;
var_dump($count);
$stmt= $bdd->prepare($count);
$stmt->execute();
$tstmt=$stmt->fetchAll();
echo $tstmt;
var_dump($tstmt);
//Pagination
$page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1;
$nbr_elements_par_page=5;
$nbre_de_pages=ceil($tstmt[0]["cpt"]/$nbr_elements_par_page);
$debut=($page-1)*$nbr_elements_par_page;
//On récupére les annonces
?>
<!DOCTYPE html>
<html lang="fr">
<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>Document</title>
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<div class="conteneur-annonce">
<div class="tri">
<span>trier</span>
<?php if(($id_cat==1) || ($id_cat==5) || ($id_cat >=101 && $id_cat <=106) || ($id_cat >=501 && $id_cat <=504))
{
echo "
<select onchange='trier(this.value)' id='prix-superficie'>
<option value=''>Default</option>
<option value='price|1'>Prix croissants </option>
<option value='price|-1'>Prix décroissants</option>
<option value='superficie|1'>Surface croissantes </option>
<option value='superficie|-1'>Surface décroissantes </option>
</select>";
} else{
echo "
<select onchange='trier(this.value)' id='prix-superficie'>
<option value=''>Default</option>
<option value='price|1'>Prix croissants </option>
<option value='price|-1'>Prix décroissants</option>
</select>";
}
?>
</div>
<p class="toutes">
<?php
if(isset($_GET['id'])){
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
$anouncement = affichageAnnonce($id_cat);
foreach ($anouncement as $a) {
$id= $a['id'];
$images = !empty($a['images']) ? $a['images'] : ['no_image.png']; // array
if (!empty($images)) {
//boucle sur les images
echo'<div class="container">';
echo ' <div class="slider" >';
foreach ($images as $img) {
echo '<img class ="active" style="width:240px; height:170px;" src="/' . $img . '">';
}
echo "</div>"; // fin div slider .
}
echo '<div class= "informations">';
echo '<a class="maquette" href="/principales/single.php?id='.$id.'" > ';
echo "<p class='title'>" . $a['titre'] . "</p>";
echo "<p class='category'><i class='fa fa-list-alt'></i> " . $a['CATEGORIE'] . "</p>";
echo "<p class='price'><span class='mru'>".$lang['prix']." :</span><span class='valeur'>".$a['prix']."</span></p>";
if(($id_cat==1) || ($id_cat==5) || ($id_cat >=101 && $id_cat <=106) || ($id_cat >=501 && $id_cat <=504)){
echo "<p class='superficie'> <i class='fas fa-chart-area'></i> <span class='valeur'>".$a['superficie']."</span> ". $a['unite'] . "</p>";
}
echo "<p class='date'> <i class='fa fa-calendar'></i> " . $a['created_date'] . "</p>";
echo'</a>';
echo"</div>"; //fin div informations
echo "</div>"; // fin div container
}
}
?>
</div>
<?php
echo"<div class='pagination'>";
for($i=1;$i<=$nbre_de_pages;$i++){
echo "<a class='paginationlien' href='?page=$i'>$i</a>" ;
}
echo"</div>"; //fin div pagination
?>
Il serait bien de respecter la même "forme" pour ton code ...
En t'inspirant des codes que je t'ai déjà fourni et donc.. en créant des fonctions...
Donc :
Dans la page des fonctions: cmdaffichage.php
Et dans la page affichage.php
En t'inspirant des codes que je t'ai déjà fourni et donc.. en créant des fonctions...
Donc :
Dans la page des fonctions: cmdaffichage.php
function getNbAnnonceByCategorie($id_cat){
global $bdd;
$sql= "SELECT COUNT(A.id) AS cpt
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
WHERE A.id_categorie = :id_cat
OR C.id_parent = :id_cat ";
$datas = array(':id_cat'=>$id_cat);
try {
$req = $bdd->prepare($sql);
$req->execute($datas);
$res = $req->fetchColumn(); //https://www.php.net/manual/fr/pdostatement.fetchcolumn.php
} catch (Exception $e) {
echo "<br>Erreur dans la requête " . $sql . '<br>';
echo $e->getMessage();
var_dump($datas);
}
// le temps des tests pour voir le résultat
return $res;
}
Et dans la page affichage.php
<?php include "../cnx.php"; include "../control/cmdaffichage.php"; include "../header.php"; $id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null; $NB = getNbAnnonceByCategorie($id_cat); //Pagination $page = (empty($_GET["page"]) ? intval($_GET["page"]) : 1; $nbr_elements_par_page = 5; $nbre_de_pages = ceil($NB/$nbr_elements_par_page); $debut=($page-1)*$nbr_elements_par_page;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Par exemple, je clique sur le menu et tombe sur la première page. Son Url: http://projetsite/principales/affichage.php?id=1
==>En cliquant sur la page 1 par exemple, il ne reste que le header et le footer. L'annonce a disparu. Même chose pour les autres page. Pour la page 1, L'url est le suivant:
http://projetsite/principales/affichage.php?page=1
Est-ce à cause de cette fonction:
==>En cliquant sur la page 1 par exemple, il ne reste que le header et le footer. L'annonce a disparu. Même chose pour les autres page. Pour la page 1, L'url est le suivant:
http://projetsite/principales/affichage.php?page=1
Est-ce à cause de cette fonction:
function getAnnonceCategorie($id_cat){
global $bdd;
$sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr';
$page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1;
$nbr_elements_par_page=5;
$debut=($page-1)*$nbr_elements_par_page;
$sql = ' SELECT A.*
,C.nom_'.$sql_lang.' AS CATEGORIE
,V.ville_'.$sql_lang.' AS VILLE
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
LEFT JOIN villes V ON V.id = A.id_ville
WHERE A.id_categorie = :id_cat
OR C.id_parent = :id_cat
ORDER BY A.created_date DESC
LIMIT '.$debut.','.$nbr_elements_par_page.' ';
Tu es sûr d'avoir tout ton code ?
Je ne t'ai donné que le début de ton fichier j'ai pas remis tout ce qu'il y avait en dessous...
Je ne t'ai donné que le début de ton fichier j'ai pas remis tout ce qu'il y avait en dessous...
Je pense que j'ai tout le code. Dans la page cmdaffichage:
//pour afficher les categories du Menu
function getAnnonceCategorie($id_cat){
global $bdd;
$sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr';
$page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1;
$nbr_elements_par_page=5;
$debut=($page-1)*$nbr_elements_par_page;
$sql = ' SELECT A.*
,C.nom_'.$sql_lang.' AS CATEGORIE
,V.ville_'.$sql_lang.' AS VILLE
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
LEFT JOIN villes V ON V.id = A.id_ville
WHERE A.id_categorie = :id_cat
OR C.id_parent = :id_cat
ORDER BY A.created_date DESC
LIMIT '.$debut.','.$nbr_elements_par_page.' ';
try {
$req = $bdd->prepare($sql);
$req->execute( array('id_cat'=>$id_cat) );
$res = $req->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
}
function getPhotosAnnonces($annonces) {
global $bdd;
$sql = 'SELECT id_annonce,filepath as IMG
FROM images_annonces
WHERE id_annonce IN (' . implode(',', array_column($annonces, 'id')) . ')';
try {
$req = $bdd->prepare($sql);
$req->execute();
$res = $req->fetchAll(PDO::FETCH_GROUP);
} catch (Exception $e) {
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
}
function affichageAnnonce($id_cat){
global $bdd;
$annonces = getAnnonceCategorie($id_cat);
$images = getPhotosAnnonces($annonces);
$res = [];
foreach ($annonces as $R) {
$res[$R['id']] = $R;
$imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL;
if(!empty($imgs)){
foreach($imgs as $I){
$res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null;
}
}else{
$res[$R['id']]['images'] = null;
}
}
return $res;
}
//Pour compter le nombre d'annonce dans la page d'affichage
function getNbAnnonceByCategorie($id_cat){
global $bdd;
$sql= "SELECT COUNT(A.id) AS cpt
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
WHERE A.id_categorie = :id_cat
OR C.id_parent = :id_cat ";
$datas = array(':id_cat'=>$id_cat);
try {
$req = $bdd->prepare($sql);
$req->execute($datas);
$res = $req->fetchColumn(); //https://www.php.net/manual/fr/pdostatement.fetchcolumn.php
} catch (Exception $e) {
echo "<br>Erreur dans la requête " . $sql . '<br>';
echo $e->getMessage();
var_dump($datas);
}
// le temps des tests pour voir le résultat
return $res;
}
Et la page affichage.php:
<?php
include "../cnx.php";
include "../control/cmdaffichage.php";
include "../header.php";
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
$NB = getNbAnnonceByCategorie($id_cat);
//Pagination
$page = (!empty($_GET["page"])) ? intval($_GET["page"]) : 1;
$nbr_elements_par_page= 5;
$nbre_de_pages = ceil($NB/$nbr_elements_par_page);
$debut=($page-1)*$nbr_elements_par_page;
?>
<!DOCTYPE html>
<html lang="fr">
<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>Document</title>
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<div class="conteneur-annonce">
<div class="tri">
<span>trier</span>
<?php if(($id_cat==1) || ($id_cat==5) || ($id_cat >=101 && $id_cat <=106) || ($id_cat >=501 && $id_cat <=504))
{
echo "
<select onchange='trier(this.value)' id='prix-superficie'>
<option value=''>Default</option>
<option value='price|1'>Prix croissants </option>
<option value='price|-1'>Prix décroissants</option>
<option value='superficie|1'>Surface croissantes </option>
<option value='superficie|-1'>Surface décroissantes </option>
</select>";
} else{
echo "
<select onchange='trier(this.value)' id='prix-superficie'>
<option value=''>Default</option>
<option value='price|1'>Prix croissants </option>
<option value='price|-1'>Prix décroissants</option>
</select>";
}
?>
</div>
<p class="toutes">
<?php
if(isset($_GET['id'])){
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
$anouncement = affichageAnnonce($id_cat);
foreach ($anouncement as $a) {
$id= $a['id'];
$images = !empty($a['images']) ? $a['images'] : ['no_image.png']; // array
if (!empty($images)) {
//boucle sur les images
echo'<div class="container">';
echo ' <div class="slider" >';
foreach ($images as $img) {
echo '<img class ="active" style="width:240px; height:170px;" src="/' . $img . '">';
}
echo "</div>"; // fin div slider .
}
echo '<div class= "informations">';
echo '<a class="maquette" href="/principales/single.php?id='.$id.'" > ';
echo "<p class='title'>" . $a['titre'] . "</p>";
echo "<p class='category'><i class='fa fa-list-alt'></i> " . $a['CATEGORIE'] . "</p>";
echo "<p class='price'><span class='mru'>".$lang['prix']." :</span><span class='valeur'>".$a['prix']."</span></p>";
if(($id_cat==1) || ($id_cat==5) || ($id_cat >=101 && $id_cat <=106) || ($id_cat >=501 && $id_cat <=504)){
echo "<p class='superficie'> <i class='fas fa-chart-area'></i> <span class='valeur'>".$a['superficie']."</span> ". $a['unite'] . "</p>";
}
echo "<p class='date'> <i class='fa fa-calendar'></i> " . $a['created_date'] . "</p>";
echo'</a>';
echo"</div>"; //fin div informations
echo "</div>"; // fin div container
}
}//fin accolade isset
?>
</div>
<?php
echo"<div class='pagination'>";
for($i=1;$i<=$nbre_de_pages;$i++){
echo "<a class='paginationlien' href='?page=$i'>$i</a>" ;
}
echo"</div>"; //fin div pagination
?>
Essayes ça et dis nous ce que ça t'affiche
<?php
//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE
require_once "../cnx.php";
require_once "../control/cmdaffichage.php";
require_once "../header.php";
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
$NB = getNbAnnonceByCategorie($id_cat);
$anouncement = affichageAnnonce($id_cat);
//Pagination
$page = (!empty($_GET["page"])) ? intval($_GET["page"]) : 1;
$nbr_elements_par_page= 5;
$nbre_de_pages = ceil($NB/$nbr_elements_par_page);
$debut=($page-1)*$nbr_elements_par_page;
//--- DEBUG -----//
function debug($var,$title=""){
echo "<div class='debug'><br>".$title."</br>";
echo "<pre>";
var_dump($var);
echo "</pre>";
echo "<hr></div>";
}
debug($id_cat,"id_cat");
debug($NB,"NB");
debug($nbre_de_pages,"nbre_de_pages");
debug($debut,"debut");
debug($page,"page");
debug($anouncement,"anouncement");
//---- FIN DU DEBUG ----------//
?>
<!DOCTYPE html>
<html lang="fr">
<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>Document</title>
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<div class="conteneur-annonce">
<div class="tri">
<span>trier</span>
<?php
if( $id_cat==1 || $id_cat==5 || ($id_cat >=101 && $id_cat <=106) || ($id_cat >=501 && $id_cat <=504)) {
echo "
<select onchange='trier(this.value)' id='prix-superficie'>
<option value=''>Default</option>
<option value='price|1'>Prix croissants </option>
<option value='price|-1'>Prix décroissants</option>
<option value='superficie|1'>Surface croissantes </option>
<option value='superficie|-1'>Surface décroissantes </option>
</select>";
} else{
echo "
<select onchange='trier(this.value)' id='prix-superficie'>
<option value=''>Default</option>
<option value='price|1'>Prix croissants </option>
<option value='price|-1'>Prix décroissants</option>
</select>";
}
?>
</div>
<p class="toutes">
<?php
if($id_cat){
foreach ($anouncement as $a) {
$id= $a['id'];
$images = !empty($a['images']) ? $a['images'] : ['no_image.png']; // array
//boucle sur les images
echo'<div class="container">';
if (!empty($images)) {
echo ' <div class="slider" >';
foreach ($images as $img) {
echo '<img class ="active" style="width:240px; height:170px;" src="/' . $img . '">';
}
echo "</div>"; // fin div slider .
}
echo '<div class= "informations">';
echo '<a class="maquette" href="/principales/single.php?id='.$id.'" > ';
echo "<p class='title'>" . $a['titre'] . "</p>";
echo "<p class='category'><i class='fa fa-list-alt'></i> " . $a['CATEGORIE'] . "</p>";
echo "<p class='price'><span class='mru'>".$lang['prix']." :</span><span class='valeur'>".$a['prix']."</span></p>";
if(($id_cat==1) || ($id_cat==5) || ($id_cat >=101 && $id_cat <=106) || ($id_cat >=501 && $id_cat <=504)){
echo "<p class='superficie'> <i class='fas fa-chart-area'></i> <span class='valeur'>".$a['superficie']."</span> ". $a['unite'] . "</p>";
}
echo "<p class='date'> <i class='fa fa-calendar'></i> " . $a['created_date'] . "</p>";
echo'</a>';
echo"</div>"; //fin div informations
echo "</div>"; // fin div container
}
}//fin accolade isset
else{
echo "id_cat est vide !";
}
?>
</div>
<?php
echo"<div class='pagination'>";
for($i=1;$i<=$nbre_de_pages;$i++){
echo "<a class='paginationlien' href='?page=$i'>$i</a>" ;
}
echo"</div>"; //fin div pagination
?>
Voici le résultat si on clique sur la page 1:
Erreur dans la requête SELECT id_annonce,filepath as IMG FROM images_annonces WHERE id_annonce IN ()
Notice: Undefined variable: res in C:\wamp64\www\Projetsite\control\cmdaffichage.php on line 204
Il s'agit de cette fonction:
Suite des erreurs:
id_cat
C:\wamp64\www\Projetsite\principales\affichage.php:30:null
NB
C:\wamp64\www\Projetsite\principales\affichage.php:30:string '0' (length=1)
nbre_de_pages
C:\wamp64\www\Projetsite\principales\affichage.php:30:float 0
debut
C:\wamp64\www\Projetsite\principales\affichage.php:30:int 0
page
C:\wamp64\www\Projetsite\principales\affichage.php:30:int 1
anouncement
C:\wamp64\www\Projetsite\principales\affichage.php:30:
array (size=0)
empty
id_cat est vide !
Erreur dans la requête SELECT id_annonce,filepath as IMG FROM images_annonces WHERE id_annonce IN ()
Notice: Undefined variable: res in C:\wamp64\www\Projetsite\control\cmdaffichage.php on line 204
Il s'agit de cette fonction:
function getPhotosAnnonces($annonces) {
global $bdd;
$sql = 'SELECT id_annonce,filepath as IMG
FROM images_annonces
WHERE id_annonce IN (' . implode(',', array_column($annonces, 'id')) . ')';
try {
$req = $bdd->prepare($sql);
$req->execute();
$res = $req->fetchAll(PDO::FETCH_GROUP);
} catch (Exception $e) {
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
}
Suite des erreurs:
id_cat
C:\wamp64\www\Projetsite\principales\affichage.php:30:null
NB
C:\wamp64\www\Projetsite\principales\affichage.php:30:string '0' (length=1)
nbre_de_pages
C:\wamp64\www\Projetsite\principales\affichage.php:30:float 0
debut
C:\wamp64\www\Projetsite\principales\affichage.php:30:int 0
page
C:\wamp64\www\Projetsite\principales\affichage.php:30:int 1
anouncement
C:\wamp64\www\Projetsite\principales\affichage.php:30:
array (size=0)
empty
id_cat est vide !
Quand on clique sur une catégorie dans le menu (immobilier par exemple), l'url est le suivant: http://projetsite/principales/affichage.php?id=1
Mais en cliquant sur une page 1, ou 2, 3.. l'url: http://projetsite/principales/affichage.php?page=2
Et si id_cat est vide, peut être que l'erreur dans cette ligne:
Mais en cliquant sur une page 1, ou 2, 3.. l'url: http://projetsite/principales/affichage.php?page=2
Et si id_cat est vide, peut être que l'erreur dans cette ligne:
$id_cat = !empty($_GET['id']) ? trim($_GET['id']) : null;
Tu avais raison, l'erreur était dans le lien. Il fallait ajouter l'id de la catégorie:
Et pour la barre de recherche dans une autre page, j'ai fait ainsi et ça marché:
Merci encore Jordane :)
echo "<a class='paginationlien' href='?id=$id_cat&page=$i'>$i</a>" ;
Et pour la barre de recherche dans une autre page, j'ai fait ainsi et ça marché:
echo "<a class='paginationlien' href='?q=$q&categorie=$categorie&villes=$villes&page=$i'>$i</a>" ;
Merci encore Jordane :)