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

Discussion :

Equivalent d'une fonction pour des lignes html

  1. #1
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut Equivalent d'une fonction pour des lignes html
    Bonjour,
    J'ai du code html/css qui affichent un image comme prévu avec la décoration prévu.
    J'ai des dizaines d'images à montrer. Ce code va être donc dupliqué et ne va se distinguer des autres que par le nom du fichier de l'image, pour faire court.
    Y a t'il un moyen équivalent à une fonction dans d'autres langages pour répondre au besoin?
    J'ai regardé avec php, mais j'ai un paramètre donc ça ne fera pas le job.
    J'ai regardé js, c'est plus pour des traitements hors affichage de page et décoration.

    Merci de vos propositions

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 287
    Points : 15 603
    Points
    15 603
    Par défaut
    le code coté serveur comme php peut éviter de répéter du code.
    et s'il y a un paramètre comme un nom de fichier par exemple, cela ne pose pas de souci avec une fonction ou une boucle :
    Code html : 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
    <?php
    // définition de la fonction
    function conteneur_image($nom_image)
    {
            $nom_fichier = "$nom_image.png";
            
            ?>
    		<div class="conteneur_image">
    			<img src="repertoire_images/<?= htmlspecialchars($nom_fichier)?>" alt=""/>
    		</div>
    	<?php
    }
     
     
    // utilisation avec 2 images
    conteneur_image("accueil");
    conteneur_image("TEST2_b");

  3. #3
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Bonjour Mathieu,
    Merci de ta réponse rapide.

    J'ai des questions complémentaires sur ta solution :
    - je ne comprends pas la position des balises ?> et <?php par rapport aux {} de la fonction!

    - Le code php et les appels à la fonction conteneur_image sont ils bien dans le même fichier source?
    - si oui, mon fichier doit avoir une extension php, non?

    - Si le code est exécuté coté serveur, cela n'implique t'il pas que je ne peux pas le tester en local : il me faut un serveur (wampserver par exemple) ou alors directement chez mon hébergeur web?

    Merci

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour awalter,

    Pour compléter la réponse de @mathieu, tu peux effectivement mettre le code PHP et ton code HTML dans la même page.

    <?php sert à commencer l'execution de code PHP
    ?> sert à terminer l'execution de code PHP

    Dans la fonction conteneur_image. @mathieu sort de l'execution de PHP après la déclaration de $nom_fichier, cela revient à écrire du texte. C'est plus élégant qu'un print ou echo dans ce cas là car cela permet de conserver un HTML propre dans la fonction, avec la coloration synthaxique etc.

    Code html : 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
    <?php 
    function conteneur_image($nom_image)
    {
            $nom_fichier = "$nom_image.png";        
            ?>
    	<div class="conteneur_image">
    		<img src="repertoire_images/<?php print htmlspecialchars($nom_fichier) ?>" alt="">
    	</div>
    	<?php
    }
    ?><!DOCTYPE html>
    <html>
    	<head>
    		<title>Nom de la page</title>
     
    	</head>
    	<body>
    		<div>
    			<?php conteneur_image('accueil') ?>
    		</div>
    		<div>
    			<?php conteneur_image('TEST2_b') ?>
    		</div>
    	</body>
    </html>

    Mais effectivement la fonction conteneur_image() aurait pu être écrite comme ceci, cela revient au même, à chacun sa préférence.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function conteneur_image($nom_image)
    {
    	$nom_fichier = "$nom_image.png";
    	print '<div class="conteneur_image">
    		<img src="repertoire_images/' . htmlspecialchars($nom_fichier) . '" alt="">
    	</div>';
    }

  5. #5
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Oui, je comprends mieux.
    L'exécution de l'exemple chez mon hébergeur fonctionne , mais en local je n'ai pas l'image (ce qui est, je pense, normal puisque je n'ai pas de serveur), mais les caractères '; } ?> s'affiche dans la page.
    Normal ou pas normal ?

    Merci

  6. #6
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Comment puis je passer en paramètre de ma fonction php un texte contenant des retours à la ligne : omment ces retours de ligne doivent ils être représentés? faut t'il mettre le code hexa du crlf dans le texte ?
    Merci

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 287
    Points : 15 603
    Points
    15 603
    Par défaut
    Citation Envoyé par awalter1 Voir le message
    ce qui est, je pense, normal puisque je n'ai pas de serveur
    oui c'est cela. pour mieux comprendre ce qu'il se passe, regardez le code html généré avec les outils de développement et vous verrez tout le code php.


    Citation Envoyé par awalter1 Voir le message
    Comment puis je passer en paramètre de ma fonction php un texte contenant des retours à la ligne
    pour automatiser la génération de code html, la 1re question est de savoir quel est le code html que vous voulez obtenir dans votre page.
    une fois que vous avez fait un test html qui fonctionne, vous pourrez ensuite faire une boucle ou une fonction php.
    je vous conseille de prendre du temps pour lire des articles qui expliquent ce qu'il est possible de faire en php, vous comprendrez alors mieux comment l'utiliser pour votre site :
    https://php.developpez.com/cours/

  8. #8
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Mon besoin est assez simple : pour chaque image et son texte associé, j'ai une dizaine de lignes html. Comme ces lignes vont être génériques pour toutes les images, j'en fait une fonction php.
    Ca fonctionne bien, j'ai la mise en page et la décoration voulue.

    J'ai résolu le pb du texte avec crlf à passer en paramètre à la fonction php (j'ai passé du temps).
    Je mets ici ma solution si ça peut aider.

    Code html : 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
    <?php 
    function display_tableau($texte_image)
    {
        $texte = "$texte_image";
       
        print  '<P>' . nl2br(htmlspecialchars($texte)) . '</P>';
    }
    ?>
    ...
        <!-- appel de la fct php -->
     
            <h2>Appel de la fonction php</h2>
            <?php 
                 $texte="1ere ligne\n2eme ligne\n3eme ligne";
                 display_tableau($texte); 
            ?>
    ...

    Cordialement

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/01/2016, 18h44
  2. Réponses: 5
    Dernier message: 29/04/2008, 14h30
  3. Réponses: 6
    Dernier message: 21/04/2008, 18h49
  4. Réponses: 8
    Dernier message: 11/04/2007, 23h06
  5. Réponses: 1
    Dernier message: 10/09/2006, 16h09

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