IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Problème de pagination avec tableau


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut [SQL] Problème de pagination avec tableau
    Bonjour,
    J'ai un moteur de recherche avec plusieurs listes codées comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // --- critère : rubrique
     $tb_blocs["$code_bloc"].= '<td align="center">';
      $tb_blocs["$code_bloc"] .='<select name="selection[code_rub]" size="1">';
      $tb_blocs["$code_bloc"] .='<option value="">Toutes' ;
     reset($tb_rubrique);
     while (list($cle, $info) = each($tb_rubrique)) {
      $tb_blocs["$code_bloc"] .= '<option value="'. $info['code'] . '">';
      $tb_blocs["$code_bloc"] .= $info['libel'] . '</option>';
     }
     $tb_blocs["$code_bloc"] .= '</select></td></tr>';
    Mon moteur fonctionne correctement mais si je dois avoir plusieurs pages alors les liens ne marchent pas a cause de mauvaise variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // --- page suivante
      if ($page < $nb_pages) {
     $params = array(
       'code_rub'=>$selection['code_rub'],
       'code_typ'=>$selection['code_typ'],
       'code_vil'=>$selection['code_vil']);
     
      $url = $agence_xl->creation_url($params);
         $contenu .= '&nbsp;&nbsp;<a href=" '
          . $url . '">' . $tr_page_suivante . '</a>';
      }
    Si je ne choisis aucune valeur et que je laisse les liste sur la valeur "toutes" cela me donne tous les produits et un lien vers la 2 eme page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /index.php?code_rub=&code_typ=&code_vil=&page=2
    et cela ne marche pas.

    Si je choisis une rubrique cela me met comme lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index.php?code_rub=10&code_typ=&code_vil=&page=2
    ma rubrique contient bien une valeur "10" mais les autres non alors cela ne marche pas.

    Quelqu'un voit t-il le probleme ?
    Merci beaucoup

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Mets une value comme -1 pour la valeur "Toutes"

  3. #3
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    cela va changer quoi ? je ne comprends pas...
    merci

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    Est-ce que tu as géré le cas où tu n'as aucune valeur pour code_rub / code_typ et code_vil ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /index.php?code_rub=&code_typ=&code_vil=&page=2
    Je présume que derrière tout ca, tu as des requêtes SQL qui vont faire des recherches dans la DB... Si tu ne passes aucune valeur à ces 3 variables, tes requêtes fonctionnent toujours...?

    Admettons que code_rub = 27, tu devrais avoir un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM truc WHERE id = 27;
    Maintenant, si tu as code_rub = , tu auras:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM truc WHERE id = ;
    (J'extrapole peut-être de trop )

    D'où l'idée de Mr. N de mettre -1 comme value pour les options "Toutes".
    Mais -1 ou valeur vide, il faut tout de même gérer ces cas dans ton script de recherche.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  5. #5
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    en fait dans ma classe la fonction qui recupere les produits gère des conditions comme ceci :
    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
     
     function tableau_produits($params='') {
    .....
    // --- conditions : catégorie
        if (strlen($params['code_rub']) > 0) {
         $c = $params['code_rub'];
          $conditions[] = "and
            $tbl_prd_categories.code_rub like '$c'";
          $conditions[] = "and
            $tbl_produits.prd_id = $tbl_prd_categories.prd_id";
          if (!eregi($tbl_prd_categories, $params['tables'])) {
           $params['tables'] .= ", $tbl_prd_categories";
          }
        }
     
      // --- conditions : type
        if (strlen($params['code_typ']) > 0) {
         $c = $params['code_typ'];
          $conditions[] = "and
            $tbl_prd_categories.code_typ like '$c'";
          $conditions[] = "and
            $tbl_produits.prd_id = $tbl_prd_categories.prd_id";
          if (!eregi($tbl_prd_categories, $params['tables'])) {
           $params['tables'] .= ", $tbl_prd_categories";
          }
        }
     
     // --- conditions : ville
        if (strlen($params['code_vil']) > 0) {
         $c = $params['code_vil'];
          $conditions[] = "and
            $tbl_prd_categories.code_vil like '$c'";
          $conditions[] = "and
            $tbl_produits.prd_id = $tbl_prd_categories.prd_id";
          if (!eregi($tbl_prd_categories, $params['tables'])) {
           $params['tables'] .= ", $tbl_prd_categories";
          }
        }
    et ensuite la requete elle meme selon les conditions si il y'en a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // --- requête SQL : champs et tables utilises
        $cde = 'select ' . $params['champs'];
        $cde .= ' from ' . $params['tables'];
        $cde .= ' where 1';
        // --- requête SQL : ajout des conditions
        for ($i=0; $i<count($conditions); $i++) {
          $cde .= ' ' . $conditions[$i];
        }
    Donc si je laisse sur "toutes" c'est comme si aucune conditions n'etaient transmise donc cela renvoit toute la table.

    Si je selectionne 1 rubrique [code_rub] alors cela me fait le tri selon cette rubrique...
    mon problème est juste pour l'affichage multipages avec le passage de variables en url avec donc des variables en tableaux, c'est ca qui me blqoue en fait...

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Arff J''avais pas tout compris...
    Remplace ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $params = array(
       'code_rub'=>$selection['code_rub'],
       'code_typ'=>$selection['code_typ'],
       'code_vil'=>$selection['code_vil']);
    par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $params = array(
       'selection[code_rub]'=>$selection['code_rub'],
       'selection[code_typ]'=>$selection['code_typ'],
       'selection[code_vil]'=>$selection['code_vil']);

  7. #7
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    ca va pas cela me donne ca comme url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selection[code_rub]=&selection[code_typ]=&selection[code_vil]=&page=2

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    et alors ?

  9. #9
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    alors cela doit ressembler a ceci plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div style="text-align: left;">index.php?code_rub=10&code_typ=20&code_vil=15&page=2</div>

    car j'ai 3 listes de choix, or sie je clique sur "toutes" cela ne me met aucune variable, ou si j'en choisi qu'une cela me met une variable mais comme les deux autres restent vides cela ne marche pas ma pagination.
    Je sais pas si c'est bien expliqué tout ca

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    tu as essayé ce que je t'ai proposé ?

  11. #11
    Membre habitué
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Points : 147
    Points
    147
    Par défaut
    Si tes champs sont des champs numérique je ne vois pas l'utilité d'utilise "LIKE" dans tes requetes SQL.

    J'avou ke j'ai pas tres bien saisi.
    Nicolas BUI

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2008, 01h55
  2. [SQL] problème de selection avec la fonction in();
    Par karimphp dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/10/2007, 01h12
  3. [SQL] Problème de pagination
    Par lenstoi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/09/2007, 19h41
  4. Problème de pagination avec un GridView
    Par Perceuse-Killer dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/02/2007, 14h30
  5. [SQL] Problème de résultat avec une requête
    Par raptorman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/01/2006, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo