Aller au contenu

Sujets conseillés

Posté

Salut,

j'ai un problème minime mais qui me bloque...

Je suis vraiment nul en php...

Voilà ce que j'aimerai faire :

si $destin est égal à rt, alors $dest sera égal à adresse1_AT_online.fr, si $destin est égal à ls, alors $dest sera égal à adresse2_AT_online.fr et enfin si $destin est égal à db, alors $dest sera égal à adresse3_AT_online.fr.

J'ai fait ça :unsure: :

if ($destin == "rt")
{
$dest="adresse1_AT_online.fr";
}
elseif ($destin == "ls")
{
$dest="adresse2_AT_online.fr";
}
elseif ($destin == "db")
{
$dest="adresse3_AT_online.fr";
}

Mais ça marche pas :D

C'est tout bête.... Mais je sais pas faire...

Merci d'avance.

Loupilo

Posté

Il y a des chances que $destin soit égal à " rt " (avec espaces), ce qui fait qu'il ne reconnait pas la chaine.

Essaie, juste avant ton 'if', de faire un :

echo "<br>-".$destin."-";

S'il y a un espace, tu le verras.

Pour info, tu devrais remplacer tes 'if' par un 'switch'.

Ca donnerait qqch comme :

switch($destin){

 case ("rt") :$dest="adresse1_AT_online.fr";
                   break;
 case ("ls") :$dest="adresse2_AT_online.fr";
                   break;
 case ("db") :$dest="adresse3_AT_online.fr";
                   break;
 default : $dest="adresse_par_defaut_at_machin.fr";

}

Anonymus.

Posté

> Pour info, tu devrais remplacer tes 'if' par un 'switch'.

A lui de voir, moi je conseillerai de ne surtout pas le faire. Les switch/break c'est tout de même pervertir pas mal le switch (qui marche normalement en cumulatif) et ça n'apporte globalement pas plus de perf.

Les switch/break c'est le meilleur moyen pour oublier un break, confondre quand dans un code pour une fois tu as réellement besoin du switch sans le break (et casser la lisibilité des deux formes qui se ressemblent), faire une exception visuelle dans le code avec une forme unique de bloc qui ne se sert pas d'accolades ...

Posté

Anonymus : ça donne bien -rt- ...

Même avec les espaces ça marche pas.

Ganf, peut être que le switch n'est pas une bonne solution, mais... ça marche !

Merci bien Anonymus ;)

Juste une question sur ce fameux switch, à quoi sert "default" ?

Merci ;)

Posté

Perso, je n'utilise presque jamais le elseif, que je trouve trompeur. Mais c'est peut etre une histoire de gout.

Le default, c'est la valeur qui correspond aux autres cas.

Dans l'exemple que je donne, il y a 3 cas, et pour chaque cas, on arrete (mot 'break') la structure conditionnelle.

Si $destin ne correspond à aucun de ces 3 cas, alors c'est le default qui s'applique.

Pour info, tu n'es pas obligé de mettre le default (s'il n'y a pas de valeur par défaut, par exemple).

De même, tu peux vouloir que la boucle continue au lieu de s'arreter au niveau du break (dans certains cas ). Dans ces cas là, tu ne mets pas le break.

Mais d'une manière générale, on écrit ca comme ca.

Posté
Ganf, peut être que le switch n'est pas une bonne solution, mais... ça marche !

Hum ... utilisé comme ça le switch/case/default est équivalent au if/elseif/else. Si ça marche et que ça ne marchait pas avant c'est que tu avais mal écrit ton if ou que tu as corrigé quelque chose ailleurs. Ce n'est en rien le passage au switch qui corrige quoi que ce soit (si tu préfère cette syntaxe utilises là, mais ne crois pas que ce soit ça qui "corrige" quoi que ce soit).

Posté

Merci Anonymus pour tes explications.

Ganf, non, je n'ai rien modifié, sauf "adresse1", etc.

Je ne dis pas que ça corrige quelque chose, mais seulement que ça marche...

++

PS: Ganf j'ai vu ton bouquin par hasard en me baladant dans une librairie, hou le pavé ! Totalement monstrueux ;) ! Et le lien OpenWeb est sympa...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...