Problème avec un code PHP

WRInaute occasionnel
Bonjour, j'utilise le CODE ci-dessous pour modifier le header de mon site en fonction du jour de l'année, ou de la semaine. Mais il ne marche pas. Sauriez-vous m'expliquer pourquoi? Merci.
Code:
<?php 
$semaine = date("W"); //On récupère le n° de la semaine
$date=date('Y-m-d');   
if ($semaine == 1) { 
  echo '<img src="/images/header/nouvel-an.png"  alt="" />'; 
} 
if ($semaine == 10) { 
  echo '<img src="/images/header/header3d.jpg.gif"  alt="" />'; 
} 
if ($semaine == 9) { 
  echo '<img src="/images/header/carnaval.png"  alt="" />'; 
} 
if ($semaine == 52) { 
  echo '<img src="/images/header/noel.png"  alt="" />'; 
} 
if($date=='2006-1-29'){ 
  echo '<img src="/images/header/an-chinois.png"  alt="" />'; 
} 
if($date=='2006-2-14'){ 
  echo '<img src="/images/header/saint-valentin.png"  alt="" />'; 
} 
if($date=='2006-3-20'){ 
  echo '<img src="/images/header/printemps.png"  alt="" />'; 
} 
if($date=='2006-4-1'){ 
  echo '<img src="/images/header/1ier-avril.png"  alt="" />'; 
} 
if($date=='2006-5-1'){ 
  echo '<img src="/images/header/1ier-mai.png"  alt="" />'; 
} 
if($date=='2006-7-21'){ 
  echo '<img src="/images/header/ete.png"  alt="" />'; 
} 
if($date=='2006-7-14'){ 
  echo '<img src="/images/header/14-juillet.png"  alt="" />'; 
} 
if($date=='2006-9-23'){ 
  echo '<img src="/images/header/automne.png"  alt="" />'; 
} 
if($date=='2006-31-10'){ 
  echo '<img src="/images/header/halloween.png"  alt="" />'; 
} 
else { 
echo '<img src="/images/header/header.png" width="264" height="84" alt="" />'; 
} 
?>
 
WRInaute accro
Code:
} else { 
echo '<img src="/images/header/header.png" width="264" height="84" alt="" />'; 
} 
?>

cette condition n'est valable que si le jour n'est pas le 31 oct 2006... donc effectivement, ce sera toujours ce header d'afficher

le mieux serait un truc à la fin de ton script du genre

Code:
if($date!='2006-31-10' || $date!='2006-9-23' etc...)
{ 
echo '<img src="/images/header/header.png" width="264" height="84" alt="" />'; 
}

ou alors un switch... ou encore des elseif
 
WRInaute discret
Salut,

1) Date("m") donne le numéro du mois avec un zéro devant si il est inférieur à 10, donc il faut que tu en tienne compte dans tes test après.

2) Pour halloween, tu as inversé le jour et le mois.
 
WRInaute accro
Je pense que tu emploies mal les conditions if, tu devrais plutôt utiliser un switch.

Exemple :
Code:
<?php

$semaine = date("W"); //On récupère le n° de la semaine 
$date=date("Y-m-d");

switch ($semaine) {
case 1:
   echo "<img src="/images/header/nouvel-an.png" alt="" />";
   break;
case 10:
   echo "<img src="/images/header/header3d.jpg.gif" alt="" />";
   break;
case 9:
   echo "<img src="/images/header/carnaval.png" alt="" />";
   break;
case 52:
   echo "<img src="/images/header/noel.png" alt="" />";
   break;
default:
   echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
}

switch ($date) {
case "2006-1-29":
   echo "<img src="/images/header/an-chinois.png" alt="" />";
   break;
case "2006-2-14":
   echo "<img src="/images/header/saint-valentin.png" alt="" />";
   break;
case "2006-3-20":
   echo "<img src="/images/header/printemps.png" alt="" />";
   break;
case "2006-4-1":
   echo "<img src="/images/header/1ier-avril.png" alt="" />";
   break;
case "2006-5-1":
   echo "<img src="/images/header/1ier-mai.png" alt="" />";
   break;
case "2006-7-21":
   echo "<img src="/images/header/ete.png" alt="" />";
   break;
case "2006-7-14":
   echo "<img src="/images/header/14-juillet.png" alt="" />";
   break;
case "2006-9-23":
   echo "<img src="/images/header/automne.png" alt="" />";
   break;
case "2006-31-10":
   echo "<img src="/images/header/halloween.png" alt="" />";
   break;
default:
   echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
}
?>

EDIT : arf, Finstreet m'a doublé pendant ma rédac de code... :lol:
PS : je n'ai donc pas modifié halloween etc.
 
WRInaute occasionnel
Merci de vos réponses, j'ai essayé avec EasyPHP, et j'ai l'erreur suivante :

Parse error: parse error, expecting `','' or `';'' in c:\programmes\internet\easyphp1-8\www\index.php on line 8
 
WRInaute occasionnel
Merci, ça marche, sauf pour la ligne :
echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
Faut mettre quoi? Merci.
 
