Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 10h02   #1
Membre expérimenté
 
Avatar de ArKam
 
Inscription : mars 2007
Messages : 505
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mars 2007
Messages : 505
Points : 511
Points : 511
Par défaut Différence de comportement switch/case et if/else

Bien le bonjour.

J'ai experimenté ce matin un truc bizarre avec php.

J'ai un script de connexion à une DB Mysql tel que suis qui fonctionne parfaitement:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
$host="localhost";
$username="toto";
$password="dtc";
 
$upLink=@mysql_connect($host,$username,$password);
 
if (!$upLink) {
	echo "Une erreur est survenue lors de la tentative de connexion à la base de données."."</br>"."L'erreur suivante est survenue: ".mysql_error();
}
		else {
				echo "Connexion réalisé avec succés!";
		}
 
?>
Maintenant, je me dit que si j'ai trop de cas à vérifier, il vas mieux falloir utiliser Switch/Case, le hic c'est que apparement ça ne fonctionne pas.

En effet le script suivant, me répond une connexion correct à chaque fois que je l'execute, hors, la dans notre cas il devrait me dire que ce n'est pas bon.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
$host="localhost";
$username="toto";
$password="dtc";
 
$upLink=@mysql_connect($host,$username,$password);
 
switch ($upLink) {
	case (!$upLink):
			 echo "Une erreur est survenue lors de la tentative de connexion à la base de données."."</br>"."L'erreur suivante est survenue: ".mysql_error();
	break;
 
	case ($upLink):
			 echo "Connexion réalisé avec succés!";
	break;
}
?>
N'etant pas trop habitué à Switch/Case, je me dit que le souci viens peut etre de moi, mais ça me parait quand meme etrange.

Donc, si une ame charitable veux bien m'aider
ArKam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 10h47   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 099
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 099
Points : 8 461
Points : 8 461
si tu fais un ! sur un type ressource ca retourne false
si tu veux bien gérer tes erreurs mysql utilise le mysql.trace_mode c'est plus simple et évite les @
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 13h41   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Une structure switch/case permet de tester plusieurs valeurs pour une variable (ou une expression)

Ces deux codes sont équivalents :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
if ($i == 0) 
{
    echo "i égal 0";
} 
elseif ($i == 1) 
{
    echo "i égal 1";
} 
elseif ($i == 2) 
{
    echo "i égal 2";
}
Code :
1
2
3
4
5
6
7
8
9
10
11
switch ($i) {
    case 0:
        echo "i égal 0";
        break;
    case 1:
        echo "i égal 1";
        break;
    case 2:
        echo "i égal 2";
        break;
}
Donc ton code switch/case retraduit en if/else donnerait ceci :
Code :
1
2
3
4
5
6
7
8
if ($upLink != $upLink)
{
	echo "Une erreur est survenue lors de la tentative de connexion à la base de données."."</br>"."L'erreur suivante est survenue: ".mysql_error();
}
elseif ($upLink == $upLink )
{
	 echo "Connexion réalisé avec succés!";
}
ce qui n'a pas grand intérêt

Donc la question c'est : quelles sont les valeurs possibles pour ta variable ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 14h31   #4
Membre expérimenté
 
Avatar de ArKam
 
Inscription : mars 2007
Messages : 505
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : mars 2007
Messages : 505
Points : 511
Points : 511
Ok, merci pour ces informations, je vais donc modifier en conséquence
ArKam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h45.


 
 
 
 
Partenaires

Hébergement Web