Mes fonctions marchent bien ainsi que l'affichage des annonces. Pour la pagination, j'ai juste ajouté les variables $nbPage $parpage et $starter dans ma fonction getAnnonces (de la page cmdaffichage.php), et dans la page d'accueil, j'ai créé une requête $nbDePage.
J'obtiens plein d'erreurs:
Dans la page des commandes
.Undefined index: page in C
.Undefined variable: parPage in
Dans la page d'accueil:
.Undefined variable: parPage in
.Division by zero in
...
Voici la page des fonctions:
Code : Tout sélectionner
function getAnnnonces(){
global $bdd;
$sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr';
$nbPage= $_GET['page'];
$parpage= 2;
$starter= ($nbPage - 1)* $parPage;
$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
ORDER BY A.created_date DESC
LIMIT '.$starter.', '.$parpage.' ';
try {
$req = $bdd->prepare($sql);
$req->execute();
$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 getImagesAnnonces(){
global $bdd;
$sql = "SELECT id_annonce,filepath as IMG
FROM images_annonces
ORDER BY id_annonce DESC";
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 afficherAnnonce(){
$annonces = getAnnnonces();
$images = getImagesAnnonces();
$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;
}
Code : Tout sélectionner
<?
$anouncement= afficherAnnonce();
php foreach ($anouncement as $anounce) {
$id= $anounce['id'];
echo '<div class="annoncepubs" id= "annonce-'.$anounce['id'].'" > ';
$images = !empty($anounce['images']) ? $anounce['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:135px;" src="' . $img . '">';
}
echo "</div>"; // fin div slider .
echo "</div>"; // fin div container
}
echo '<div class= "informations">';
echo '<a class="maquette" href="single.php?id='.$id.'" > ';
echo "<span class='title'>" . $anounce['titre'] . "</span>";
echo "<span class='category'>" . $anounce['CATEGORIE'] . "</span>";
echo "<span class='price'>" . $anounce['prix'] . "</span>";
echo "<span class='date'>" . $anounce['created_date'] . "</span>";
echo"</div>"; //fin div informations
echo "</div> </a>"; // fin div annoncepubs
}
$nbDePage= $bdd->query('SELECT COUNT(*) From annonces') ->fetchColumn();
for ($i=1; $i <= ceil($nbDePage /$parPage); $i++){
if ($_GET['page']== $i){
echo '<a class="active" href="?page='.$i.'">'.$i."</a>";
}else{
echo '<a href="?page='.$i.'">'.$i."</a>";
}
}
?>