i974 Internet Réunion

Bienvenue, vous n'êtes pas connecté. ( Se connecter )

Devis Site Internet
Remplissez gratuitement notre formulaire de demande de devis pour votre futur site Internet made in Réunion...

Régie publicitaire
Annoncez sur le plus gros réseau de sites réunionnais | Gagnez de l'argent en relayant de la publicité 100% Réunion..


Forum pour webmasters & professionnels du web réunionnais !

RSS >  probleme if else
loris #1 08/11/2007 - 17h08

Groupe : Entrepreneur
Messages : 1462
Enregistré le : 05/03/2007

Hors ligne Site Web

J'ai un site avec des milliers de pages.

Je fais une include dans chaque page appelant fichier.php

Dans ce fichier j'ai quelques lignes de code du genre :


if (eregi("/page1.html", $string))
{
echo "message special 1";
}
if (eregi("/page2.html", $string))
{
echo "message special 2";
}
if (eregi("/page3.html", $string))
{
echo "message special 3";
}


Cependant je n'ai que 3 pages spéciales ou j'affiche donc un message spécial !

J'ai ajouté une fonction else pour afficher "aucun message spécial" sur toutes les autres pages :


if (eregi("/page1.html", $string))
{
echo "message special 1";
}
if (eregi("/page2.html", $string))
{
echo "message special 2";
}
if (eregi("/page3.html", $string))
{
echo "message special 3";
}
else
{
echo "aucun message special";
}


Le probleme :

Sur page1.html page2.html page3.html, le code me donne non seulement le message spécial mais aussi "aucun message spécial"... Comment se fasse t-il ? Erreur dans le code ?

Merci pour votre aide !
-
MIXIZ Création et référencement de sites Internet
-
Ile de la Reunion Portail i974.fr : blog, annuaire et forum
-
Buzz974 C'est vous qui faites l'actu de La Réunion
-
Grogo #2 08/11/2007 - 17h17

Groupe : Administrateur
Messages : 657
Enregistré le : 07/03/2007

Hors ligne Site Web

il n'y a pas de "elseif" en PHP ?

si oui :

if (eregi("/page1.html", $string))
{
echo "message special 1";
}
elseif (eregi("/page2.html", $string))
{
echo "message special 2";
}
elseif (eregi("/page3.html", $string))
{
echo "message special 3";
}
else
{
echo "aucun message special";
}

[EDIT] : mate là http://www.manuelphp.com/php/control-structures.elseif.php

sinon un SWITCH est plus propre :


<?php
switch ($i) {
case "tarte":
    echo "i est une tarte";
    break;
case "barre":
    echo "i est une barre";
    break;
case "gateau":
    echo "i est un gateau";
    break;
}
?>

source : http://www.manuelphp.com/php/control-structures.switch.php
Ce message a été édité par Grogo le 08/11/2007 à 17h24.
Grogo #3 08/11/2007 - 17h27

Groupe : Administrateur
Messages : 657
Enregistré le : 07/03/2007

Hors ligne Site Web

switch ($string) {
case "/page1.html":
    echo "message special 1";
    break;
case "/page2.html":
    echo "message special 2";
    break;
case "/page3.html":
    echo "message special 3";
    break;
case else:
    echo "pas de message special";
    break;
}

(en supposant que "case else" fonctionne en PHP...)
loris #4 08/11/2007 - 17h36

Groupe : Entrepreneur
Messages : 1462
Enregistré le : 05/03/2007

Hors ligne Site Web

Merci beaucoup grogo ! Jackpot for me : D
-
MIXIZ Création et référencement de sites Internet
-
Ile de la Reunion Portail i974.fr : blog, annuaire et forum
-
Buzz974 C'est vous qui faites l'actu de La Réunion
-
Vince #5 08/11/2007 - 18h18

Groupe : Entrepreneur
Messages : 713
Enregistré le : 08/03/2007

Hors ligne Site Web

J'ai un site avec des milliers de pages.



Le code de Grogo est bien mais avec un petit nombre d'éléments. Gérer un site avec des milliers de pages ça doit pas être de la tarte avec un switch.

Je pense que ça pourrait peut-être être plus pratique avec une petite boucle do while parcourant le recordset d'une table de base de données MessageParPage par exemple et vérifiant si le numéro de page appelé est 1, 2, 3 etc et te renvoyant le message associé.

Exemple très sommaire en "français" :

Tant Que pas fin de la table MessageParPage Faire

   Si le num de page appelé = numéro de page dans la table Alors

        Afficher le message correspondant contenu ds la table
        On sort de la boucle car on a trouvé ce qu'on voulait
   Fin Si

   Passer à l'enregistrement suivant
Fin Tant Que


Ca pourrait te faire économiser environ 990 lignes de codes.

