Fonction include bloquée

Petit nouveau ! | 7 Messages

29 avr. 2016, 15:12

Bonjour à vous.

J'ai écrit deux pages PHP identique avec un "include" pour insérer un lecteur vidéo.
La 1er page est dans la racine du site et la 2ème page est située dans le dossier du script pour le lecteur.
Ce qui me donne comme seul différence de codage la ligne suivante:

Code : Tout sélectionner

<?php include('osmplayer/index.html'); ?>
pour la page située à la racine du site

Code : Tout sélectionner

<?php include('index.html'); ?>
pour la page située dans le dossier du lecteur.

Je vous transmets également les liens pour ces deux pages:
http://maillon-form.esy.es/generic.php
http://maillon-form.esy.es/osmplayer/vid.php

Dans la 1er page le lecteur ne s'affiche pas alors qu'il apparaît bien dans la 2ème.

Merci pour votre aide sur ce blocage.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 avr. 2016, 16:15

Bonjour,

Tes deux pages incluent un même fichier html, mais à partir d'emplacement différents. Ton fichier index.html ayant des chemins relatifs (pour appeler les javascript bin, minplayer, src...), ceux-ci son faussés dès lors qu'ils ne sont pas inclus par une page située dans le dossier osmplayer

Le plus simple est d'utiliser des chemins absolu depuis la racine de ton site src="/osmplayer/bin/...", ou d'ajouter la balise <base> pour définir le répertoire de base de tes sources et d'adapter celui-ci en fonction du script php appelé
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

29 avr. 2016, 17:03

Ok merci pour la réponse.
Je fais des essaies avec la balise <base> pour le moment j'arrive à insérer le lecteur vidéo, mais c'est le problème inverse qui ce passe.
Tout mes autres liens prennent le chemin /osmplayer.

Je vais chercher les infos sur cette balise.
Merci

Petit nouveau ! | 7 Messages

03 mai 2016, 17:29

Bonjour Ryle.
Il doit y avoir une astuce que je n'arrive pas à trouver.

Comment spécifier à la balise

Code : Tout sélectionner

<base>
de prendre uniquement en compte la ligne de code suivante:

Code : Tout sélectionner

<div id="main"> <div class="inner"> <h1>Trouvez un revendeur</h1> <BASE HREF="http://maillon-form.esy.es/osmplayer/"> <?php include("osmplayer/index.html") ?> </base> </div> </div>
Et non l'ensemble de la page?

D'avance merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mai 2016, 17:42

Bonjour,

En fait je pense que tu prends le problème à l'envers. La balise <base> défini l'url de référence pour l'ensemble des liens, script, etc. de ta page.

Cela te permet quand tu es sur ta page "/index.html" de constituer tes liens de façon relative par rapport à la racine du site dans le fichier inclus (ex : src="osmplayer/bin/...")

Et lorsque tu es sur la page "/osmplayer/index.html", au lieu de laisser le navigateur constituer ses liens à partir du dossier courant (ce qui générerais des chemins du genre src="osmplayer/osmplayer/bin/..."), tu lui spécifies que l'url de base est "/" au lieu de "/osmplayer/" et les liens/sources de la page inclue seront bien du genre src="/osmplayer/bin/..." :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

04 mai 2016, 16:44

Bonjour Ryle
Merci de ce complément de réponse.
Effectivement, je crois que je me suis complètement embrouillé dans cette histoire d'url de base et je n'arrive plus en sortir.

Je veux juste être sur d'avoir bien compris ton explication
Pour diriger l'ensemble des liens propres au fonctionnement de "/osmplayer/index.html" il me faut enregistrer la balise

Code : Tout sélectionner

<BASE HREF="http://maillon-form.esy.es/osmplayer/">
dans chaque pages des liens "bin, doc, jquery, etc..."

Désolé, d'habitude je percute rapidement, mais pour le coup je n'arrive plus à raisonner.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 mai 2016, 20:48

Dans ta page http://maillon-form.esy.es/generic.php, ta "base" est par défaut la racine du site. Quand tu inclues la page osmplayer/index.html dans celle-ci, il faut donc bien que les liens qu'elle contient pointent vers osmplayer/bin, osmplayer/doc etc.

