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

Langage PHP Discussion :

[Tableaux] Galere dans l'imbriquation de if...


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Par défaut [Tableaux] Galere dans l'imbriquation de if...
    Bonsoir tout le monde,

    Je fais appel a vous pour un soucis php/sql.
    En faite, je récupère dans une BDD une liste déléments, mais je n'en
    affiche que 5 par 5.
    Jusque la, je n'ai pas eu de difficultés.

    Ce que je n'arrive pas a faire, c'est :
    Si je veux afficher les derniers, jaimerais afficher les 5 derniers, et non pas
    1, 2, 3 ou 4 si il n'y a pas un nombre d'éléments multiple de 5...
    De meme si il retourne vers le début, je voudrais que ca affiche les 5 premiers..
    Et bien entendu, si il y a moins de 5 éléments, les afficher tous...

    J'ai tenté directement dans le code, puis 1h apres je me suis rabattu sur un peu d'algo,
    mais rien a faire ... peut etre que je my prend mal (imbriquation de IF)

    Voila le dernier test que j'ai fait, a premiere vue pour les 5 précédentes ca
    fonctionne, mais pas pour les 5 suivantes
    $nbocc est le nombre total d'occurences.
    $debut est la valeur de début (si $debut = 2, jaffiche a partir de l'id = 2 ...)
    $valprev doit etre la valeur précédente, $valnext la suivante.

    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
     
    if ($debut > 5) {
    	if ($debut - 5 > 0) {
    		$valprev = $debut - 5;
    		if($debut + 5 < $nbocc) {
    		        $valnext = $debut + 5;
    		} else {
    		        $valnext = $nbocc -5;
    		}
    	} else {
    		$valprev = 0;
    		if($debut + 5 < $nbocc) {
    			$valnext = $debut + 5;
    		} else {
    			$valnext = $nbocc -5;
    		}
    	}
    } else {
    	$valprev = 0;
    	if ($nbocc > 5) {
    	        $valnext = $nbocc -5;
    	} else {
    	        $valnext = 0;
    	}
    }
    Je ne sais pas si c'est le meilleur moyen, je ne suis pas du tout expert...
    Merci beaucoup de m'aider!

    Amicalement, DD.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Si tu souhaites ne récupérer que 5 tuples de ta BDD, alors tu as une solution bien plus simple : utilise la clause LIMIT de MySQL.

  3. #3
    Membre confirmé
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Par défaut
    Oui, c'est dailleurs ce que je fais ensuite.
    Admettons que j'ai 11 occurences.
    Au premier affichage, j'aurais "LIMIT 0,5"
    si jappuis sur le bouton "suivant", j'aurais "LIMIT 5,5"
    et pour finir, si je ré-appuie, jaurais "LIMIT 10,5"

    Dans le dernier cas, je n'aurais que 2 occurences qui s'afficheront,
    ce que je veux faire,c'est tester avant si jarrive en bout (dans ce cas)
    ou en début, pour Toujours afficher 5 occurences, ce qui donnerais
    dans ce cas précis "LIMIT 7,5"

    Suis-je plus clair?
    peut etre que LIMIT a plus de possibilités que je ne crois?

    Pour les boutons "début" et "fin", ce n'est pas dur, 0 ou $nbocc -5 (ou 0 si $nbocc < 5) ...

    Amicalement, DD.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Tu peux compter le nombre de tuples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM table;
    Ensuite, tu divises ce nombre (disons $total) par le nombre d'éléments par page ($per_page) et tu compares le résultat avec le numéro de la page courante. Tu peux aussi utiliser ($total - $per_page) comme premier paramètre e LIMIT.

    Cordialement,

  5. #5
    Membre confirmé
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Par défaut
    Bonjour,

    effectivement je n'aurais pas pensé faire comme cela, pas bête

    Je test ca dans la matinée ou en début d'aprem et je post
    mon résultat si jai réussi

  6. #6
    Membre confirmé
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Par défaut
    Voila j'ai réussi
    En faite je suis retourné vers mes IF mais avec plus de méthodologie

    voila mon code:
    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
    if ($nbocc < 6) {
    	$valprev = "0";
    	$valnext = "0";
    	} else {
    		if ($debut < $nbocc -10) {
    		$valnext = $debut + 5;
    		} else {
    		$valnext = $nbocc - 5;
    		}
    		if ($debut < 5) {
    		$valprev = "0";
    		} else {
    		$valprev = $debut -5;
    		}
    	}
    		$valfirst = "0";
    		if ($nbocc < 6) {
    		$vallast = 0;
    		} else {
    		$vallast = $nbocc - 5;
    		}
    C'est fonctionnel on va dire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Recherche dans un tableau imbriqué
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 23/08/2007, 12h46
  2. organisation de tableaux dynamiques dans une page HTML
    Par fallered dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/10/2005, 16h04
  3. [Tableaux] tableau dans un formulaire
    Par Elo13 dans le forum Langage
    Réponses: 4
    Dernier message: 26/09/2005, 17h28
  4. Taille galere dans un tableau
    Par pmithrandir dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/05/2005, 14h06
  5. [D7] Tableaux dynamiques dans un record
    Par bobby-b dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2004, 23h23

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