j'ai suivi le tuto site php de A-Z. Il faut reconnaitre qu'en local sur wamp il marche super bien. Sur mon hébergeur mutualisé j'ai un problème. les styles ne s'affichent pas. le lien du site est www.padfacameroun.net. je ne comprends pas j'ai vérifier mon fichier router.php, il est correct. peut être mes htaccess, si quelqu'un peut m'aider SVP. j'ai mis le site dans le www. donc www/ contenu du site. j'ai pas fait www/monsite/contenu. please help.

9 réponses


ksta
Réponse acceptée

Salut :),

comme le dit Matthias tu à effectivement deux slash dans ton url de css mais également de javascript en faite cela viens surement de ton .htaccess

SetEnv PHP_VER 5_3
Options +FollowSymlinks
Options +MultiViews
RewriteEngine On
    //RewriteBase / = slash supplémentaire 
RewriteBase /
RewriteRule (.*) webroot/$1 [L]

donc si tu est obliger de spécifier cette ligne dans le .htaccess alors supprime le slash dans la fonction webbroot et ton css fonctionnera car tu n'aura plus de double slash ;)

static function webroot($url){
    trim($url,'/');
        //avant
    return BASE_URL.'/'.$url; // remplacer cette ligne par celle d'après 
        //après
    return BASE_URL.$url;
}
ksta
Réponse acceptée

de rien ;)

peut tu mettre un debug dans la fonction webroot et me montrer le résultat des deux debug STP :

static function webroot($url){
    trim($url,'/');
        //avant
    return BASE_URL.'/'.$url; // un debug avec cette ligne
        //après
    return BASE_URL.$url; // et un autre avec cette ligne 
    debug(BASE_URL);
    debug($url);
}

pour ta question sur le rewiteBase je ne sais pas du tous car j'ai encor beaucoup de mal avec le .htaccess mais est tu obliger de le mettre?

Salut, je ne comprends pas bien comment tu inclus tes feuilles de styles, tu écris :

<link href="//css/style.css" rel="stylesheet">

mais je ne pense pas que ça puisse marcher.
Montre nous ton code on pourra peut-être en savoir plus sur ton appel aux feuilles...

Personnellement quand j'appelle mes feuilles de styles ça ressemble à ça en php :

<link rel="stylesheet" type="text/css" href="<?php echo Router::webroot('webroot/css/style.css'); ?>">

et après avoir changer la BASE_URL dans mon index le lien s'affiche parfaitement sur mon site (aussi hébergé ovh) !

voici mon code <link rel="stylesheet" type="text/css" href="<?php echo Router::webroot('css/style.css'); ?>">
mes fonctions url et webroot
static function url($url = ''){
trim($url,'/');
foreach(self::$routes as $v){
if(preg_match($v'originreg'],$url,$match)){
$url = $v'redir'];
foreach($match as $k=>$w){
$url = str_replace(":$k:",$w,$url);
}
}
}
foreach(self::$prefixes as $k=>$v){
if(strpos($url,$v)===0){
$url = str_replace($v,$k,$url);
}
}
return BASE_URL.'/'.$url;
}
static function webroot($url){
trim($url,'/');
return BASE_URL.'/'.$url;
}
met htaccess
à la racine

SetEnv PHP_VER 5_3
Options +FollowSymlinks
Options +MultiViews
RewriteEngine On
RewriteBase /
RewriteRule (.*) webroot/$1 [L]

dans webroot

SetEnv PHP_VER 5_3
Options +FollowSymlinks
Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
d'ou peut provenir le problème?

Je ne sais pas si je me suis pris correctement mais quand j'ai mis mon site en ligne, j'ai modifié la ligne BASE_URL en lui attribuant l'adresse de mon site (le fichier est index.php à la racine du site) et ensuite j'ai appelé mes css comme je t'ai dis, ce n'est peut être pas la solution exacte mais chez moi ça marche parfaitement.

Ce qui me semble étrange c'est que lorsque que tu appelle tes feuilles de style sur ton site, tu te retrouves avec deux "//" avant css...

En regardant ton site j'ai vu que tu avait insérer le calendrier de grafikart :)

si tu à utilise son code voici tu peut avoir les jour du mois précédent et les jours du moi suivant chaque moi ;)

tu peut également ajouter une classe qui te permettra en css de les griser :)

voici le code si tu le souhaite :) :