En revanche, dans ta page http://maillon-form.esy.es/osmplayer/vid.php ta "base" par défaut est "/osmplayer". Quand tu inclues la page index.html dans celle-ci, les mêmes liens que ci-dessus vont alors pointer vers osmplayer/osmplayer/bin, osmplayer/osmplayer/doc etc. et sont donc erronés.

Pour éviter cela, il te suffit dans ta page http://maillon-form.esy.es/osmplayer/vid.php de modifier la "base" par défaut en lui indiquant qu'il s'agit également de la racine : <base href="/" />. Cela reviendrait en gros à faire un chemin du genre "osmplayer/../osmplayer/bin" et bien qu'un peu bizarre à écrire, c'est le bon chemin qui sera utilisé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

13 mai 2016, 15:53

Bon, j'ai localisé le problème sur un autre point.
En faite ce sont ces lignes de script qui bloquent:

Code : Tout sélectionner

<script src="assets/js/jquery.min.js"></script> <script src="assets/js/skel.min.js"></script> <script src="assets/js/util.js"></script> <!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> <script src="assets/js/main.js"></script>
Si je les retire, le module vidéo apparaît, par contre le menu déroulant ne fonctionne forcément plus.
Et si je les valides, le menu fonctionne parfaitement, mais du coup le module vidéo n’apparaît plus.

Saurais tu comment régler ce conflit?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

13 mai 2016, 17:12

Bonjour,

As-tu regardé dans la console javascript de ton navigateur voir quelles sont les erreurs remontées ?
Pour accéder à la console, fais Ctrl+Maj+i dans Firefox ou Chrome


Dans tes 2 pages d'exemple, le player s'affiche chez moi mais il y a beaucoup d'erreurs 404 qu'il faut que tu corriges
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

14 mai 2016, 13:17

Merci @rthur

Effectivement, il y avais plusieurs liens sans cible finale, je viens de corriger la plus part des erreurs, il en reste 3 que je n'arrive pas à déterminer:

Code : Tout sélectionner

osmplayer.js:2 Uncaught ReferenceError: jQuery is not defined(anonymous function) @ osmplayer.js:2
Ligne concernée:

Code : Tout sélectionner

if (!jQuery.fn.osmplayer) { jQuery.event.special.playerdestroyed = { remove: function(o) { if (o.handler) { o.handler(this); } } };

Code : Tout sélectionner

osmplayer.default.js:1 Uncaught ReferenceError: minplayer is not defined(anonymous function) @

Code : Tout sélectionner

osmplayer.default.js:1(anonymous function) @ osmplayer.default.js:1
Ligne concernée:

Code : Tout sélectionner

!function(a,b){b.playLoader=b.playLoader||{},b.playLoader[a]=function(a,b){minplayer.playLoader.call(this,a,b)},b.playLoader[a].prototype=new minplayer.playLoader,b.playLoader[a].prototype.constructor=b.playLoader[a],b.playLoader[a].prototype.getDisplay=function(){return this.options.build&&jQuery(".minplayer-"+a,this.context).prepend('<div class="minplayer-'+a+'-loader-wrapper"><div class="minplayer-'+a+'-big-play ui-state-default"><span></span></div><div class="minplayer-'+a+'-loader">&nbsp;</div><div class="minplayer-'+a+'-preview ui-widget-content"></div></div>'),jQuery(".minplayer-"+a+" .minplayer-"+a+"-loader-wrapper",this.context)},b.playLoader[a].prototype.loadPreview=function(a){minplayer.playLoader.prototype.loadPreview.call(this,a)||this.elements.preview.addClass("no-image")},b.playLoader[a].prototype.getElements=function(){var b=minplayer.playLoader.prototype.getElements.call(this);return jQuery.extend(b,{busy:jQuery(".minplayer-"+a+"-loader",this.display),bigPlay:jQuery(".minplayer-"+a+"-big-play",this.display),preview:jQuery(".minplayer-"+a+"-preview",this.display)})}}("default",osmplayer||{}),function(a,b){b.controller=b.controller||{},b.controller[a]=function(a,b){minplayer.controller.call(this,a,b)},b.controller[a].prototype=new minplayer.controller,b.controller[a].prototype.constructor=b.controller[a],b.controller[a].prototype.construct=function(){this.options=jQuery.extend({volumeVertical:!0,controllerOnly:!1,showController:!0},this.options),minplayer.controller.prototype.construct.call(this);var a=this;if(!this.options.showController)return void this.get("player",function(a){a.display.removeClass("with-controller")});if(!this.options.volumeVertical||this.options.controllerOnly){this.display.addClass("minplayer-controls-volume-horizontal"),this.display.removeClass("minplayer-controls-volume-vertical");try{this.volumeBar.slider("option","orientation","horizontal")}catch(b){}}else this.display.addClass("minplayer-controls-volume-vertical"),this.display.removeClass("minplayer-controls-volume-horizontal");this.get("player",function(b){a.options.controllerOnly?b.display.addClass("controller-only"):this.get("media",function(a){a.hasController()?b.display.addClass("with-controller"):this.showThenHide(5e3,function(a){var c=a?"addClass":"removeClass";b.display[c]("with-controller")})})})},b.controller[a].prototype.getDisplay=function(){return this.options.showController?(this.options.build&&jQuery(".minplayer-"+a,this.context).prepend('<div class="minplayer-'+a+'-controls ui-widget-header"><div class="minplayer-'+a+'-controls-left"><a class="minplayer-'+a+"-play minplayer-"+a+'-button ui-state-default ui-corner-all" title="Play"><span class="ui-icon ui-icon-play"></span></a><a class="minplayer-'+a+"-pause minplayer-"+a+'-button ui-state-default ui-corner-all" title="Pause"><span class="ui-icon ui-icon-pause"></span></a></div><div class="minplayer-'+a+'-controls-right"><div class="minplayer-'+a+'-timer">00:00</div><div class="minplayer-'+a+'-fullscreen ui-widget-content"><div class="minplayer-'+a+'-fullscreen-inner ui-state-default"></div></div><div class="minplayer-'+a+'-volume"><div class="minplayer-'+a+'-volume-slider"></div><a class="minplayer-'+a+"-volume-mute minplayer-"+a+'-button ui-state-default ui-corner-all" title="Mute"><span class="ui-icon ui-icon-volume-on"></span></a><a class="minplayer-'+a+"-volume-unmute minplayer-"+a+'-button ui-state-default ui-corner-all" title="Unmute"><span class="ui-icon ui-icon-volume-off"></span></a></div></div><div class="minplayer-'+a+'-controls-mid"><div class="minplayer-'+a+'-seek"><div class="minplayer-'+a+'-progress ui-state-default"></div></div></div></div>'),this.context.addClass("with-controller"),jQuery(".minplayer-"+a+"-controls",this.context)):jQuery(null)},b.controller[a].prototype.getElements=function(){var b=minplayer.controller.prototype.getElements.call(this),c=jQuery(".minplayer-"+a+"-timer",this.display);return jQuery.extend(b,{play:jQuery(".minplayer-"+a+"-play",this.display),pause:jQuery(".minplayer-"+a+"-pause",this.display),fullscreen:jQuery(".minplayer-"+a+"-fullscreen",this.display),seek:jQuery(".minplayer-"+a+"-seek",this.display),progress:jQuery(".minplayer-"+a+"-progress",this.display),volume:jQuery(".minplayer-"+a+"-volume-slider",this.display),mute:jQuery(".minplayer-"+a+"-volume-mute",this.display),timer:c,duration:c})}}("default",osmplayer||{}),function(a,b){b.playlist=b.playlist||{},b.playlist[a]=function(a,c){b.playlist.call(this,a,c)},b.playlist[a].prototype=new b.playlist,b.playlist[a].prototype.constructor=b.playlist[a],b.playlist[a].prototype.construct=function(){this.options=jQuery.extend({showPlaylist:!0},this.options),b.playlist.prototype.construct.call(this),this.showThenHide(this.elements.hideShow),this.get("player",function(a){var b=this.options.vertical?"width":"height",c=this.options.vertical?"right":"bottom",d=this.options.vertical?"marginRight":"marginBottom";this.hideShow=function(e,f){var g={},h={},i=this.display[b](),j=this.options.vertical?"e":"s",k=this.options.vertical?"w":"n",l=e?"ui-icon-triangle-1-"+k:"ui-icon-triangle-1-"+j,m=e?"ui-icon-triangle-1-"+j:"ui-icon-triangle-1-"+k;jQuery("span",this.elements.hideShow).removeClass(l).addClass(m),g[c]=e?i:0,a.elements.minplayer&&(f?a.elements.minplayer.animate(g,"fast"):a.elements.minplayer.css(g)),h[d]=e?0:-i,f?this.display.animate(h,"fast",function(){a.resize()}):this.display.css(h)},this.ubind(this.uuid+":playlistLoad",function(a){return function(b,c){1===c.nodes.length?a.hideShow(!1,!0):a.hideShow(!0,!0)}}(this)),this.elements.hideShow&&this.elements.hideShow.bind("click",function(a){return function(b){b.preventDefault();var c=jQuery("span",a.elements.hideShow),d=(a.options.vertical?"e":"s",a.options.vertical?"w":"n"),e=c.hasClass("ui-icon-triangle-1-"+d);a.hideShow(e,!0)}}(this)),a.elements.minplayer&&(this.options.showPlaylist?this.options.vertical?a.elements.minplayer.css("right",this.display.width()+"px"):a.elements.minplayer.css("bottom",this.display.height()+"px"):this.hideShow(!1))})},b.playlist[a].prototype.getDisplay=function(){return this.options.build&&this.context.append('<div class="osmplayer-'+a+'-playlist"><div class="osmplayer-'+a+'-hide-show-playlist ui-state-default"><span class="ui-icon"></span></div><div class="minplayer-'+a+'-loader-wrapper"><div class="minplayer-'+a+'-loader"></div></div><div class="osmplayer-'+a+'-playlist-scroll ui-widget-content"><div class="osmplayer-'+a+'-playlist-list"></div></div></div>'),jQuery(".osmplayer-"+a+"-playlist",this.context)},b.playlist[a].prototype.getElements=function(){var c=b.playlist.prototype.getElements.call(this),d=this.options.vertical?"playlist-vertical":"playlist-horizontal";d+=this.options.playlistOnly?" playlist-only":"";var e=this.options.showPlaylist,f=this.options.vertical?e?"e":"w":e?"s":"n",g=this.options.vertical?"ui-corner-left":"ui-corner-top";(this.options.disablePlaylist||!this.options.playlist)&&this.display.remove(),this.display.addClass(d);var h=jQuery(".osmplayer-"+a+"-hide-show-playlist",this.display);return h.addClass(g),this.options.playlistOnly&&(h.hide(),h=null),jQuery("span",h).addClass("ui-icon-triangle-1-"+f),jQuery.extend(c,{playlist_busy:jQuery(".minplayer-"+a+"-loader-wrapper",this.display),list:jQuery(".osmplayer-"+a+"-playlist-list",this.display),scroll:jQuery(".osmplayer-"+a+"-playlist-scroll",this.display),hideShow:h})}}("default",osmplayer||{}),function(a,b){b.teaser=b.teaser||{},b.teaser[a]=function(a,c){b.teaser.call(this,a,c)},b.teaser[a].prototype=new b.teaser,b.teaser[a].prototype.constructor=b.teaser[a],b.teaser[a].prototype.construct=function(){minplayer.display.prototype.construct.call(this),this.display.bind("mouseenter",function(a){return function(){a.addClass("ui-state-hover")}}(this.elements.info)).bind("mouseleave",function(a){return function(){a.removeClass("ui-state-hover")}}(this.elements.info))},b.teaser[a].prototype.getDisplay=function(){this.context.append('<div class="osmplayer-'+a+'-teaser ui-widget-content"><div class="osmplayer-'+a+'-teaser-image"></div><div class="osmplayer-'+a+'-teaser-info ui-state-default"><div class="osmplayer-'+a+'-teaser-title"></div></div></div>');var b=jQuery(".osmplayer-"+a+"-teaser",this.context);return b.eq(b.length-1)},b.teaser[a].prototype.select=function(a){a?this.elements.info.addClass("ui-state-active"):this.elements.info.removeClass("ui-state-active")},b.teaser[a].prototype.getElements=function(){var c=b.teaser.prototype.getElements.call(this);return jQuery.extend(c,{info:jQuery(".osmplayer-"+a+"-teaser-info",this.display),title:jQuery(".osmplayer-"+a+"-teaser-title",this.display),image:jQuery(".osmplayer-"+a+"-teaser-image",this.display)})}}("default",osmplayer||{}),function(a,b){b.pager=b.pager||{},b.pager[a]=function(a,c){b.pager.call(this,a,c)},b.pager[a].prototype=new b.pager,b.pager[a].prototype.constructor=b.pager[a],b.pager[a].prototype.getDisplay=function(){return this.options.build&&this.context.append('<div class="osmplayer-'+a+'-playlist-pager ui-widget-header"><div class="osmplayer-'+a+'-playlist-pager-left"><a href="#" class="osmplayer-'+a+"-playlist-pager-link osmplayer-"+a+"-playlist-pager-prevpage minplayer-"+a+'-button ui-state-default ui-corner-all"><span class="ui-icon ui-icon-circle-triangle-w"></span></a></div><div class="osmplayer-'+a+'-playlist-pager-right"><a href="#" class="osmplayer-'+a+"-playlist-pager-link osmplayer-"+a+"-playlist-pager-nextpage minplayer-"+a+'-button ui-state-default ui-corner-all"><span class="ui-icon ui-icon-circle-triangle-e"></span></a></div></div>'),jQuery(".osmplayer-"+a+"-playlist-pager",this.context)},b.pager[a].prototype.getElements=function(){var c=b.pager.prototype.getElements.call(this);return jQuery.extend(c,{prevPage:jQuery(".osmplayer-"+a+"-playlist-pager-prevpage",this.display),nextPage:jQuery(".osmplayer-"+a+"-playlist-pager-nextpage",this.display)})}}("default",osmplayer||{}),function(a,b){b[a]=function(a,c){b.call(this,a,c)},b[a].prototype=new b,b[a].prototype.constructor=b[a],b[a].prototype.getDisplay=function(){return 0===this.context.children().length&&(this.context=this.context.attr({id:this.options.id+"-player","class":"minplayer-"+a+"-media"}).wrap(jQuery(document.createElement("div")).attr({"class":"minplayer-"+a+"-display ui-widget-content"})).parent(".minplayer-"+a+"-display").wrap(jQuery(document.createElement("div")).attr({"class":"minplayer-"+a})).parent(".minplayer-"+a).prepend('<div class="minplayer-'+a+'-logo"></div><div class="minplayer-'+a+'-error"></div>').wrap(jQuery(document.createElement("div")).attr({id:this.options.id,"class":"osmplayer-"+a+" player-ui"})).parent(".osmplayer-"+a),this.options.build=!0),this.context},b[a].prototype.getElements=function(){var c=b.prototype.getElements.call(this);this.display.width(this.options.width),this.display.height(this.options.height);var d=jQuery(".minplayer-"+a,this.display);return this.options.playlistOnly&&(d.remove(),d=null),jQuery.extend(c,{player:this.display,minplayer:d,display:jQuery(".minplayer-"+a+"-display",this.display),media:jQuery(".minplayer-"+a+"-media",this.display),error:jQuery(".minplayer-"+a+"-error",this.display),logo:jQuery(".minplayer-"+a+"-logo",this.display)})}}("default",osmplayer||{});

Code : Tout sélectionner

generic.php:81 Uncaught ReferenceError: $ is not defined(anonymous function) @ generic.php:81
Ligne concernée:

Code : Tout sélectionner

<script type="text/javascript"> $(function() { $("#osmplayer").osmplayer({ width: '100%', height: '650px', playlist: 'playlist.xml' }); }); </script>
Pour info j'ai effectué les corrections sur http://maillon-form.esy.es/generic.php