begin process at 2012 05 29 00:19:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Comment afficher données issues de la bdd (et les conserver selon critères utilisateur)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment afficher données issues de la bdd (et les conserver selon critères utilisateur)

mercredi 19 mars 2008 à 13:36:46 | Comment afficher données issues de la bdd (et les conserver selon critères utilisateur)

lolymeupy

Bonjour,
j'essaye de créer un site mais j'ai une question en suspend que je
n'arrive pas à résoudre (malgré de nombreuses recherches en tutos et
autres) !
Je veux faire un site de consultation de données (selon 2 ou 3 critères
on dira)
Donc, ce que je voudrais savoir c'est quelle la meilleure solution :
- soit récupérer TOUTES les données consultables (qui viennent d'une
même table),(donc une connexion et une requête select à la base),
les "stocker" en mémoire centrale au lancement du site, et
lorsque l'utilisateur clique sur un critère on affiche les données
correspondantes...et ainsi de suite jusqu'à ce que l'utilisateur se
deconnecte et on "vide" alors les données de la mémoire centrale

-soit on crée une requete (avec une connexion et fermeture de la Bdd)
à CHAQUE critère choisi par l'utilisateur. C'est a dire qu'on ne charge
que les données dont l'utilisateur a besoin au moment précis.

Pb : pour la deuxième solution, les connexions et fermeture de Bdd, et
les requetes peuvent se multiplier selon l'envie de l'utilisateur.
Donc, peut-etre que la première solution est la meilleure ? et si oui,
comment stocker ces données le temps de la connexion de l'utilisateur?
Problème de persistance des données ?Connaissez-vous des tutos la
dessus ?
mercredi 19 mars 2008 à 14:02:18 | Re : Comment afficher données issues de la bdd (et les conserver selon critères utilisateur)

neigedhiver

Réponse acceptée !
Salut,

Posons quelques bases. Un développement de site web se différencie d'un développement d'application "standard" du fait que, comme tu le soulignes, les données ne persistent (a priori) pas d'une page à l'autre.
Je dis a priori, parce qu'on peut conserver des données d'une page à l'autre, et d'une visite à l'autre d'un même visiteur. Seulement, il y a des contraintes :
- il faut conserver chez le client (le navigateur) une information qui permet à PHP de reconnaitre l'utilisateur à chaque visite
- la quantité de données que l'on peut conserver est relativement limitée.

Quand un script PHP est exécuté par le serveur, toutes les variables, ressources, connexions sont détruites à l'arrêt du script. Cela implique qu'on perd systématiquement les connexions aux bases de données, on perd les variables définies, etc.

On peut conserver ce qui est, je dirais, d'ordre statique : les variables notamment. On peut les linéariser (avec la fonction serialize() ), les stocker quelque part sur le serveur (typiquement un fichier avec les sessions, ou dans une base de données), et les réutiliser plus tard (après les avoir passées dans la fonction unserialize() ).

