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 :

Explication de code PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut Explication de code PHP
    Salut à tous,
    SVP puis-je trouver quelqu'un qui peut m'expliquer ce code php:
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <html>
        <head>
            <title>Emploi du temps</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <style type="text/css">
            td { text-align: center; font: bold small Georgia, "Times New Roman", Times, serif }
            </style>
        </head>
     
        <body bgcolor="#FFAF5F" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
            <?
            function afficher($a_afficher) {
                $filtre = array(
                    "!" => "<font color=\"#A0A0F0\">Manger</font>",
                    "<>" => "<br>",
                    "t" => "<br>TP",
                    "M" => "Mathématiques",
                    "P" => "Physiques",
                    "S" => "SVT",
                    "F" => "Français",
                    "A" => "Anglais",
                    "D" => "Allemand",
                    "H" => "Histoire-Géographie",
                    "C" => "ECJS",
                    "E" => "EPS"
                );
                echo ($a_afficher == "") ? "&nbsp;" : strtr($a_afficher, $filtre) ;
            }
            $jours=array(
                "Lundi" => array("", "", "H<>225", "F<>321", "!", "a;bH<>225", "M<>300", "", ""),
                "Mardi" => array("a;bP<>210", "F<>320", "F<>320", "P<>311", "!", "Pt", "Pt", "St", "St"),
                "Mercredi" => array("S<>311", "S<>311", "D<>122", "A<>321", "!", "", "", "", ""),
                "Jeudi" => array("", "", "H<>221", "F<>223", "!", "M<>306", "M<>306", "E", "E"),
                "Vendredi" => array("aD<>225;b", "a;bD<>225", "P<>211", "!", "M<>306", "aM<>306;bC<>326", "A<>320", "M<>306", "")
            );
            $largeur = (100/count($jours));
            while ($largeur*count($jours)>95) { $largeur--; }
            echo "<td width=\"".(100-$largeur*count($jours))."%\">\n<table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tr><td height=\"26\"></td></tr>\n";
            for ($id_for = 9 ; $id_for <= 17 ; $id_for++) {
                echo "<tr><td height=\"66\">$id_for H</td></tr>\n";
            }
            echo "</table>\n</td>\n";
            foreach ($jours as $jour => $horaires) {
                $case = 0;
                echo "<td width=\"$largeur%\" height=\"100%\">\n<table width=\"100%\" height=\"100%\" border=\"1\" bordercolor=\"#C0F0C0\" cellspacing=\"0\" cellpadding=\"0\">\n<tr><td height=\"26\" bgcolor=\"#CFFFCF\">$jour</td></tr>\n";
                foreach ($horaires as $horaire) {
                    if (($horaire != $horaires[$case-1]) || (!isset($horaires[$case-1]))) {
                        $hauteur = 66;
                        $id_while = 0;
                        while (($horaire == $horaires[$case+(++$id_while)]) && (isset($horaires[$case+$id_while]))) {
                            $hauteur +=6 6;
                        }
                        echo "<tr><td height=\"$hauteur\">";
                        if (substr($horaire, 0, 1) == "a") {
                            echo "\n<table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td width=\"50%\" bgcolor=\"#FFB45F\">";
                            afficher(substr($horaire, 1, strpos($horaire, ";") - 1));
                            echo "</td>\n<td width=\"50%\" bgcolor=\"#FFAA5F\">";
                            afficher(substr($horaire, strpos($horaire, "b") + 1));
                            echo "</td>\n</tr></table>\n";
                        } else { afficher($horaire); }
                        echo "</td></tr>\n";
                    }
                    $case++;
                }
                echo "</table>\n</td>\n";
            }
            ?>
            </tr></table>
        </body>
    </html>
    et merci d'avance

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Ce qu'on peut en dire, c'est que c'est un code antédiluvien (au moins le code html) et qu'il y a ligne 53, un truc qui ne risque pas de marcher : $hauteur +=6 6;.

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour, votre code génère une page horaire de 9h a 17h découpée heure par heure, jour pas jour.
    Mais je pense que vous l'aviez compris.
    Ce qui est compliqué , c'est la mécanique mise en place pour générer cette feuille

    Vous disposez d'une fonction qui permet d'afficher certaines informations d'un dialecte que vous avez inventé.

    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
     
      function afficher($a_afficher) {
                $filtre = array(
                    "!" => "<font color=\"#A0A0F0\">Manger</font>",
                    "<>" => "<br>",
                    "t" => "<br>TP",
                    "M" => "Mathématiques",
                    "P" => "Physiques",
                    "S" => "SVT",
                    "F" => "Français",
                    "A" => "Anglais",
                    "D" => "Allemand",
                    "H" => "Histoire-Géographie",
                    "C" => "ECJS",
                    "E" => "EPS"
                );
                echo ($a_afficher == "") ? "&nbsp;" : strtr($a_afficher, $filtre) ;
            }
    A partir de ce dialecte vous créez un tableau pour la semaine et que vous allez parcourir jour par jour , heure par heure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       $jours=array(
                "Lundi" => array("", "", "H<>225", "F<>321", "!", "a;bH<>225", "M<>300", "", ""),
                "Mardi" => array("a;bP<>210", "F<>320", "F<>320", "P<>311", "!", "Pt", "Pt", "St", "St"),
                "Mercredi" => array("S<>311", "S<>311", "D<>122", "A<>321", "!", "", "", "", ""),
                "Jeudi" => array("", "", "H<>221", "F<>223", "!", "M<>306", "M<>306", "E", "E"),
                "Vendredi" => array("aD<>225;b", "a;bD<>225", "P<>211", "!", "M<>306", "aM<>306;bC<>326", "A<>320", "M<>306", "")
            );
    je vais prendre lundi et décortiquer, pour que vous pussiez comprendre :

    09h : "" correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($a_afficher == "") ? "&nbsp;"
    ce qui veut dire un espace insécable (vide donc)
    10h : "" correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($a_afficher == "") ? "&nbsp;"
    ce qui veut dire un espace insécable (vide donc)
    11h : "H<>225" H affiche : "Histoire-Géographie" , <> affiche '<br>' retour à la ligne 225 (j'imagine la classe)
    12h : "F<>321" F affiche : "Français" , <> affiche '<br>' retour à la ligne 321 (j'imagine la classe)
    13h: "!" va afficher "<font color=\"#A0A0F0\">Manger</font>" c'est à dire manger en violet/lilla
    14h: "a;bH<>225" a:b dans le code, il y a une vérification pour couper la cellule en deux, H affiche : "Histoire-Géographie" , <> affiche '<br>' retour à la ligne 225 (j'imagine la classe)
    15h: "M<>300" M affiche : "Mathématique" , <> affiche '<br>' retour à la ligne 300 (j'imagine la classe)
    16h: "" correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($a_afficher == "") ? "&nbsp;"
    ce qui veut dire un espace insécable (vide donc)
    17h: "" correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($a_afficher == "") ? "&nbsp;"
    ce qui veut dire un espace insécable (vide donc)

    et on recommence pour mardi,mercredi.....

    Voilà ce que fait ce code.

    Est-ce plus clair pour vous ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut Merci
    Merci pour votre réponse mais j'aime l'explication de ce fragment de script surtout et que j'aime traduire en un autre langage de programmation et 1000 merci:

    Code php : 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
    foreach ($jours as $jour => $horaires) {
                $case = 0;
                echo "<td width=\"$largeur%\" height=\"100%\">\n<table width=\"100%\" height=\"100%\" border=\"1\" bordercolor=\"#C0F0C0\" cellspacing=\"0\" cellpadding=\"0\">\n<tr><td height=\"26\" bgcolor=\"#CFFFCF\">$jour</td></tr>\n";
                foreach ($horaires as $horaire) {
                    if (($horaire != $horaires[$case-1]) || (!isset($horaires[$case-1]))) {
                        $hauteur = 66;
                        $id_while = 0;
                        while (($horaire == $horaires[$case+(++$id_while)]) && (isset($horaires[$case+$id_while]))) {
                            $hauteur +=6 6;
                        }
                        echo "<tr><td height=\"$hauteur\">";
                        if (substr($horaire, 0, 1) == "a") {
                            echo "\n<table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td width=\"50%\" bgcolor=\"#FFB45F\">";
                            afficher(substr($horaire, 1, strpos($horaire, ";") - 1));
                            echo "</td>\n<td width=\"50%\" bgcolor=\"#FFAA5F\">";
                            afficher(substr($horaire, strpos($horaire, "b") + 1));
                            echo "</td>\n</tr></table>\n";
                        } else { afficher($horaire); }
                        echo "</td></tr>\n";
                    }
                    $case++;
                }
                echo "</table>\n</td>\n";
            }

Discussions similaires

  1. aider moi pour rendre ce code plus claire
    Par helkha86 dans le forum Langage
    Réponses: 21
    Dernier message: 01/06/2012, 17h33
  2. Réponses: 1
    Dernier message: 17/04/2008, 14h58
  3. Aider mois pour apprendre C++
    Par osma_1978 dans le forum C++
    Réponses: 6
    Dernier message: 25/08/2006, 14h45
  4. Aider moi pour sql server et delphi
    Par aqs dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/06/2005, 21h16

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