WRInaute accro
gcvoiron a dit:
Merci, ça marche, sauf pour la ligne :
echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
Faut mettre quoi? Merci.
Code:
echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
 
WRInaute accro
Ben oui, une fois pour switch ($semaine) et une fois pour switch ($date).
Pour ne l'avoir qu'une seule fois, il ne faut plus des switch mais des if...elseif ...else
 
WRInaute discret
Comme il y a deux switch c'est normal...

Tu peux bricoler ça comme ça:
Code:
<?php
$testdate=0;
$testsemaine=0;
$semaine = date("W"); //On récupère le n° de la semaine
$date=date("Y-m-d");

switch ($semaine) {
case 1:
   echo "<img src="/images/header/nouvel-an.png" alt="" />";
   break;
case 10:
   echo "<img src="/images/header/header3d.jpg.gif" alt="" />";
   break;
case 9:
   echo "<img src="/images/header/carnaval.png" alt="" />";
   break;
case 52:
   echo "<img src="/images/header/noel.png" alt="" />";
   break;
default:
   $testsemaine=1;
}

switch ($date) {
case "2006-1-29":
   echo "<img src="/images/header/an-chinois.png" alt="" />";
   break;
case "2006-2-14":
   echo "<img src="/images/header/saint-valentin.png" alt="" />";
   break;
case "2006-3-20":
   echo "<img src="/images/header/printemps.png" alt="" />";
   break;
case "2006-4-1":
   echo "<img src="/images/header/1ier-avril.png" alt="" />";
   break;
case "2006-5-1":
   echo "<img src="/images/header/1ier-mai.png" alt="" />";
   break;
case "2006-7-21":
   echo "<img src="/images/header/ete.png" alt="" />";
   break;
case "2006-7-14":
   echo "<img src="/images/header/14-juillet.png" alt="" />";
   break;
case "2006-9-23":
   echo "<img src="/images/header/automne.png" alt="" />";
   break;
case "2006-31-10":
   echo "<img src="/images/header/halloween.png" alt="" />";
   break;
default:
   $testdate=1;
}


if($testsemaine ==1 && $testdate==1)
{
echo "<img src=\"/images/header/header.png\" width=\"264\" height=\"84\" alt=\"\" />";
}

?>

Bon je n'ai pas échappé les " dans l'exemple , il faudra le faire...
 
WRInaute occasionnel
Le CODE marche (plus d'erreur), mais les images sont affichés pour les semaines. Pour la date, ça ne marche pas...
Code:
<?php 
$testdate=0; 
$testsemaine=0; 
$semaine = date("W"); //On récupère le n° de la semaine 
$date=date("Y-m-d"); 

switch ($semaine) { 
case 1: 
   echo "<img src='images/header/nouvel-an.png'/>"; 
   break; 
case 10: 
   echo "<img src='images/header/header3d.jpg'/>"; 
   break; 
case 9: 
   echo "<img src='images/header/carnaval.png'/>"; 
   break; 
case 52: 
   echo "<img src='images/header/noel.png'/>"; 
   break; 
default: 
   $testsemaine=1; 
} 

switch ($date) { 
case "2006-1-29": 
   echo "<img src='images/header/an-chinois.png'/>"; 
   break; 
case "2006-2-14": 
   echo "<img src='images/header/saint-valentin.png'/>"; 
   break; 
case "2006-3-20": 
   echo "<img src='images/header/printemps.png'/>"; 
   break; 
case "2006-4-1": 
   echo "<img src='images/header/1ier-avril.png'/>"; 
   break; 
case "2006-5-1": 
   echo "<img src='images/header/1ier-mai.png'/>"; 
   break; 
case "2006-7-21": 
   echo "<img src='images/header/ete.png'/>"; 
   break; 
case "2006-7-14": 
   echo "<img src='images/header/14-juillet.png'/>"; 
   break; 
case "2006-9-23": 
   echo "<img src='images/header/automne.png'/>"; 
   break; 
case "2006-31-10": 
   echo "<img src='images/header/halloween.png'/>"; 
   break; 
default: 
   $testdate=1; 
} 


if($testsemaine ==1 && $testdate==1) 
{ 
echo "<img src=\"/images/header/header.png\" width=\"264\" height=\"84\" alt=\"\" />"; 
} 

?>
 
WRInaute discret
Il faut faire les corrections de mon premier message, les numéros de mois à deux chiffres et inverser halloween.
 
WRInaute occasionnel
C'est nikel, mais il y a un peti problème d'affichage des headers (pas en face du deuxième) avec Internet Explorer mais pas avec Mozilla. Sauriez-vous me dire d'où il vient? Merci.
nav.jpg


PS : Il n'est pas joli, mon header pour le premier mai?
 
WRInaute accro
gcvoiron a dit:
C'est nikel, mais il y a un peti problème d'affichage des headers (pas en face du deuxième) avec Internet Explorer mais pas avec Mozilla. Sauriez-vovus me dire d'où il vient? Merci.
Non parce qu'il nous faudrait plus d'infos sur ton fichier style css, stp...

gcvoiron a dit:
PS : Il n'est pas joli, mon header pour le premier mai?
Si, si :lol:
 
Discussions similaires
Haut