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 :

Recherche Tuto !


Sujet :

Langage PHP

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut Recherche Tuto !
    Bonjour

    J'aimerai comprendre et générer des pages html générées avec des scripts semblables à celui-là :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
    include(CLASSES_PHP.'/formulaire.classe.php');
    include(CLASSES_PHP.'/sortADD2.classe.php');
     
    include(scripts_php.'/form_add/fonctions_jobfall.php');
     
    echo '<style>
    		#txtcentre label{
    			display:block;
    			font-family : \'ChantelliAntiqua\';
    			margin:4% 3% 1%;
    			}
    	</style>';
     
    $form = new Formulaire('POST','','affiche_sortADD');
    $form->Etape();
    $form->Titre('');
     
    //Choix du sort
    $form->DebutEtape('','','affiche');
    $form->ActiveOn();
    if($form->on){
    	$form->BeginSelect('<h4>Choix du sort</h4>','id_sort');
    		$query = mysql_query("SELECT id,nom FROM add_sorts_magicien ORDER BY nom");
    		while( $row = mysql_fetch_array($query) ){
    			$form->SelectOption($row['id'],$row['nom'],false);
    			}
    	$form->EndSelect();
    	}
    $form->FinEtape();
    $form->OutPut();
     
    //Affichage des informations du sort
    $form->DebutEtape('Edition des informations du sort','affiche','');
    if($form->on){
    	$sort = new SortADD2($_POST['id_sort']);
    	$form->HTML('<br/>
    <h3>'.$sort->nom.' </h3>
    <table width="650" border="0" >
      <tr>
        <td width="277" >Niveau <h4 id="txtniveau" >'.$sort->niveau.'</h4></td>
    	
        <td colspan="5"></td>
        <td><em>'.BoolReversible($sort->reversible).'</em> </td>
      </tr>
      <tr>
        <td><b>Ecole(s)</b> : '.$sort->ecole_text.'</td>
        <td colspan="5">&nbsp;</td>
        <td><b>Source</b> : '.$sort->source_text.'</td>
      </tr>
      </table>
    
    <br/>');
     
    	$form->HTML('<p>'.$sort->description.'</p><p>&nbsp;</p><h3>'.$sort->nom_en.'</h3><p>'.$sort->description_en.'</p>');
     
    	}
     
    $form->OutPut();
    ?>
    Qui peut me conseiller un tuto ?

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Waaah c'que c'est moche comme code, y'a à peu près tout ce qu'il faut pas faire

    Bref, un bon tuto pour commencer le PHP c'est celui-ci

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Merci ! Je vais regarder.

    Peux-tu ce qui n'est pas chouette ? je pourrais le faire remonter au concepteur.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    ok, c'est parti. Dans le désordre:

    1 - Absence de contrôle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = mysql_query("SELECT id,nom FROM add_sorts_magicien ORDER BY nom");
    while( $row = mysql_fetch_array($query) ){
        $form->SelectOption($row['id'],$row['nom'],false);
    }
    Vu qu'aucun traitement n'est prévu, si pour une raison quelconque la requête en base échoue au mieux ça lancera des erreurs, au pire ça compromettra le comportement obtenu.

    2 - Indentation farfelue

    Il faut faire toute une gymnastique mentale pour comprendre ce que ce script fait. Lire du code source doit être aussi aisé que lire un bouquin; le code doit être correctement indenté, aéré et commenté ce qui n'est clairement pas le cas.

    3 - Utilisation des tableaux pour la mise en page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <table width="650" border="0" >
      <tr>
        <td width="277" >Niveau <h4 id="txtniveau" >'.$sort->niveau.'</h4></td>
     
        <td colspan="5"></td>
        <td><em>'.BoolReversible($sort->reversible).'</em> </td>
      </tr>
      <tr>
        <td><b>Ecole(s)</b> : '.$sort->ecole_text.'</td>
        <td colspan="5">&nbsp;</td>
        <td><b>Source</b> : '.$sort->source_text.'</td>
      </tr>
      </table>
    L'utilisation des tableaux pour résoudre une problématique de mise en page est dépassé depuis plus de 10 ans. Il est de rigueur d'utiliser une sémantique correcte pour son code HTML.

    4 - Pas de séparation entre les traitements et le rendu

    Mélanger allègrement les traitements (extraction & manipulation de données) et l'affichage (production de flux HTML) est extrêmement dommageable: ça nuit à la lisibilité du code et surtout ça empêche d'avoir un contrôle sur le déroulement de la requête HTTP car il devient impossible de manipuler les en-têtes une fois le moindre contenu affiché.

    5 - Inlining du CSS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo '<style>
    		#txtcentre label{
    			display:block;
    			font-family : \'ChantelliAntiqua\';
    			margin:4% 3% 1%;
    			}
    	</style>';
    Il est déconseillé de mettre le CSS directement dans la page web ça empêche le navigateur de mettre en cache la feuille de style et donc occasionne une charge réseau supplémentaire parfaitement inutile. De surcroit, le CSS est ici inséré dans le body ce qui est incorrect vis-a-vis des standards W3C.

    6 - Utilisation de balises sémantiquement inutiles

    L'incorporation volontaire de balises destinées à impacter la mise en forme est à proscrire, il faut plutôt utiliser correctement les marges grâce aux règles CSS.

    7 - Inclusion manuelle des classes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include(CLASSES_PHP.'/formulaire.classe.php');
    include(CLASSES_PHP.'/sortADD2.classe.php');
    Si pour une raison quelconque la classe est déjà chargée, le script va partir en erreur fatale car on peut définir deux fois la même classe. Il serait de bon ton d'utiliser un autoloader ou au moins une directive include_once (ou plutôt require_once dans notre cas)

    8 - Utilisation de include au lieu de require

    Les classes sont effectivement mandataires pour le bon fonctionnement du script. Contrairement à la directive require, la directive include n'arrêtera pas le script si l'inclusion échoue, hors ces classes sont utilisées donc si elles ne sont pas correctement chargées, le script partira en erreur fatale.

    9 - Absence de clarté dans la nomenclature

    Quand on rédige du code, il est de bon ton d'utiliser des conventions et de s'y tenir. Ici, on retrouve des conventions différentes pour les membres de classes, du français et de l'anglais, des constantes en majuscules et en minuscules... Bref, il faudrait y mettre bon ordre.

    10 - Utilisation du tag fermant ?> en fin de script

    Pour un script qui n'utilise que du PHP, il est en général admis de ne pas fermer le tag PHP avec ?> ceci afin d'éviter les problèmes avec des caractères comme le saut de ligne juste derrière qui sont considérés comme du contenu (et qui provoquent l'envoi des headers HTTP).

    11 - Mélange procédural / objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $form->BeginSelect('<h4>Choix du sort</h4>','id_sort');
    		$query = mysql_query("SELECT id,nom FROM add_sorts_magicien ORDER BY nom");
    Bien qu'on utilise des classes pour la génération du formulaire, on utilise également l'extension mysql_ pour les accès bases. L'utilisation de cette extension est désormais déconseillée au profit de mysqli et dans notre cas, on devrait utiliser l'extension objet PDO.

    12 - Mauvaise syntaxe pour include

    La syntaxe correcte est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include "mon_script.php"; // sans parenthèses
    Pareil pour require, include_once et require_once d'ailleurs.

    13 - Production de flux HTML à grand coups de concaténation

    Comme dit précédemment, il est plus naturel de séparer le PHP et le HTMl et de ne pas produire le HTML à grand renforts de chaines de caractères, si possible il faut mettre le PHP et le HTML dans des fichiers à part (un pour les traitements et un pour la vue).

    Conclusion:

    Ce script n'est pas totalement inutile: il peut être utilisé comme mauvais exemple. Il condense en peu de lignes presque tout ce qu'il ne faut pas faire en regard des bonnes pratiques du PHP, de l'accès aux bases de données et du respect des standards du W3C. Il ne lui manque finalement qu'une faille XSS ou d'injection SQL pour compléter le tableau.

    Ce genre de code véhicule l'image négative de PHP en tant que langage impropre à l'utilisation en milieu industriel et jette l’opprobre sur les développeurs consciencieux et respectueux des normes et des standards.

    Sois toujours exigeant dans la qualité du code que tu produit. Le mode de fonctionnement "faisons un prototype bien sale maintenant et améliorons le plus tard" est tout simplement absurde: on ne fait pas de l'or avec du plomb.
    Les normes, règles, bonnes pratiques, conventions et standards n'existent pas pour faire joli et ne sont pas destinées qu'a quelques esthètes dans leur tour d'ivoire. Elles existent dans le but de permettre l'interopérabilité, la réutilisation, l'efficacité, la lisibilité, la performance, la justesse, l'évolutilivité, la cohérence et surtout la l'intégrité du code produit. Il faut toujours coder en pensant que celui qui va maintenir ce que tu fais est un serial-killer qui connait ton adresse.

    Quand tu pense économiser 1h en faisant un code sale, tu en perds en réalité 8 à le maintenir. Quand tu investis 1h de plus pour faire un code propre, tu en gagnes 7 à le maintenir. A toi de voir si tu veux passer ton temps à faire les choses proprement ou le perdre à maintenir du code sale...

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Bonsoir

    Merci pour ton commentaire. Ce n'est pas moi qui est fait ce code, mais on me l'a passé en me demandant comment il marche. J'ai simplement répondu que je n'en savais rien.

    Mon principale problème, c'est sa structure form qui se conclu par un
    Et c'est là dessus que j'aurais aimé avoir des renseignements. Ce n'est pas la première fois que je vois du code de ce genre et je me suis dit qu'il faudrait que je cherche à comprendre.

    Le lien que tu m'as passé n'est pas du tout ce que je cherche car je sais déjà faire du php avec utilisation de base de données et même de l'ajax. Même si parfois j'ai des problèmes quand on passe mon travail sur un serveur sous windows...

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ah, c'est l'OOP qui te pose problème ? Dans ce cas c'est par ici: http://php.developpez.com/cours/?page=langage#poo

Discussions similaires

  1. [Recherche] Tuto netbean 5.5, EJB,Jboss et BDD
    Par coye dans le forum NetBeans
    Réponses: 1
    Dernier message: 08/12/2006, 10h01
  2. Recherche tuto reseaux linux
    Par jluc83 dans le forum Réseau
    Réponses: 3
    Dernier message: 05/10/2006, 09h41
  3. Recherche tuto pour installation Tomcat sous Mandrake 10.X
    Par itr dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 02/06/2006, 09h02
  4. Recherche tuto c++ ; liens morts
    Par odSen dans le forum C++
    Réponses: 7
    Dernier message: 20/04/2006, 19h56
  5. recherche tuto concernant exploitation des .text en vb
    Par tavekapaclike1er dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/11/2005, 12h55

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