Et puis si tu veux changer le message ou en partie, avec une requête sql ça risque d'être un peu plus simple qu'un "rechercher/remplacer" des éditeurs web.
Le blog Projicom.re
Service en ligne d'envois de SMS : WebSMS
Service en ligne de gestion de jeux SMS : MédiaSMS
loris #6 08/11/2007 - 18h34

Groupe : Entrepreneur
Messages : 1462
Enregistré le : 05/03/2007

Hors ligne Site Web

Merci Vince pour ta solution !

En fait j'ai remplacé tous les "if" par "ifelse" sauf le premier ! Tout fonctionne rapidement !

Cette solution, dans mon cas, est la plus adapté : )

Thanks vince ; )
-
MIXIZ Création et référencement de sites Internet
-
Ile de la Reunion Portail i974.fr : blog, annuaire et forum
-
Buzz974 C'est vous qui faites l'actu de La Réunion
-
Vince #7 08/11/2007 - 18h43

Groupe : Entrepreneur
Messages : 713
Enregistré le : 08/03/2007

Hors ligne Site Web

De rien Loris, c'est une des solutions possibles mais effectivement la moins évidente à mettre en oeuvre.  ; )

J'imagine la jolie brochette de if elsif de ce fichier pour des milliers de pages  : l o l :
Ce message a été édité par Vince le 08/11/2007 à 18h43.
Le blog Projicom.re
Service en ligne d'envois de SMS : WebSMS
Service en ligne de gestion de jeux SMS : MédiaSMS
loris #8 08/11/2007 - 18h51

Groupe : Entrepreneur
Messages : 1462
Enregistré le : 05/03/2007

Hors ligne Site Web

Non justement, il n'y a qu'une 50aine de pages pour un message spécial, toutes les autres ont le message standard : )
-
MIXIZ Création et référencement de sites Internet
-
Ile de la Reunion Portail i974.fr : blog, annuaire et forum
-
Buzz974 C'est vous qui faites l'actu de La Réunion
-
Grogo #9 08/11/2007 - 18h52

Groupe : Administrateur
Messages : 657
Enregistré le : 07/03/2007

Hors ligne Site Web

ménon

il teste 3 pages

pas les milliers :p, il include dans les milliers par contre...
Vince #10 08/11/2007 - 18h56

Groupe : Entrepreneur
Messages : 713
Enregistré le : 08/03/2007

Hors ligne Site Web

Ah ok, une 50aine de pages avec message spécial ça va encore à la main.
Le blog Projicom.re
Service en ligne d'envois de SMS : WebSMS
Service en ligne de gestion de jeux SMS : MédiaSMS
Kyuubi #11 08/11/2007 - 20h59

Groupe : VIP
Messages : 120
Enregistré le : 17/07/2007

Hors ligne Site Web

Vince @ 08/11/2007 - 18h56 a dit:

Ah ok, une 50aine de pages avec message spécial ça va encore à la main.



il manque les 3 points de suspension aprés cette remarque na ?  : D mdr

juste une petite précision ^ ^

switch ($string) {
case "/page1.html":
    echo "message special 1";
    break;
case "/page2.html":
    echo "message special 2";
    break;
case "/page3.html":
    echo "message special 3";
    break;
case else:
    echo "pas de message special";
    break;
}

(en supposant que "case else" fonctionne en PHP...)




En php ça serait default: et non case else:

switch ($string) {
case "/page1.html":
    echo "message special 1";
    break;
case "/page2.html":
    echo "message special 2";
    break;
case "/page3.html":
    echo "message special 3";
    break;
default:
    echo "pas de message special";
}


Et switch est "censé" être plus rapide que le if mais bon moi sur freestyle story je vois pas la différence avec mon ancien if mdr

Bonne soirée ^ ^

PS : j'aime ce forum et l'entraide qu'on y trouve, good very good ^ ^
Grogo #12 09/11/2007 - 07h00

Groupe : Administrateur
Messages : 657
Enregistré le : 07/03/2007

Hors ligne Site Web

thx pour l'info du "default" ^^'

en ASP/VBSCRIPT pour ceux qui tomberaient par hasard dessus, ça donne :

Select Case (string)
  case "/page1.html"
    response.write "message special 1"
  case "/page2.html"
    response.write"message special 2"
  case "/page3.html"
    response.write"message special 3"
  case else
    response.write "pas de message special"
End Select

 >  Réponse rapide

Composez votre message

 >  Informations du forum

1 personne(s) présente(s) durant une période de 30 minutes (0 membre(s) et 1 invité(s)).

Posted Image

Edité par la société i974 contact : 0692 69 60 89 [e] : annonceur_at_i974.net - Vous êtes "webmaster" ou travaillez de près ou de loin dans le domaine du web à la Réunion, demandez nous des accès au forum i974.com