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 :

comment paginer un objet ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Par défaut comment paginer un objet ?
    Bonjour,
    je suis en train de remplacer une pagination qui fonctionnait très bien avec un array_chunk sur un $tableau...par une grosse bouse avec un compteur $i sur un objet.
    j'avais commencé par indexer les éléments (solution1) mais des valeurs supprimées dans le .xml source me bouffent une partie des résultats.
    donc solution2...mais là je sèche !
    Merci à toute aide
    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
    39
    40
    41
    42
    43
    44
    45
     
    if(!isset($_GET['offset']) or $offset=='' or $offset!="all"){ # si pagination activée
    			# solution 1 : marche mais bouffe la dernière page si trou entre les id (300 à 400)
    			/*
    			for($i=$offset; $i<=($offset+$perPage); ++$i){
    				$temp = $obj->xpath('//data[@number='.$i.']'); # passe de l'objet au tableau
    				if (array_key_exists(0,$temp)){
    					$id = $temp[0]['number'];
    					$slice[(string)$id]=$temp[0]; #remplissage du tableau paginé
    				}
    			}*/
    			#solution2 : foreach avec compteur
    			$i=0;
    			foreach($obj as $v ){
    				if($i<=$perPage){ # pas bien
    					$temp = $v->xpath('//data[@number='.$i.']'); # passe de l'objet au tableau
    					if (array_key_exists(0,$temp)){
    						$id = $temp[0]['number'];
    						$slice[(string)$id]=$temp[0]; #remplissage du tableau paginé
    					}
    				}
    				++$i;				
    			}
    		}else{ $slice = $obj;} # si aucune pagination ( show "all") 
     
                    # construction pagination
    		$temp=$offset+$perPage;
    		if($offset!=0 or $offset="all" or $offset>$this->XoffsetSizof){ # début pagination; ''="all"
    			$html.= '<a href="'.$string.'&offset=0">⏮</a>
    			<a href="'.$string.'&offset='.($offset-$perPage).'">◀</a>';
    		}
    		$html.=' page '.(round($offset/$perPage)+1).'/'.(round($this->XoffsetSizof/$perPage)+1). " ";
    		if($offset <= $this->XoffsetSizof){
    			$html.= '<a href="'.$string.'&offset='.$temp.'">►</a>
    			<a href="'.$string.'&offset='.$this->XoffsetSizof.'">⏭</a>';
    		}
    		$html.= '<a href="'.$string.'&offset=all" title="d&eacute;sactiver la pagination (tout afficher)"> ▽</a>
    		</div>';
    		# construction $out
    		$out['slice']=$slice; #le tableau paginé
    		$out['navigation']=$html;
    		$out['nbresult']=$offset;
    		$out['sizeof']=$this->XoffsetSizof;
    		return $out;
    }
    PS: l'objet est fourni par simpleXML, vaut-il mieux travailler avec DOM pour faire un CRUD à base de fichiers XML ?

    Un grand merci aux contributeurs et une belle fin de journée à tout le monde

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Par défaut
    chg d'optique : on utilisera xml_parse_into_struct
    simpleXml offre des fonctions toutes prêtes mais (di)gère mal les <! cdata
    Je ne souhaitais pas alourdir ma ram en stockant des tableaux mais tant pis

    A défaut de réponse aux newbies, merci qd mm Devellopez d'exister !

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

Discussions similaires

  1. [VS.NET] Comment enregistrer un objet COM
    Par Dnx dans le forum Visual Studio
    Réponses: 5
    Dernier message: 24/03/2005, 23h38
  2. [JACOB] Comment passer un objet par référence à une méthode
    Par zlavock dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 21/03/2005, 19h28
  3. [servlet][bean]comment récupérer l'objet request
    Par otminou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/09/2004, 15h40
  4. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 18h34

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