Utiliser limit pour pagination

Résolu
rakizm Messages postés 80 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 16 février 2008 - 21 juil. 2006 à 15:24
rakizm Messages postés 80 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 16 février 2008 - 21 juil. 2006 à 16:30
je ne savais pas où mettre cette question, vous m'exuseraient si c'est pas le bon endroit.

bonjour  à tous :)  je vous expose mon pb:

cette fonction va chercher les utilisateurs d'un meme site et pour chaque utilisateur elle va chercher les "rqs" qu'il a fait. donc le résultat final est une liste de "rqs" appartenant à plusieurs utilisateurs.
je voudrai appliquer un LIMIT sur le résultat final!!  comment faire

nb: c'est pour une pagination

  [php]//fonction pour obtenir les requetes faites par les utilisateurs d'un meme site     
    function get_rqs($date,$subject,$min){
        $this->rqs = array();
        $users_dialog = array();
        $db = new DB_Sql();//objet de connection à la base
        $db->Database = DATABASE_NAME_APPS;
        $db->User     = DATABASE_USER_APPS;
        $db->Password = DATABASE_PASSWORD_APPS;
        $db->Host     = DATABASE_HOST_APPS;
        $sSQL = "SELECT id_user as id_user ".
                "FROM Emc_user ".
                "WHERE id_site = ".$this->id_site ;//requete qui cherche les utilisateurs d'un meme site
                    
        $db->query($sSQL);
        $next_record = $db->next_record();
        while($next_record){
            $u=$db->f("id_user");
            //echo $u;
            array_push($users_dialog,$u);//tableau contenant les utilisateurs
            $next_record = $db->next_record();
        }
        foreach($users_dialog as $creator_user){
            $db = new DB_Sql();//objet de connection
            $db->Database = DATABASE_NAME;
            $db->User     = DATABASE_USER;
            $db->Password = DATABASE_PASSWORD;
            $db->Host     = DATABASE_HOST;
            $sSQL = "SELECT id_rqs as id_rqs ".
                "FROM km_request ";//requete qui cherche les request de chaque utilisateur
                if (($date=="") and ($subject==""))
                    {$sSQL.="  WHERE rqs_creator_user = ".$creator_user ;}
                
                if (($date=="") and ($subject!==""))
                    {$sSQL.="  WHERE rqs_subject LIKE '%".$subject."%' AND rqs_creator_user = ".$creator_user ;}
                
                if (($date!=="") and ($subject==""))
                    {$sSQL.="  WHERE rqs_creation_date >='".$date." 00:00:00'  AND rqs_creator_user = ".$creator_user ;}
                
                if (($date!=="") and ($subject!==""))
                    {$sSQL.="  WHERE rqs_creation_date >='".$date." 00:00:00' AND rqs_subject LIKE '%".$subject."%' AND rqs_creator_user = ".$creator_user ;}    
                if ($min)    
                    {$sSQL.=" LIMIT ".$min.",15 ";}
            echo ($sSQL);
            $db->query($sSQL);
            $next_record = $db->next_record();
            while($next_record){
                $u=$db->f("id_rqs");
                //echo $u;
                array_push($this->rqs,$u);//tableau contenant toutes les requests
                $next_record = $db->next_record();
            }
        }        
    }/php
ainsi fait ça ne marche pas parceque j'applique le LIMIT "n" fois où "n" est le nombre d'utilisateurs d'un meme site.

svp aidez moi :)

3 réponses

rakizm Messages postés 80 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 16 février 2008
21 juil. 2006 à 16:28
et voilà la solution

<?
//fonction pour obtenir les requetes faites par les utilisateurs d'un meme site    
    function get_rqs($date,$subject,$min){
        $this->rqs=array();
        $users_dialog = array();
        $db = new DB_Sql();
        $db->Database = DATABASE_NAME_APPS;
        $db->User     = DATABASE_USER_APPS;
        $db->Password = DATABASE_PASSWORD_APPS;
        $db->Host     = DATABASE_HOST_APPS;
        $sSQL = "SELECT id_user as id_user ".
                "FROM Emc_user ".
                "WHERE id_site = ".$this->id_site ;
                   
        $db->query($sSQL);
        $next_record = $db->next_record();
        while($next_record){
            $u=$db->f("id_user");
            //echo $u;
            array_push($users_dialog,$u);
            $next_record = $db->next_record();
        }
        $users_dialog=implode(",",($users_dialog));
        $db = new DB_Sql();
        $db->Database = DATABASE_NAME;
        $db->User     = DATABASE_USER;
        $db->Password = DATABASE_PASSWORD;
        $db->Host     = DATABASE_HOST;
        $sSQL = "SELECT id_rqs as id_rqs ".
                "FROM km_request WHERE rqs_creator_user IN ($users_dialog)  ";
                if (($date=="") and ($subject==""))
                    {$sSQL.="";}
               
                if (($date=="") and ($subject!==""))
                    {$sSQL.="  AND rqs_subject LIKE '%".$subject;}
               
                if (($date!=="") and ($subject==""))
                    {$sSQL.="  AND rqs_creation_date >='".$date." 00:00:00'";}
               
                if (($date!=="") and ($subject!==""))
                    {$sSQL.="  AND rqs_creation_date >='".$date." 00:00:00' AND rqs_subject LIKE '%".$subject;}   
                if ($min!=='')   
                    {$sSQL.=" LIMIT ".$min.",15 ";}
            //echo ($sSQL);
            $db->query($sSQL);
            $next_record = $db->next_record();
            while($next_record){
            $u=$db->f("id_rqs");
            //echo $u;
            array_push($this->rqs,$u);
            $next_record = $db->next_record();
        }
           
           
               
    }
?>

si vous avez besoin d'eclairsissement n'hésitez pas ;)
rakizm Messages postés 80 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 16 février 2008
21 juil. 2006 à 15:26
j'ai oublié comment insérer du code pour la lisibilité
rakizm Messages postés 80 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 16 février 2008
21 juil. 2006 à 16:30
j'ai juste eu à remplacer ma boucle (celle qui chercait pour chaque utilisateur l' id_rqs)

par un IN $montableau(contenant  les id_user)  ;)  voilàààààààààààààà
Rejoignez-nous