Bonjour à tous!!
Je fais face à un souci dans mon script, c'est au niveau de la requête SQL où se trouve le problème,, besoin d'un éclaircisseement. J'ai deux fichiers, un fichier Model_stagiaire.php et un fichier form_stagiaire.php
Voici le script pour le fichier Model_stagiaire.php

     require_once('../model/Cnx.php');
     class Model_Stagiaire extends Cnx
     {
          private $nom;
          private $data;
          private $offset;
          private $size;
          public function getAll_Stag($nom, $size, $offset){
                $pdo = $this->connect();
                $this->data = [];
                $this->nom = $nom;
                $this->size = $size;
                $this->offset = $offset;

               $req = "SELECT * FROM tbl_stagiaire_sta AS S, tbl_filiere_fil AS F 
                              WHERE F.fil_id = S.fil_id AND
                             (S.sta_nom LIKE '%".$this->nom."%' 
                              OR S.sta_prenom LIKE '%".$this->nom."%')
                              LIMIT '".$this->size."' OFFSET '".$this->offset."' ";
               $res = $pdo->query($req);
               $this->data = $res->fetchAll(PDO::FETCH_ASSOC);
               return $this->data;
          }
       }

Voici le script pour le fichier form_stagiaire.php

   require_once('../model/Model_Stagiaire.php');
   $stagiaire = new Model_Stagiaire();

         $lines = $stagiaire->getAll_filiere();

         $nom = isset($_GET['nom'])?$_GET['nom']:'';
         $filiere = isset($_GET['filiere'])?$_GET['filiere']:0;

         $size = isset($_GET['size'])?$_GET['size']:5;
         $page = isset($_GET['page'])?$_GET['page']:1;
         $offset = ($page - 1) * $size;

         $rows = $stagiaire->getAll_Stag($nom, $size, $offset);

l'idée est de réaliser une liste de stagiaire qui sera paginée et qui sera affichée dans le fichier form_stagiaire.php

Malheureusement, le script me renvoit l'erreur suivante:

  Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ''5' OFFSET '-5'' à la ligne 3 in 

Par contre, quand je retire LIMIT et OFFSET, le script fonctionne convenablement

2 réponses


Merci pour ton intervention cher JRcode, sauf que je suis toujours perdu. J'ai eu accès au lien que tu m'as suggéré, j'ai lu l'article et je pense avoir bien respecté la synthaxe malheureusement je viens d'obtenir la même erreur.
la requête ci-dessous est celle que j'utilise dans mon script, sauf qu'elle me retourne la même erreur lorsque j'affecte les valeurs dans les variables:

Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ''5' OFFSET '0'' à la ligne 2

par contre, losque je tape cette requete en phpMyAdmin à travers l'onglet sql, elle marche correctement.

SELECT * FROM tbl_stagiaire_sta INNER JOIN tbl_filiere_fil  ON tbl_stagiaire_sta.fil_id = tbl_filiere_fil.fil_id
WHERE sta_nom LIKE '%o%' OR sta_prenom LIKE '%o%'
LIMIT 5 OFFSET 0

S'il vous plaît, ne vous sentez pas fatiguer de moi, aidez-moi, j'ai besoin de comprendre le problème

Merci JRcode, je m'y mets toute de suite