<div class="periods">
    <div class="months">
        <ul>
          <img id="monthPrevious" class="imgLeft"src="<?php echo Router::webroot('img/calendrier/fleche-gauche.png'); ?>" alt="mois-précedent"/>
            <?php foreach ($date->months as $id=>$m): ?>
                 <li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_decode($m),0,3)); ?></a></li>
            <?php endforeach; ?>
             <img id="monthNext" class="imgRight" src="<?php echo Router::webroot('img/calendrier/fleche-droite.png'); ?>" alt="mois-précedent"/>
        </ul>
    </div>
    <div class="clear"></div>
    <?php $dates = current($dates); ?>
              <!-- Parcoour les mois -->
    <?php foreach ($dates as $m=>$days): ?>
       <div class="month relative" id="month<?php echo $m; ?>">
       <table>
           <thead>
               <tr>
                    <!-- Insère en caractère les jours de la semaine -->
                  <?php foreach ($date->days as $d): ?>
                    <th><?php echo substr($d,0,3); ?></th>
                  <?php endforeach; ?>
               </tr>
           </thead>
           <tbody>
               <tr>
                    <!-- Parcour Les jours du mois -->
               <?php $end = end($days); foreach($days as $d=>$w): ?>
                   <?php $time = strtotime("$year-$m-$d"); ?>
                      <!-- Si le jour est égale à 1 et le jour de la semaine est différent de lundi (1) -->
                   <?php if($d == 1 && $w != 1): ?>
                        <!--
                          Si le moi est égale à Janvier (1)
                          on affiche pas les jours de l'année précédente du moi de Décembre
                          (c'est le comportement que j'ai choisie)
                        -->
                      <?php if($m == 1): ?>
                         <td colspan="<?php echo $w-1; ?>" class="padding"></td>
                          <!-- Sinon on récupère les jours du mois précedent -->
                      <?php else: ?>

                            <!--
                              Récupère le dernier jour du mois précédent
                              array_keys permet de récupérer la valeur d'un tableau selon la clé passer en paramètre
                              end récupère la dernière valeur d'un tableau
                            -->
                          <?php $days_month_prec = end(array_keys($dates$m-1])); ?>
                            <!--
                              Insère les jours du mois précédent
                            -->
                          <?php for ($i=0; $i<$w-1; $i++): ?>
                          <td>
                            <div class="relative days_month_prev">
                                <!--
                                  On calcule le jour en faisant :
                                    le dernier jour du moi précédent - ( ( le jour de la semaine - 2 ) - $i )
                                    exemple :
                                      jour de la semaine = 5
                                      dernier jour du moi précédent = 31
                                      $w-1 = 4
                                    donc :
                                      31 - ( ( 5-2 ) - 0 ) = 28
                                      31 - ( ( 5-2 ) - 1 ) = 29
                                      31 - ( ( 5-2 ) - 2 ) = 30
                                      31 - ( ( 5-2 ) - 3 ) = 31
                                -->
                              <div class="day"><?php echo $days_month_prec-(($w-2)-$i);?></div>
                            </div>
                          </td>
                        <?php endfor; ?>
                      <?php endif; ?>
                   <?php endif; ?>
                      <!-- Si le jour et le mois correspond à aujourd'hui alors on lui rajoute la class today -->
                   <td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
                        <div class="relative">
                            <div class="day"><?php echo $d; ?></div>
                        </div>
                       <div class="daytitle">
                           <?php echo $date->days$w-1]; ?> <?php echo $d; ?> <?php echo $date->months$m-1]; ?>
                       </div>
                       <ul class="events">
                           <?php if(isset($events$time])): foreach($events$time] as $e): ?>
                                <li><?php echo $e; ?></li>
                           <?php endforeach; endif; ?>
                       </ul>
                   </td>
                    <!-- Si le jour de la semaine est égale a dimanche alors on ferme le <tr> et on en ouvre un autre -->
                   <?php if($w == 7): ?>
                    </tr><tr>
                   <?php endif; ?>
               <?php endforeach; ?>
                  <!--
                    Si le dernier jour du moi ne se termine pas un dimanche alors on rajoute les premier jour du moi suivant
                  -->
               <?php if($end != 7): ?>
                   <!-- Si on est le moi de décembre alors on ne rajoute pas les jours du moi de janvier suivant -->
                  <?php if($m == 12): ?>
                         <td colspan="<?php echo 7-$end; ?>" class="padding"></td>
                  <?php else: ?>
                      <!-- Permet de récupérer les jours du moi suivant (même système que pour les jours du moi précédent) -->
                    <?php $days_month_next = array_keys($dates$m+1]); ?>
                        <?php for ($i=0; $i<7-$end; $i++): ?>
                        <td>
                          <div class="relative days_month_next">
                            <div class="day"><?php echo $days_month_next$i];?></div>
                          </div>
                        </td>
                    <?php endfor; ?>
                  <?php endif; ?>
               <?php endif; ?>
               </tr>
           </tbody>
       </table>
       </div>
    <?php endforeach; ?>
</div>
<div class="clear"></div>

KSTA merci pour le code du calendrier. en fait ça marche sur la page d'accueil. mais quand je vais sur un lien voici se que ça donne:
<link rel="stylesheet" type="text/css"href="/webroot/posts/viewcss/boot.css">
je pense que c'est le htaccess qui redirige le lien vers webroot. fraudrait-il ajouter un autre rewriteRule ou placer le rewriteBase après le rewriteRule? merci.

Le debug montre juste que,lorsque je clique sur un lien. BASE_URL redevient/webroot/posts/view et url css/boot.css ce qui donne /webroot/posts/viewcss/boot.css. mon problème c'est pourquoi BASE_URL ne reste pas stable comme sur index c'est à dire /. de l'aide.

je pense que mon problème est au niveau du SetEnv PHP_VER 5_3 qui n'est pas bien configuré sur ovh. quand je met SetEnv PHP_VER 5 qui est la version php 5.2, je n'ai pas de problème avec les styles. mais mon contenu de la base de données ne s'affiche pas à cause du php 5.2. Si quelqu'un peut m'aider par rapport à ce problème je suis perdu.