Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2006, 17h28   #1
Membre éclairé
 
Avatar de guy2004
 
Inscription : juillet 2004
Messages : 781
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 781
Points : 310
Points : 310
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 :
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 :
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 :
/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 :
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
guy2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 18h58   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Mets une value comme -1 pour la valeur "Toutes"
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 19h58   #3
Membre éclairé
 
Avatar de guy2004
 
Inscription : juillet 2004
Messages : 781
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 781
Points : 310
Points : 310
cela va changer quoi ? je ne comprends pas...
merci
guy2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 20h35   #4
Membre expérimenté
 
Développeur Web
Inscription : 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 : 538
Points : 538
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 :
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 :
1
2
 
SELECT * FROM truc WHERE id = 27;
Maintenant, si tu as code_rub = , tu auras:

Code :
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.
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 21h33   #5
Membre éclairé
 
Avatar de guy2004
 
Inscription : juillet 2004
Messages : 781
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 781
Points : 310
Points : 310
en fait dans ma classe la fonction qui recupere les produits gère des conditions comme ceci :
Code :
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 :
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...
guy2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 09h20   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Arff J''avais pas tout compris...
Remplace ceci :
Code :
1
2
3
4
$params = array(
   'code_rub'=>$selection['code_rub'],
   'code_typ'=>$selection['code_typ'],
   'code_vil'=>$selection['code_vil']);
par ceci :
Code :
1
2
3
4
$params = array(
   'selection[code_rub]'=>$selection['code_rub'],
   'selection[code_typ]'=>$selection['code_typ'],
   'selection[code_vil]'=>$selection['code_vil']);
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 13h43   #7
Membre éclairé
 
Avatar de guy2004
 
Inscription : juillet 2004
Messages : 781
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 781
Points : 310
Points : 310
ca va pas cela me donne ca comme url :
Code :
selection[code_rub]=&selection[code_typ]=&selection[code_vil]=&page=2
guy2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 14h58   #8
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
et alors ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 19h52   #9
Membre éclairé
 
Avatar de guy2004
 
Inscription : juillet 2004
Messages : 781
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 781
Points : 310
Points : 310
alors cela doit ressembler a ceci plutot :
Code :
1
2
 
[LEFT]index.php?code_rub=10&code_typ=20&code_vil=15&page=2
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 [/LEFT]
guy2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 20h46   #10
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
tu as essayé ce que je t'ai proposé ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h16   #11
Membre habitué
 
Homme Nicolas BUI
Consultant CRM
Inscription : mai 2006
Messages : 99
Détails du profil
Informations personnelles :
Nom : Homme Nicolas BUI
Âge : 35
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 : 145
Points : 145
Envoyer un message via Skype™ à nicolas.bui
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 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h17.


 
 
 
 
Partenaires

Hébergement Web