Problème avec un code PHP

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Problème avec un code PHP

Message le Dim Avr 30, 2006 21:38

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: Tout sélectionner
<?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="" />';
}
?>


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Message le Dim Avr 30, 2006 21:54

il faut les jours et mois sur 2 digits.
2006-05-01, par exemple


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Dim Avr 30, 2006 21:54

Code: Tout sélectionner
} 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: Tout sélectionner
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

jidébé
WRInaute discret
WRInaute discret
 
Messages: 180
Inscription: 26 Juil 2005

Message le Dim Avr 30, 2006 21:55

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.


dd32
Modérateur
Modérateur
 
Messages: 3387
Inscription: 9 Sep 2005

Message le Dim Avr 30, 2006 21:57

Je pense que tu emploies mal les conditions if, tu devrais plutôt utiliser un switch.

Exemple :
Code: Tout sélectionner
<?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.

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Avr 30, 2006 22:03

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

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Avr 30, 2006 22:05

J'ai essayé avec le CODE de DD32.

jidébé
WRInaute discret
WRInaute discret
 
Messages: 180
Inscription: 26 Juil 2005

Message le Dim Avr 30, 2006 22:13

Il faut échapper les " dans les echo:
echo "<img src=\"/images/header/nouvel-an.png\" alt=\"\" />";

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Avr 30, 2006 22:19

Merci, ça marche, sauf pour la ligne :
echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
Faut mettre quoi? Merci.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Message le Dim Avr 30, 2006 22:23

gcvoiron a écrit:Merci, ça marche, sauf pour la ligne :
echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";
Faut mettre quoi? Merci.

Code: Tout sélectionner
echo "<img src="/images/header/header.png" width="264" height="84" alt="" />";

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Avr 30, 2006 22:27

Il n'y a pas d'erreur, mais ça m'affiche 2 fois le header....


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Message le Dim Avr 30, 2006 22:34

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

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Avr 30, 2006 22:36

Vous pouvez me donner un exemple svp? Puis je l'appliquerai au reste. Merci.

jidébé
WRInaute discret
WRInaute discret
 
Messages: 180
Inscription: 26 Juil 2005

Message le Dim Avr 30, 2006 22:36

Comme il y a deux switch c'est normal...

Tu peux bricoler ça comme ça:
Code: Tout sélectionner
<?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...

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Avr 30, 2006 22:45

Le CODE marche (plus d'erreur), mais les images sont affichés pour les semaines. Pour la date, ça ne marche pas...
Code: Tout sélectionner
<?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=\"\" />";
}

?>

Problème avec un code PHP

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités