PHP et les "" et les ' ' et le html

Pourtant c'est simple

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut les zéros heu les zestes

je suis actuellement sur un projet web, et alors que j'essayais de faire du php, c'est le drame :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?
function lecteurVideo($url, $titre){
    echo ('<div id="'.$titre.'">
                <video id="film" width="320" height="240" controls>
                    <source src="'.$url.'" type="video/ogg">
                    Your browser does not support the video tag.
                </video> 
            </div>');
}

?>

cette fonction, censée me permettre de créer dynamiquement des lecteurs de vidéos, me renvoie ça :

1
2
3
4
5
<video id="film" width="320" height="240" controls="">
<source type="video/ogg" src="'.$url.'"></source>
Your browser does not support the video tag.
</video>
'); } ?> 

innatendu :/ j'imagine que c'est à cause des guillemets, ou des quotes mais j'arrive pas à mettre le doigts dessus.

alors je suis pas pressé, mais si quelqu'un à la pêche, qu'il fasse un zeste parceque j'ai un pépin ;)

merci

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

comme ça j'ai tendance à me dire que les shorttags (<? ?>) c'est pas a joie. Mais bon. Ensuite, quand on a une telle tartine de html, on préfère ne pas utiliser la structure echo mais le php en mode "template", i.e :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
function lecteurVideo($url, $titre){
?>
            <div id="<?= $titre ?>">
                <video id="film" width="320" height="240" controls>
                    <source src="<?= $url ?>" type="video/ogg">
                    Your browser does not support the video tag.
                </video> 
            </div>
<?php
}

Ensuite, vérifie bien que c'est en appelant la fonction que tu as ça, et pas simplement en ouvrant le fichier qui contient la fonction, cela voudrait dire que le php n'estp as exécuté et forcément ça aide pas.

Édité par artragis

+2 -0
Staff

Cette réponse a aidé l'auteur du sujet

Perso j'aurais tendance à éviter les echo dans les fonctions en préférant renvoyer un résultat, qui lui sera affiché.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
function lecteurVideo($url, $titre){
    return '<div id="'.$titre.'">
                <video id="film" width="320" height="240" controls>
                    <source src="'.$url.'" type="video/ogg">
                    Your browser does not support the video tag.
                </video> 
            </div>';
}


echo lecteurVideo('http://…', 'toto');

Au passage, echo n'est pas une fonction mais un mot-clé, les parenthèses sont donc totalement inutiles.

Édité par viki53

Auteur du sujet

j'ai appliqué ta méthode et ajouté un ";" et ça marchait :D php<?php lecteurVideo("Vids/big_buck_bunny_1080p_stereo.ogg", "Big Buck Bunny"); ?> merc pour ce conseil, je m'en rappellerais :)

ps : je pensais que ce site était moins actif que ça. je reviendrais plus souvent

+0 -0

Perso j'aurais tendance à éviter les echo dans les fonctions en préférant renvoyer un résultat, qui lui sera affiché.

viki53

Personnellement on m'a toujours repris en me disant de faire a la méthode Artragis, elle a le mérite de simplifier la coloration syntaxique et l'indentation automatique. Du coups en cas de maintenance c'est quand même plus lisible.

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0

Personne n'utilise donc heredoc ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function lecteurVideo($url, $titre){ 
    echo <<<EOT
                <div id="$titre">
                <video id="film" width="320" height="240" controls>
                    <source src="$url" type="video/ogg">
                    Your browser does not support the video tag.
                </video> 
            </div>
EOT;

Ca permet de ne pas s'emmêler les pinceaux entre les apostrophes et les guillemets.

Ma plateforme avec 23 jeux de société classiques en 6 langues et 13000 joueurs: http://qcsalon.net/ | Apprenez à faire des sites web accessibles http://www.openweb.eu.org/

+0 -0
Staff

Perso j'aurais tendance à éviter les echo dans les fonctions en préférant renvoyer un résultat, qui lui sera affiché.

viki53

Personnellement on m'a toujours repris en me disant de faire a la méthode Artragis, elle a le mérite de simplifier la coloration syntaxique et l'indentation automatique. Du coups en cas de maintenance c'est quand même plus lisible.

Sanoc

Pour afficher du texte simplement, oui (même si ouvrir et fermer les balises PHP trop souvent est pas super conseillé — en tout cas à une époque — non plus), mais dans une fonction j'évite : les fonctions sont plus faites pour renvoyer un résultat qu'afficher quelque chose sur lequel on ne pourra pas agir (ou difficilement).

Personne n'utilise donc heredoc ?

QuentinC

Je trouve la syntaxe trop lourde (ça fait beaucoup de caractères, pas forcément très intuitifs) pour pas grand chose, perso…

Édité par viki53

Staff

Disons qu'effectivement une "fonction qui affiche" c'est pas très utile. Personnellement, j'aurai créé un petit fichier qui se serait appelé video.part.php et j'aurais fait un include('video.part.php'). php est un langage de template avant tout, alors utilisons-le comme tel, non?

+2 -0

Peut-être pas, parce que c'est comme ça qu'on l'utilisait il y a 10 ans, et que c'est ces côtés de PHP qui font que c'est un mauvais langage ? (et qu'au passage les mecs de PHP essaient de faire des trucs cools pour qu'on l'utilise dans un bon sens)

Édité par dab

+1 -2

Ce n'est pas du tout ce que tu as dit, tu as dit "PHP est un langage de template avant tout". Non, ce n'est PLUS un langage de template, c'est un langage complet, qui tient debout, et qui sait faire entre autre du templating.

Je ne vois pas en quoi je dis qu'il faut utiliser un framework pour faire du templating en PHP, mais tu pourras peut-être m'éclairer.

Edit: j'aurais peut-être du dire "cette utilisation", ok. :)

Édité par dab

+1 -0
Staff

Ouai, je comprends mieux ton message. Mais bon, dans les faits php est un langage de template avant tout. Certes -et je suis d'accord, je le dis suffisamment souvent- il a bien, très bien évolué, surtotu avec php 5.3 et 5.4 mais bon… Dans mon message il y a aussi un contexte : la réponse à une question. Et quitte à faire du templating, autant utiliser php en mode "moteur de template". Je te rappelle que tu niais ma solution car "on faisait comme ça il y a 10 ans". Sauf que ça, justement, personne ne veut le changer, c'est la force de php après tout et c'est même pour ça que php 5.4 a rendu par défaut activé l'usage des tags <?= ?>.

+1 -0

Je trouve la syntaxe trop lourde (ça fait beaucoup de caractères, pas forcément très intuitifs) pour pas grand chose, perso…

Beaucoup de caractères ? C'est pas mieux que <?=$truc?> ou des echo à chaque ligne avec nécessité d'échapper les guillemets. C'est surtout les échappements multiples qui rendent le code illisible je trouve.

Ma plateforme avec 23 jeux de société classiques en 6 langues et 13000 joueurs: http://qcsalon.net/ | Apprenez à faire des sites web accessibles http://www.openweb.eu.org/

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte