print "//]]>" ???

Petit nouveau ! | 4 Messages

26 févr. 2010, 09:56

Bonjour,

Pourquoi un print "//]]>" s'affiche dans mon source html comme suit : //]]>

Comment contourner cette interprétation ?
Ce qui est surprenant c'est que le print ">" fonctionne, print "]>" aussi. Par contre, c'est à partir de print "]]> que ça merdouille.

Merci pour votre aide.

Fabrice

Mammouth du PHP | 2937 Messages

26 févr. 2010, 10:01

En en codant comme suit :
print '//]]>';
avec des guillemets simples, qu'est-ce que ça donne ?

Petit nouveau ! | 4 Messages

26 févr. 2010, 10:04

Je viens d'essayer, pas mieux.
J'ai également essayé de mettre un \ devant >, pas mieux non plus.

Mammouth du PHP | 2937 Messages

26 févr. 2010, 10:05

Pourrais-tu nous montrer le code PHP comportant ce print problématique ?

Petit nouveau ! | 4 Messages

26 févr. 2010, 10:09

Le code html que je souhaite afficher depuis mon site utilisant php est le suivant :

Code : Tout sélectionner

print "<table style='float: left; margin: 0 1em 1em 0'><tr><td> <div id='calendar-container'></div><div id='calendar-info' style='text-align: center; margin-top: 0.3em'></div></td></tr></table> <script type='text/javascript'>//<![CDATA[ Calendar.setup({ cont : 'calendar-container', weekNumbers : true, selectionType : Calendar.SEL_MULTIPLE, selection : Calendar.dateToInt(new Date()), showTime : 12, onSelect : function() { var count = this.selection.countDays(); if (count == 1) { var date = this.selection.get()[0]; date = Calendar.intToDate(date); date = Calendar.printDate(date, '%A, %B %d, %Y'); $('calendar-info').innerHTML = date; } else { $('calendar-info').innerHTML = Calendar.formatString( '\${count:no date|one date|two dates|# dates} selected', { count: count } ); } }, onTimeChange : function(cal) { var h = cal.getHours(), m = cal.getMinutes(); // zero-pad them if (h < 10) h = '0' + h; if (m < 10) m = '0' + m; $('calendar-info').innerHTML = Calendar.formatString('Time changed to \${hh}:\${mm}', { hh: h, mm: m }); } }); //]]></script>";

Ce qui est étonnant, c'est que tout le code s'imprime correctement sauf ce dernier > qui est interprété !

Mammouth du PHP | 2937 Messages

26 févr. 2010, 10:22

Lorsque du PHP et du HTML sont mêlés, il vaut mieux éviter le plus possible d'insérer du code HTML dans des print ou des echo. Le code suivant :
<table style="float: left; margin: 0 1em 1em 0">
  <tr>
    <td>
      <div id="calendar-container"></div>
      <div id="calendar-info" style="text-align: center; margin-top: 0.3em"></div>
    </td>
  </tr>
</table>      
<script type='text/javascript'>
//<![CDATA[
Calendar.setup({
    cont          : 'calendar-container',
    weekNumbers   : true,
    selectionType : Calendar.SEL_MULTIPLE,
    selection     : Calendar.dateToInt(new Date()),
    showTime      : 12,
    onSelect      : function() {
        var count = this.selection.countDays();
        if (count == 1) {
            var date = this.selection.get()[0];
            date = Calendar.intToDate(date);
            date = Calendar.printDate(date, '%A, %B %d, %Y');
            $('calendar-info').innerHTML = date;
        }  else {
            $('calendar-info').innerHTML = Calendar.formatString(
                '\${count:no date|one date|two dates|# dates} selected',
                { count: count }
            );
        }
    },
    onTimeChange  : function(cal) {
        var h = cal.getHours(), m = cal.getMinutes();
        // zero-pad them
        if (h < 10) h = '0' + h;
        if (m < 10) m = '0' + m;
        $('calendar-info').innerHTML = Calendar.formatString('Time changed to \${hh}:\${mm}', {
            hh: h,
            mm: m
        });
    }
});
//]]>
</script>
est bien plus clair que si tu devais insérer tout le code HTML et JavaScript (qui ne contient aucune instruction PHP, d'ailleurs) dans ton print.

Soit dit en passant, pour faciliter davantage la maintenance de ton code, range tes règles CSS et ton code JavaScript dans des fichiers CSS et JavaScript externes, respectivement.

Petit nouveau ! | 4 Messages

26 févr. 2010, 10:31

J'ai peur de ne pas bien comprendre ta réponse.
Ce code appartient à un plugin wordpress que je suis en train de développer (en php donc). Je ne vois pas trop comment inclure ce code autrement que par un print ou echo. Ce code n'appartiendra pas à un quelconque template.

J'ai bien fais l'inclusion des css et js dans le header de la page. Ce code permet justement de customiser le code qui est appelé (l'affichage d'un calendrier en l'occurence).

A+