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 :

Gestion d'une table de plus de 300 champs via des scripts PHP


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Gestion d'une table de plus de 300 champs via des scripts PHP
    Bonjour tout le monde,

    J'ai une question orientée temps d'execution s'il vous plait.

    J'ai divers script PHP qui communiquent avec ma BDD, seulement certaines de mes tables ont plus de 300 champs, donc je me posais la question de savoir ce qui est plus rapide, lorsque j'appelle des infos sur ces tables :

    - Laisser la table telle quelle, et limiter les noms des champs a appeler dans ma requete SQL ? OU
    - Creer plusieurs tables en faisant des jonctions lorsque j'ai besoin de lire des infos croisées sur plusieurs tables ?

    Ensuite je suis un peu vieux concernant le codage, et j'ai decouvert par assimilation, donc j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query("SELECT nom_du_champ  FROM `table` where ....");
    while($lc = mysql_fetch_array($req, MYSQL_ASSOC)){
    $toto = $lc['toto'];
    etc...
    }
    Je sais que mysql_query est obsolete depuis un bout de temps et qu'il ne faut pas se contenter de dire que cela fonctionne encore, car il y a des failles, et tout et tout, mais connaissez vous un bon tuto simple de comprehension pour passer soit a msqli ou mieux PDO (mais la j'ai peur .. lol), car je compte developper des scripts a destination de professionnels, donc je ne veux pas vendre des trucs foireux dans le temps.

    Merci à vous.
    Guillaume

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Concernant la requête, dans tous les cas, liste les champs dont tu as besoin. Le SELECT * est une mauvaise pratique, lister les colonnes, même si c'est plus long sur le moment, est mieux sur le long terme :
    ça évite de remonter tous les champs de la table alors que tu n'as besoin que de 3 informations (y compris dans les cas où lorsque tu écris la requête il n'y a que 3 colonnes dans la table. On n'est pas à l'abri d'une modification...)
    ça évite également de remonter 2 fois la même information lors d'une jointure entre 2 tables, simplement parce que c'est la colonne de jointure et que forcément elle est présente à l'identique dans les 2 tables
    ça permet d'être sûr du nom du champ, et éventuellement d'ajouter un alias. Si ta colonne en base s'appelle MA_SUPER_COLONNE_AVEC_UN_SUPER_NOM, ça peut être utile d'écrire SELECT MA_SUPER_COLONNE_AVEC_UN_SUPER_NOM as sup_col pour pouvoir travailler avec $row->sup_col plutôt que $row->MA_SUPER_COLONNE_AVEC_UN_SUPER_NOM dans la suite du code

    Concernant la structure de la table, la question est d'avoir une cohérence dans ta structure.
    Si on prend l'exemple d'un utilisateur d'un site : les infos du type email, nom, prénom,... sont communes à tous les utilisateurs, et doivent rester dans la table Utilisateur. Mais les coordonnées peuvent aller dans une table adresse (d'ailleurs sur un site de commerce, tu peux avoir plusieurs adresses mémorisées : livraison, facturation...)
    Si tu as des utilisateurs du type "client" et des utilisateurs du type "gestionnaire", tu vas avoir des infos spécifiques qui peuvent également être dans des tables à part.
    Mais tu ne mets pas la colonne "date de naissance" dans une table "les_trucs_en_vrac" juste parce que tu ne l'utilises que dans l'affichage du profil.

    Concernant la technique : personnellement, je n'aime pas mysqli que je trouve inutilement compliqué, donc je te conseille de sauter directement à PDO. Pour ça, tu as le tuto Comprendre PDO et surtout le chapitre "En pratique"
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Merci pour ces precieux conseils, cependant, je ne sais pas si c'est psychologique mais PDO me parait plus complexe que mysqli .... je vais regarder ton tuto.

    Merci en tout cas de ce premier retour.

    Bonne journée a toi.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Des tables de 300 champs , si tu en es à l'origine c'est qu'il y'a un gros problème de conception.

    Dans certains gros ERP on peut trouver des tables avec beaucoup de champs , mais autant j'ai jamais vu

    Le passage de mysql_ à mysqli consiste pour 90% à rajouter le "i" au fonction mysql existante. Mais comme Celira je préfère PDO , ne serait ce que pour sa capacité à gérer n'importe quel type de base de données.

    Je sais que mysql_query est obsolete depuis un bout de temps et qu'il ne faut pas se contenter de dire que cela fonctionne encore
    Depuis PHP 7.0.0 l'extension n'existe plus et donc ne fonctionne plus. Pour info PHP 7 à déjà presque 1 an et commence à être largement adopté.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kaolivier Voir le message
    ...PDO me parait plus complexe que mysqli ...
    C'est une illusion.


    En réalité, une fois qu'on connait (syntaxe), c'est beaucoup plus simple à utiliser, et surtout pratique, notamment pour les requêtes préparées.

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

Discussions similaires

  1. [AJAX] Faut-il faire de l'AJAX sur une table de plus de 11'000 entrées ?
    Par Dsphinx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/08/2007, 16h58
  2. Réponses: 6
    Dernier message: 28/02/2007, 09h37
  3. [XSL~FO] Problème avec une table de plus d'une page
    Par ganga dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/01/2007, 20h16
  4. [MySQL] Gestion d'une table
    Par manud59 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 04/06/2006, 18h53
  5. Mécansime pour reproduire la gestion d'une table
    Par sinfoni dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 12h25

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