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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    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 confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 680
    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 éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    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 : 38
    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
    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 éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    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 éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    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

+ 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