2010-09-30 6 views
1

J'ai une zone qui est remplie avec environ 100 enregistrements d'une requête PHP mysql.Ajax Array Display Control - Pagination

besoin d'ajouter la pagination ajax signifie pour charger 10 dossiers, puis l'utilisateur clique dessus, disons, le caractère « + » il renseigne le suivant 20.

Ainsi, la zone au lieu d'afficher tous seront à la fois afficher 20, puis cliquez, puis 20, le suivant ... et ainsi de suite, sans actualisation.

Dois-je vider les 100 enregistrements d'une variable de session?

Dois-je appeler une requête Myqsl chaque fois que l'utilisateur clique sur le déclencheur de la page suivante?

Vous ne savez pas quelle sera la meilleure approche ... ou comment contourner ce problème.

Mon souci est que la base de données passera de 100 à 10 000.

Toute direction d'aide est grandement appréciée.

Répondre

1

Si vous disposez d'un jeu d'enregistrements volumineux qui sera souvent consulté (mais pas souvent mis à jour), consultez APC pour mettre en cache les données et les partager entre les sessions. Vous pouvez également créer un fichier statique qui est réécrit lorsque les données sont modifiées.

Si les données doivent être triées/manipulées sur la page, vous souhaiterez limiter le nombre d'enregistrements chargés pour éviter que le JavaScript ne s'exécute trop longtemps. ExtJS a de bons widgets qui le font, il suffit de lui fournir des données JSON (utilisez la méthode d'encodage de PHP sur votre jeu d'enregistrements). Nous avons fait parler à Oracle et faire la pagination de 20 enregistrements assez facilement.

Si votre grand ensemble d'enregistrements est fréquemment mis à jour et que les données doivent être précises en temps réel, vous avez des défis importants à relever. Je regarderais les travailleurs de comète, singe ou web pour la solution d'interrogation/push et construirais votre API pour traiter uniquement les mises à jour des données "de base" - encore, probablement mises en cache sur le serveur plutôt que retirées de la DB à chaque fois.

+0

Merci pour cette réponse détaillée. – Codex73

1

votre appel ajax devrait appeler une page qui tire seulement la quantité exacte de rangées dont il a besoin de la base de données. sélectionnez donc les 20 premières lignes de la requête sur la première page et ainsi de suite. votre appel ajax peut prendre un paramètre appelé pagenum et en fonction de ce que sont les enregistrements que vous tirez réellement de la base de données. pas besoin de variables de session.

+0

Je suis perdu sur la dernière partie. Donc, je garde pagenum sur une variable de session et ensuite mettre à jour cela avec ajax call correct? – Codex73

+0

je le fais généralement comme un querystring, donc ma page ajax serait quelque chose comme ajax.php? Pagenum = 1 – Caimen

+0

la page ajax devrait retourner l'un des éléments suivants à afficher, xml, json, ou juste html – Caimen