Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 30/01/2007, 14h29   #1
Invité régulier
 
Inscription : octobre 2004
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 28
Points : 6
Points : 6
Par défaut Utilisation du if

Salut

Quelqu'un peut m'expliquer un truc la....

$toto=0;

if($toto=='quitter'){
echo "123";
}




Pourquoi ca m'affiche 123... ?
Norabfr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 14h39   #2
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Fais un echo $toto; avant ton if voir si il a bien pris le 0 et test en mettant $toto=1;
__________________
Aucune aide par MP, utilisez le forum.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 14h39   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 4
Points : 2
Points : 2
Je suppose que la raison est que tu compare un entier à une chaine
essais:

if (Integer.toString($toto)=='quitter'
luffyOP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 14h40   #4
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut pas logique

déjà tu mets un chiffre pour ta variable donc elle est de type int.

Ensuite si le code ci dessous...
Code :
1
2
3
if($toto=='quitter'){
    echo "123";
}
...affiche 123, c'est que tu as du mal recopier le post ou qu'il y a autre chose entre la définition de la variable et le if().

En tout cas, je ne voudrais pas reprendre un projet derrière toi. En quatre lignes tu définis une variable en int que tu testes ensuite en string avec des guillemets simples et si la condition est juste, tu affiches un string avec des guillemets doubles. Aucune rigueur...

Donc pour ta question, tu écris $toto=""; au lieu de $toto=0; et ça fonctionnera.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 15h01   #5
Invité régulier
 
Inscription : octobre 2004
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 28
Points : 6
Points : 6
Citation:
Envoyé par zyongh
déjà tu mets un chiffre pour ta variable donc elle est de type int.

Ensuite si le code ci dessous...
Code :
1
2
3
if($toto=='quitter'){
    echo "123";
}
...affiche 123, c'est que tu as du mal recopier le post ou qu'il y a autre chose entre la définition de la variable et le if().

En tout cas, je ne voudrais pas reprendre un projet derrière toi. En quatre lignes tu définis une variable en int que tu testes ensuite en string avec des guillemets simples et si la condition est juste, tu affiches un string avec des guillemets doubles. Aucune rigueur...

Donc pour ta question, tu écris $toto=""; au lieu de $toto=0; et ça fonctionnera.
Désolé pour la syntaxe mais j'ai fais ça à la vite...

bref tu me dis de remplacer $toto=0; par $toto=""; Ce qui est complétement différent. Dans mon problème $toto doit valoir la valeur 0.

Imaginons que $toto est récupéré d'une autre page il peut etre int ou str,
et dans ce cas il vaut 0.
je fais alors mon test
Code :
1
2
3
4
5
6
 
$toto=0;
if($toto=='quitter'){
    echo 'peu importe';
}
//Je tapes exactement ça comme code dans une page neuve ni plus ni moins...
Cela va m'afficher peu importe alors que ma variable contient 0 .... Et j'aimerais savoir pourquoi...


Ps :
Citation:
Envoyé par J0r_x
Fais un echo $toto; avant ton if voir si il a bien pris le 0 et test en mettant $toto=1;
Si je met 1 pour $toto alors la ca marche rien ne s'écrit je ne passes pas dans la boucle.
Norabfr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 15h25   #6
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut ben je répète

Cela fonctionne en mettant $toto==1 pour la simple et bonne raison que la variable reste du même type (int).

Si tu veux absolument utiliser le 0 il faut que tu le mettes en type chaîne donc tu fais:

Code :
1
2
3
4
5
$toto = strval(0);
 
if($toto=='quitter'){
    echo '123';
}
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 15h30   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Je sais pas si c'est ce que tu veux mais tu peux essayer avec un triple égal, comme ça il compare le type de données en plus du contenu.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 15h31   #8
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
ou $toto='0' $toto=''+0 etc ..
__________________
Aucune aide par MP, utilisez le forum.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 15h37   #9
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut illogique

Tu dis que la variable $toto est récupéré d'une autre page alors que là, tu prends un exemple avec $toto déclarée en local. Ce qui n'a rien à voir. Car si par exemple tu récupère $toto d'un formulaire même s'il vaut 0 par le passage ($_POST ou $_GET) il sera transformé en string. Ton problème n'a docn plus lieu.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 16h38   #10
Membre éclairé
 
Avatar de sohnic
 
Femme
bioinfo
Inscription : mai 2003
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : bioinfo

Informations forums :
Inscription : mai 2003
Messages : 385
Points : 363
Points : 363
Bonjour,
Ton probleme vient bien de la valeur 0 attribuée a $toto, qui dans ce contexte vaut... faux.
Tu n'aurais pas ce probleme avec $toto=1.
Tu as donc $toto ne vaut pas quitter (faux), or $toto=faux, donc l'egalité est respectée...

Pour pallier a ce probleme on utilise l'egalite stricte ===
ce qui donne :
Code :
1
2
3
4
5
6
7
8
 
<?php
$toto=0;
 
if($toto==='quitter'){
echo "123";
}
?>
Ca permet de comparer des strings avec des valeurs nulles.
Une subtilité du PHP et surement d'autres langages.
Sohnic
__________________
http://www.noctinfo.fr/

(\ _ /)
(='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
(")-(")
sohnic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 09h44   #11
Invité régulier
 
Inscription : octobre 2004
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 28
Points : 6
Points : 6
Citation:
Envoyé par sohnic
Bonjour,
Ton probleme vient bien de la valeur 0 attribuée a $toto, qui dans ce contexte vaut... faux.
Tu n'aurais pas ce probleme avec $toto=1.
Tu as donc $toto ne vaut pas quitter (faux), or $toto=faux, donc l'egalité est respectée...

Pour pallier a ce probleme on utilise l'egalite stricte ===
ce qui donne :
Code :
1
2
3
4
5
6
7
8
 
<?php
$toto=0;
 
if($toto==='quitter'){
echo "123";
}
?>
Ca permet de comparer des strings avec des valeurs nulles.
Une subtilité du PHP et surement d'autres langages.
Sohnic


Merci pour ton explication sohnic je comprends mieu

Merci quand meme zyongh je m'étais surement mal exprimé mais j'attendais surtout une explication de pourquoi je rentres dans ma boucle et par pourquoi faut pas le faire ou le faire autrement
Norabfr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 17h39   #12
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Le principal est que quelqu'un ait pu apporter une solution à ton problème.

C'est tout l'intérêt des forums dans la mentalité de respect de developpez.com
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web