Bonjour,

J'essaie de faire une pagination sur le résultat d'une recherche (qui fonctionne bien sur la totalité) qui me renvoie une erreur PDO à la ligne 40 si vous pouvez me dire ce qui ne va pas, je vous remercie de votre aide.

Mon code n'est pas très long.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
    include 'main-functions.php';
    /////////////////////////////// DEBUT RECHERCHE //////////////////////////////
    function recherche_par_mots_cles($search){
 
        global $connexion;
    // 
        $where = "";
        $search = preg_split('/[\s\-]/' ,$search);
        $count_keywords = count($search);
        foreach ($search as $key => $searches){
            $where .= "article LIKE '%$searches%' OR description LIKE '%$searches%'";
            if ($key != ($count_keywords-1)){
                $where .= " AND ";
            }
        }
 
        $query = mysqli_query($connexion, "SELECT * FROM articles WHERE $where")or exit(mysqli_error($connexion));
        $rows = mysqli_num_rows($query);
        if ($rows){
            while ($article = mysqli_fetch_assoc($query))
            {
             echo "<div class=\"row\">
                        <div class=\"col l12 m12 s12\">
                            <a href=index.php?page=articles&id=".$article['id'].">".$article['article']."</a>
                        <br>
                            <u>Description:</u><br>
                            ".$article['description']."
                        <br>
                                Prix: ".$article['prix']."€
                        </div>
                    </div>";
            }
    /////////////////////////////// DEBUT PAGINATION //////////////////////////////
            global $bdd;
 
            //Nombre de pages à afficher
            $parPage = (int) 3;
            //Requête simple pour compter les entrées
            $req = $bdd->query("SELECT COUNT(*) as nb_billets FROM articles WHERE article LIKE '$where' OR description LIKE '$where'");
            $resultat = $req->fetch();
            //nb de billets dans la table
            $totalBillets = $resultat['nb_billets'];
 
            //Nb pages à afficher à l'arrondi
            $nbPage = ceil($totalBillets/$parPage);
 
            //Condition pour voir sur quelle page on se trouve et si c'est bien un chiffre (==1 vérifie bien que c'est un chiffre)
            if(isset($_GET['numeroPage']) && !empty($_GET['numeroPage']) && ctype_digit($_GET['numeroPage'])==1)
            {	//Si le numéro de page n'est pas supérieur au nombre de pages existantes
                if ($_GET['numeroPage']>$nbPage)
                {
                    $pageCourrante = $nbPage;
                }
                else
                {
                    $pageCourrante = $_GET['numeroPage'];
                }
            }
            else 
            {	//Sinon la page courrante = 1
                $pageCourrante = (int)1;
            }
            $premierBilletDeLaPage = ($pageCourrante-1)*$parPage;
    /////////////////////////////// FIN PAGINATION //////////////////////////////
 
    ///////////////// DEBUT AFFICHAGE DES NUMEROS DE PAGES /////////////////////
            include('pagination.inc.php');
    ///////////////// FIN AFFICHAGE DES NUMEROS DE PAGES /////////////////////
 
        }else{
            echo "<p>Pas de résultat !</p>";
        }
    }
    /////////////////////////////// FIN RECHERCHE //////////////////////////////
    ?>