Concernant ton problème, tout dépend en fait de la quantité de données que tu vas récupérer à chaque critère.
Très sincèrement, stocker le résultat d'une recherche pour chaque utilisateur et le supprimer à sa déconnexion n'est pas une solution viable, pour deux raisons :
- tout d'abord, si la requête de l'utilisateur rappatrie tout le contenu de la base de données, et que chaque utilisateur fait pareil, tu vas te retrouver avec N+1 fois ta base de données stockée sur le disque dur de ton serveur. La base de données sert justement à centraliser...
- ensuite, parce que tu ne pourras JAMAIS savoir quand ton utilisateur se déconnecte, à moins qu'il ne clique spécifiquement sur un lien qui t'en informe. A défaut, sa session restera potentiellement ouverte une durée maximale fixée dans la configuration des sessions PHP (dans le fichier php.ini, valeur modifiable avec la fonction ini_set(). Pour peu que le visiteur n'accepte pas les cookies et recharge plusieurs fois ton site sans conserver l'identifiant de session, tu pourrais te retrouver avec 25 copies de la base de données pour un même utilisateur. Autant dire que c'est du suicide.

Ensuite, il faut savoir que les fonctions PHP sont optimisées pour un développement web (de fait...) et les SGBD(R) (qu'il s'agisse de MySQL, Oracle, PostgreSQL, MsSQL, etc) sont optimisés pour gérer des bases de données volumineuses (même si certains sont plus performants que d'autres).

Donc se connecter à chaque affichage de page, c'est vraiment, mais alors vraiment pas un problème en terme de performances : de toute façon, t'as pas trop le choix... Donc tu fais avec, mais vraiment, c'est insignifiant, à moins que ton hébergeur n'ai placé le serveur de bases de données à des millions de kilomètres du serveur HTTP et qu'ils soient reliés par modem RTC, ce qui ne devrait pas être le cas (bon j'exagère un peu le schéma, mais bon, c'est pour donner une idée).
Pour ce qui est des requêtes sur la base de données, les SGBD(R) utilisent des index (à toi de bien les définir) pour optimiser les recherches et d'une manière générale, toutes les requêtes avec critères.

Concernant la persistance des connexions, il est toutefois possible d'utiliser des connexions persistantes, ce qui n'est pas forcément recommandé, surtout en environnement web. Ces connexions ne sont pas refermées après l'exécution d'un script et peuvent être réutilisées à une prochaine exécution (peut importe le visiteur du site, c'est le problème de PHP de gérer ça).
L'inconvénient est que les connexions persistantes requièrent des ressources de manière permanente, puisqu'elles ne sont refermées que plus tard, après un certain temps d'inutilisation. Elles sont aussi limitées en nombre (du fait de la consommation des ressources). Si tu as beaucoup de visiteurs et si le serveur n'a pas assez de connexions et qu'il ne peut plus en ouvrir, ton site deviendra inaccessible.

Conclusion : n'aies pas peur d'ouvrir une connexion (non persistante) à chaque page, et de faire une requête chaque fois qu'un utilisateur change un critère : si ta base de données est bien pensée, que tu mets les bons index où il faut (bien lire la doc du SGBD(R) utilisé), il n'y a vraiment aucun problème à redouter particulièrement.


Neige
mercredi 19 mars 2008 à 14:22:40 | Re : Comment afficher données issues de la bdd (et les conserver selon critères utilisateur)

lolymeupy

Réponse acceptée !
Merci beaucoup neige pour ces explications limpides.
Ca m'éclaire pas mal parce que par rapport à ce problème, j'avais
beau cherché, je trouvais pas du tout de tuto clair la dessus..
Maintenant, je sais ce qu'il faut faire et ne pas faire, et surtout
POURQUOI faire de telle manière...
Donc merci encore .
(et merci aussi pour l'autre post sur le "pb de syntaxe")


Cette discussion est classée dans : site, données, bdd, utilisateur, critères


Répondre à ce message

Sujets en rapport avec ce message

WAMP BDD [ par begueradj ] Chers programmeurs, Je voudrais héberger sur mon site les bases de données que j'ai créées en utilisant le logiciel WAMP: pourriez-vous me dire où s base données d'un site web [ par samira1983 ] je vien de créer mon premier site web,je suis dans la première phase ,creation de la base de données,j'ai crée toutes les tables que je voi necessaire récupérer les données de ma base de données d'un site héberger [ par scropfi01 ] Svp je veux récupérer périodiquement ma base de données de mon site hébergé, pour garder une copie sur mon pc , En c jamé il y'aurra un pb sur le ser Recupérer les données d'une BDD [ par kend ] Bonjour à tous, Je suis entrain de réaliser une base de données dynamique avec un interface web. en utilisant PHP, HTML et Mysql . Cpdt, j'ai un pro Récupérer les données d’un tableau sur un site web [ par rv82 ] Bonjour,<?xml:namespace prefix = o ns = "urn:schemas-micro verifier les données en ajax [ par pouyelayese ] Bonjour à tous. je suis débutant en ajax. Dans ma base de données j'ai une table utilisateur. Et j'aimerai qu'à la création d'un nouvel utilisateur v base des données d'un site web [ par mouradbatchen ] salut à tousje suis entrain de créer un site web dynamique du vente en ligneje fais tous les interface de site mais je ne sais comment faire sa base d Comment concerver des données lors d'un rafraichissement de la page [ par jerem0lim ] Bonjour , voila je m'explique j'aimerais pouvoir concerver les données lors d'un rafraichissement d'une page par exemple mais formulaire on pour titre Suppression automatique de la base de données [ par winnie39 ] Bonjour à tous, voila je suis confronté à un petit problème. Je reprend la gestion d'un site internet et dois effectuer un certain nombre de modific (Php/sql) session administrateur [ par Gwendo69 ] Bonjour,Je démarre tout juste en php. J'ai commencé à faire un site avec une base de données.En fait, je voudrais pouvoir faire un formulaire (ça je s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales