Page 1 sur 1

Variable rebelle

Posté : 28 juil. 2011, 16:20
par Teenoo
Bonjour,

dans le but d'afficher une classe css nommée "selected" à mon menu quand la page est affichée j'ai utilisé le code php avant mon <!DOCTYPE html> :
<?php
$pageOn = basename($_SERVER['PHP_SELF']);
$mItem = $pageOn;
?>
Puis je fais une fonction du style <li <?php if($pageOn == 'index.php'){?> class="selected"<?php }?>><a href="index.php">Accueil</a></li> pour mettre selon l'affichage ma classe css.

Après vérifications multiples il s'avèrent que c'est la variable PHP qui bug et m'affiche un "Parse error: syntax error, unexpected T_VARIABLE". Le plus étonnant étant que je n'ai pas de soucis en bossant en local (MAMP). Je suis sous PHP5 dans les deux cas.

Merci pour votre précieuse aide et vos explications qui m'aideront à comprendre où se situe le soucis.

Re: Variable rebelle

Posté : 28 juil. 2011, 18:01
par xTG
Ce code ne présente aucune erreur.
Es-tu sûr que l'erreur indique cette ligne ?

Re: Variable rebelle

Posté : 28 juil. 2011, 18:52
par Teenoo
Aïe! oui j'ai :
Parse error: syntax error, unexpected T_VARIABLE in /homez.157/yumedesi/www/client/bois/header.php on line 1
J'ai supprimé cette partie de code donnée et l'erreur a disparu, j'ai enlevé la partie menu entre balise <ul><li> en gardant seulement mon $pageOn et là j'ai eu mon erreur d'où ma déduction que tout vient de là...

J'ai tenté de migrer mon code près de la liste <ul> mais ça n'a rien changé. S'il n'y a pas d'erreur comment vais-je faire ? N'existe t'il pas une autre manière d'obtenir le même résultat pour $pageOn sans passer par basename ?

Sinon mon code complet :
<?php

$pageOn = basename($_SERVER['PHP_SELF']);
$mItem = $pageOn;
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Page Title</title>
    
    <link rel="stylesheet" href="css/style.css" />
    <link rel="stylesheet" href="css/reset.css" />
    
    <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="js/html5.js"></script>
    <script type="text/javascript" src="js/modernizr-1.7.min.js"></script>
    <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
     <script type="text/javascript" src="js/jquery.nivo.slider.pack.js"></script>
  <script type="text/javascript">
$(window).load(function() {
    $('#slider').nivoSlider({
        effect:'fade', 
        slices:15, 
        boxCols: 8, 
        boxRows: 4, 
        animSpeed:500, 
        pauseTime:3000, 
        startSlide:0, 
        directionNav:false, 
        directionNavHide:false, 
        controlNav:true, 
        controlNavThumbs:true, 
        controlNavThumbsFromRel:true, 
        keyboardNav:true, 
        pauseOnHover:true, 
        manualAdvance:false, 
        captionOpacity:0.8, 
      
       
    });
});
</script>
</head>

<body>


<header>
<div id="head">
    
    <div class="logo"><img src="img/logo.png"></div>
    
    <nav>
        <ul>
            <li <?php if($pageOn == 'index.php'){?> class="selected"<?php }?>><a href="index.php">Accueil</a></li>
            <li <?php if($pageOn == 'formation.php'){?> class="selected"<?php }?>><a href="formation.php">Formation</a></li>
            <li <?php if($pageOn == 'formateurs.php'){?> class="selected"<?php }?>><a href="formateurs.php">Formateurs</a></li>
            <li <?php if($pageOn == 'savoir.php'){?> class="selected"<?php }?>><a href="savoir.php">Savoir & savoir-faire</a></li>
            <li <?php if($pageOn == 'partenaires.php'){?> class="selected"<?php }?>><a href="partenaires.php">Partenaires</a></li>
            <li <?php if($pageOn == 'contact.php'){?> class="selected"<?php }?>><a href="contact.php">Contact</a></li>
        </ul>
    </nav>
    </div> 
</header>

Re: Variable rebelle

Posté : 28 juil. 2011, 19:26
par Teenoo
Bien, j'ai résolu le soucis et pour ceux qui auraient le même soucis et voudrait comprendre :)

J'ai teste un bête
<? echo $_SERVER["DOCUMENT_ROOT"]; ?>
comme il marchait sur mon backoffice il était obligé qu'il marche en frontoffice et là même erreur. Maintenant c'est sûr c'est pas la variable le soucis c'est l'emplacement du code. Du coup il est placé dans la balise <body> avant l'appel de mon $pageOn et un miracle s'est produit :lol:

maintenant allez savoir pourquoi ça marchait en local... ça s'est le grand mystère du PHP!

Merci à toi xTG pour avoir répondu à ma question. :D

Re: Variable rebelle

Posté : 28 juil. 2011, 21:05
par xTG
A mon avis en local tu n'affiches pas tous les niveaux d'erreur de PHP. ;)

Re: Variable rebelle

Posté : 28 juil. 2011, 23:00
par sirakawa
A mon avis, idiot comme d'habitude, si tu lui faisais aficher
print_r($_SERVER); die();
tu saurais peut-être ce qui se passe...

Re: Variable rebelle

Posté : 29 juil. 2011, 02:23
par devlop78
Je vois surtout là un short tag "<?" qui peut être refusé par certains serveurs,

Simple question pour connaitre tes sauts de ligne, tu es sous quel OS ?

Re: Variable rebelle

Posté : 29 juil. 2011, 08:51
par Teenoo
Je suis sous Mac OS 10.5. Pour le shortag <? j'ai juste fait une erreur pour le forum, il était bien écrit <?php. Mais mon problème était résolu... Merci tout de même pour votre aide.