Variable rebelle

Eléphanteau du PHP | 41 Messages

28 juil. 2011, 16:20

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.

ViPHP
xTG
ViPHP | 7331 Messages

28 juil. 2011, 18:01

Ce code ne présente aucune erreur.
Es-tu sûr que l'erreur indique cette ligne ?

Eléphanteau du PHP | 41 Messages

28 juil. 2011, 18:52

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>

Eléphanteau du PHP | 41 Messages

28 juil. 2011, 19:26

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

ViPHP
xTG
ViPHP | 7331 Messages

28 juil. 2011, 21:05

A mon avis en local tu n'affiches pas tous les niveaux d'erreur de PHP. ;)

Mammouth du PHP | 2278 Messages

28 juil. 2011, 23:00

A mon avis, idiot comme d'habitude, si tu lui faisais aficher
print_r($_SERVER); die();
tu saurais peut-être ce qui se passe...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

devlop78
Invité n'ayant pas de compte PHPfrance

29 juil. 2011, 02:23

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 ?

Eléphanteau du PHP | 41 Messages

29 juil. 2011, 08:51

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.