Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2300 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Code correct ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code correct ?

n°786135
andOceans
AMGOD
Posté le 04-07-2004 à 13:37:30  profilanswer
 

Bonjour,
 
Suite à mon précédent topic http://forum.hardware.fr/hardwaref [...] 4263-1.htm je recolle une partie de mes interrogations ici.
---
 
Tout fonctionne maintenant, mais j'aimerai un ou plusieurs avis sur le code php que j'ai réalisé. (je rappelle, c'est le 1er :sol:) J'ai tout refondu pour faire de la poo (*habitué à faire du java* :ange:), et j'aimerai votre avis sur mon code donc ! J'ai juste fait une classe "Tribune" qui regroupe les méthodes qui lui sont appropriés.
 
Qu'est ce qui ne va pas en gros, qu'est ce que je pourrai améliorer, les éventuelles failles ? etc. Je me demandais par exemple comment bien gérer les connections à MySQL, j'aurai aimé un destructeur, mais napa.  :whistle:
 
Le php : ici
Je rappelle la page :
 
Merci à/aux âme(s) charitable(s) qui lirai(en)t le code. :o
---
 
Et dans une interrogation plus large, est ce bon de faire de la POO en php ? :D

mood
Publicité
Posté le 04-07-2004 à 13:37:30  profilanswer
 

n°786375
T509
$job->GetJob(now)
Posté le 04-07-2004 à 20:02:59  profilanswer
 

andOceans a écrit :


Et dans une interrogation plus large, est ce bon de faire de la POO en php ? :D


 
Pour répondre à cette question, je te recommande cet article


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°786389
gizmo
Posté le 04-07-2004 à 20:36:46  profilanswer
 

1° pour la première fonction, c'est une mauvaise approche, un show table est meilleur car il te donnera une réponse plus proche de la vérité. Ici, tu te choppes un message d'erreur et tu ne vérifies même pas ce qu'il vaut.
 
2° les valeurs de connexion de devraient jamais se trouver en dur dans la classe.
 
3° les fonctions avec valeurs par défaut, je suis pas trop pour, ca laisse une part de flou dans l'utilisation
 
4° le die n'est pas une bonne pratique. Tu dis que tu as l'habitude du java et tu n'effectues même pas une traitement approprié de l'erreur.
 
5° la recherche de la bdd pour la tribue c'est du grand n'importe quoi. Soit elle existe et on l'utilise de suite, soit elle n'existe pas et on ne s'amuse pas à la rechercher dans l'ensemble des db dispos mais on traite l'erreur proprement
 
6° Tout ce qui est création de la tribune (DB, tables, etc...) ne doit pas se trouver dans cette classe, cela fait partie de l'installation du script, pas de son utilisation classique.
 
7° dans add, le deuxième message d'erreur écrase le premier
 
8° elseif inutile dans la fonction add, else suffit.
 
9° un insert sans préciser les champs et ensuite être obligé de mettre des champs à null, c'est mal.
 
10° dans la fonction show_message, quel chippotage juste pour traiter le cas initial!
 
11° l'appel systématique à la fonction add dans la page est a éviter.
 
Voila, c'est ce que je vois rapidement dans le code, mais il est fort possible que j'ai laissé passer l'un ou l'autre truc.

n°786862
andOceans
AMGOD
Posté le 05-07-2004 à 13:32:14  profilanswer
 

Okay, ca fait plaisir, je vais voir tout ça.
 
Merci à vous deux.

n°787311
andOceans
AMGOD
Posté le 05-07-2004 à 20:29:07  profilanswer
 

J'ai réécris la fonction avec un show table, elle est correcte ? (ca fonctionne en tout cas :d)
 

Code :
  1. // ---------------------------------------------------
  2. // Retourne true si $table existe dans la bdd $db_name
  3. // ---------------------------------------------------
  4. function mysql_table_exists($table, $sql, $db_name) {
  5. $tables = mysql_query('SHOW TABLE STATUS FROM ' . $db_name, $sql);
  6. if ($tables)
  7.  while ($data = mysql_fetch_array($tables))
  8.   if ($data['Name'] == $table)
  9.    return true;
  10. return false;
  11. }


 
 
edit:
7° dans add, le deuxième message d'erreur écrase le premier
8° elseif inutile dans la fonction add, else suffit.  
> non, car je traite le cas ou rien n'est rempli aussi en fait. donc le message d'erreur ne peut jamais contenir les deux, et le elseif, pour ca aussi. Mais cela changera certainement, vu que je vais traiter le cas dans la fonction appelante pour éviter "d'adder" tout le temps comme tu fais remarquer.


Message édité par andOceans le 05-07-2004 à 20:39:54
n°787345
gizmo
Posté le 05-07-2004 à 21:03:34  profilanswer
 

Ca fonctionne mais c'est loin d'être optimale.
 
SHOW TABLES FROM DB LIKE 'NOM_DE_LA_TABLE' te donne directement une réponse positive ou négative, sans traitement suppélmentaire nécessaire (en supposant que tu as déjà vérifier ta connexion à la db)

n°787353
andOceans
AMGOD
Posté le 05-07-2004 à 21:17:15  profilanswer
 

Effectivement, j'ai raccourci la fonction. Je pense que ça ira non ? :d

Code :
  1. function mysql_table_exists($table, $sql, $db_name) {
  2. $foo = mysql_query('SHOW TABLE STATUS FROM ' . $db_name . ' LIKE \'' . $table . '\'', $sql);
  3. return mysql_fetch_array($foo) == TRUE;
  4. }

n°788464
andOceans
AMGOD
Posté le 06-07-2004 à 19:29:13  profilanswer
 

2° les valeurs de connexion de devraient jamais se trouver en dur dans la classe.
 
> Euh, si on prend l'exemple du mysql_connect(), je ne vais tout de même pas créer une nouvelle connection dans les fonctions qui en auront besoin ?! De plus, il y a toujours la gestion d'erreur lourde, donc, il vaut mieux ne l'avoir qu'une fois, ce que j'ai fait en créant une fonction qui renvoie une ressource de mysql_connect() mais cette solution me paraît mauvaise. Puis si je passe la ressource en argument, c'est assez étrange, ça n'a rien à faire en argument ahma. D'où ma mise en attribut qui arrange tous les problèmes. :) Est ce correct ?
 
A moins qu'en parlant de "valeur de connection", tu ne parlais que des arguments de fonctions ? (host, user etc que j'ai effectivement supprimé de la classe pour les mettre dans un fichier à part)

n°788473
gizmo
Posté le 06-07-2004 à 19:37:23  profilanswer
 

andOceans a écrit :


A moins qu'en parlant de "valeur de connection", tu ne parlais que des arguments de fonctions ? (host, user etc que j'ai effectivement supprimé de la classe pour les mettre dans un fichier à part)


 
tout à fait.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Code correct ?

 

Sujets relatifs
écran d'attente sur code long en vb excel[ASP] Qu'est ce qui ne marche pas dans mon code ? ( simple )
Validation de code HTML : comprend pas là...simplifier ce code
[PHP] Interpréter du code dans du code[Oracle 8i] extraire du code PLSQL d'un USER
requete sql mise à jour dans code vbPb de code avec Mozilla/Firefox (alors qu'avec IE => OK)
[C] Peut-on conscidèrer ce bout de code correct ?[javascript] ce code est-il correct?
Plus de sujets relatifs à : Code correct ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR