D'accord ça ne fait pas d'erreur je le sais j'ai testé depuis x année
"
Encore heureux, le && est la pour tester les 2 cotés de la condition. Si l'une est fausse, alors la condition est fausse.
"mais pourquoi ? théoriquement ça devrait en faire une, alors pourquoi ça n'en fait pas ? c'est voulu ? parce que php à une compilation qui fait que et qui me dit que ça durera ainsi ?"
La différence est notable quand tu utilises un "ou logique". En effet, en premier, tu va lire la première condition. Si la premiere condition est vrai, alors la condition entière est vrai (on ne vérifie plus le reste, ou alors PHP le fait mais ne provoque pas d'erreurs).
L'ordre n'a d'importance que si tu utilises des conditions imbriquées ou alors un "ou logique", à savoir "or" ou "||". C'est tout :)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 16 nov. 2005 à 22:06
et ouais antidote, il existe des choses qui marchent mais qui devraient êtres considérés comme crades...
Est considéré (par moi) comme crade ce qui est lent (j'entend par lent : optimisable facilement) ce qui est illogique, et ce qui est imbuvable (un code imbuvable peut être aéré par des retours à la ligne et commenté... Mais un code imbuvable est crade ssi il est vraiment imbuvable...)...
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 16 nov. 2005 à 18:46
j'aime bien ta vision de la bouteille ^_^
Je sais ce que ça fait réellement mais je voulais porter le point sur la réflexion que ce cas peut apporter.
Je pense que tout les programmeurs devrait raisonner ainsi avant d'utiliser une fonction qui marche.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 nov. 2005 à 10:18
Hello,
je me mêle à la discussion.
Moi mon problème vis à vis de isset() et empty() se résume à ceci :
Si une bouteille existe, elle peut-être vide, ou pleine. Certes. Mais si elle n'existe pas...comment puis-je dire qu'elle est vide ? Pour être vide, par essence, il faut exister (en tous cas, c'est mon avis). Comme quoi, PHP se rapproche parfois de la philosophie ;-)
Bref, je suis d'accord avec Antidote, cette définition de empty() me gêne. Et j'utilise toujours isset() ET !empty() (entre autres) quand je teste mes variables.
Antidote => le sens n'a aucune incidence ici. Si la variable est vidée par le trim() , la doncition sur empty() ne sera pas remplie de toutes manières.
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 15 nov. 2005 à 19:53
et dans ce sens ?
if ( !empty(trim($_POST['action'])) && isset($_POST['action']) )
D'accord ça ne fait pas d'erreur je le sais j'ai testé depuis x année
mais pourquoi ? théoriquement ça devrait en faire une, alors pourquoi ça n'en fait pas ? c'est voulu ? parce que php à une compilation qui fait que et qui me dit que ça durera ainsi ?
ba rien.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 15 nov. 2005 à 17:31
alors teste ! si tu teste, tu verras que empty ne renvera pas d'erreurs !!!
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 14 nov. 2005 à 21:50
Je ne fais jamais ça parce que je ne sais pas quel condition ba testé d'abord php avec un AND
si la variable n'existe pas qui di que empty ne va pas renvoyer une erreur ?
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 14 nov. 2005 à 21:13
"$action = isset($_POST['action']) ? $_POST['action'] : 0;
$mode = isset($_POST['mode']) ? $_POST['mode'] : 0;
if (!empty($action))"
En faite ce n'est pas tout à fait ca qu'il fallait faire :
if ( isset($_POST['action'] && !empty(trim($_POST['action'])) ) {
$action = $_POST['action'];
// Etc...
// Etc...
}
Pourquoi faire compliquer quand on peut faire simple :)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 8 nov. 2005 à 18:27
détails de codings... chacun sa façon de voir les choses, je dirais plutot : façon d'améliorer ta source...
LaurentKOogar
Messages postés369Date d'inscriptionsamedi 4 septembre 2004StatutMembreDernière intervention20 octobre 2013 8 nov. 2005 à 18:21
ptit essai raté de mon précedent post pour arreter de parler des details de coding... et montrer que Webtopliste, c'est avant tout une manière de coder valorisante auprés des moteurs. ++
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 8 nov. 2005 à 17:54
bah écoute, je suis en term S, et j'aimes bien la rigeur... Tu sais, j'ai fait bien plus de 5000 lignes dans mes projets, mais j'ai codé proprement pour que tout le monde puisse en bénéficier sans forcément être dégouté par la vitesse du code, ou par les problèmes rencontrés lors du portage (sur mon serveur, j'avais autorisé les <?, je l'ai éteind pour cause de lancement d'apache-perl, mais quand je le ralumerais, il se peut que <? soit interdit...)
LaurentKOogar
Messages postés369Date d'inscriptionsamedi 4 septembre 2004StatutMembreDernière intervention20 octobre 2013 8 nov. 2005 à 06:06
C kler j'ai un manque de rigeur, mais bon sur 5000 lignes de codes, les oublies <? ou les "", c'est pas dramatique meme si c'est "immonde", j'adore le terme :) En fait j'ai eu mon IUT avec 19 en algo et 5 en maths. Donc chez moi faut plutot chercher du coté rentabilité.
www.webtopliste.com à déjà un futur PR4 et ce trouve premier sur msn avec le mot clef 'top liste' et tout ca; 10 jours seulement aprés son lancement:) Le coding c'est ca aussi :)
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 7 nov. 2005 à 23:48
Bien je poursuis ce que tu dis, moi j'ai souvent à faire a ce genre de cas.
ma_page.php?action=
le isset($_GET['action']) renvoie true
le empty($_GET['action']) renvoie true
La variable existe et est vide.
Comme pour la méthode POST, c'est pour ça que selon ce qu'il veut obtenir je pense que ce double emploie est en fait bien nécessaire dans certain cas ou l'on veut une variable qui contienne forcément quelques choses.
Ceci dit, la fonction empty apparement ne provoquerai pas d'erreur et renverrai false si la variable n'existe pas. Ce qui voudrais dire qu'on pourrai se passez du isset()... J'ai vu ceci utiliser plus d'une fois de cette manière. Côté fiabilité j'ai pas testé.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 7 nov. 2005 à 21:24
je suis dsl, je n'ai pas de serveur apache2 en état... (j'ai un serveur apache perl de lancé, et j'ai la flème de le stoper pour lancer apache2...) donc je ne peux tester ce que je dis...
!epmty('') revoi false
isset('') renvoi true
ce qui veut dire que selon moi : la, vous aurez 0 dans vos variables, mais ne pouvant aps faire de tests...
si tu fais print_r($_POST), if (isset($_POST['a'])) s'ignifir if key_exists('a', $_POST)
mais vu ton url, je ne sais pas si $_GET sera rempli des deux champs... Donc, pour $_GET, je ne peux rien dire, cependant, on peut envoyer un champ vide, et il sera considéré comme envoyé ! (méthode POST)
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 7 nov. 2005 à 21:13
Même vérif ? pas d'accord. La première vérifie l'existance et met une valeur par défaut si n'existe pas la seconde test si elle contient quelques chose ?
si j'ai une url ma_page.php?action=&mode=
tu veux vérifier comment autrement que par ce moyen ?
Psykos7
Messages postés60Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention21 février 2008 7 nov. 2005 à 11:02
coucou747 -> height="30" => pas d'unitées ?
Par defaut, ce n'est pas utilse de le preciser car ce sont des pixels
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 3 nov. 2005 à 22:28
salut, j'ai testé ton code sans installer la base, c'est très joli, mais voila : rien ne fonctionne et on n'a que des warnings : explications : je n'ai pas installé la base (quand j'ai vu qu'on avait pas de messages error fatale, mais seulement que des warnings, j'ai pas installé la base, mais j'ai lu le code...)
Voila ce qu'il y avait de mauvais dans le code :
Fichier admin\ajouter_sites.php
$action = isset($_POST['action']) ? $_POST['action'] : 0;
$mode = isset($_POST['mode']) ? $_POST['mode'] : 0;
if (!empty($action))
tu vérifie par deux fois ne fait que le champ action soit renseigné... ça fait une optimisation possible...
De plus, la variable $action peut être soit une chaine de caractère, soit un nombre, c'est pas super joli, on sait que PHP est moyennement typé, mais c'est pas une raison !
Pour des questions de compatibilitée, on ne met pas <? mais <?php
Si tu veux mettre des doubles quotes, c'est ton choix (c'est plus lent à l'éxécution), mais sache que mélanger doubles et simple, c'est immonde : on choisit ses méthodes de programmations, mais on y reste fidèle...
dans : admin\mise_a_jour.php
$j = 0;
while ($j < $n)
{
mysql_query("UPDATE topliste_sites_partenaire SET out=0,cliks=0,moyenne=0");
$j++;
}
tu connais for ? for est plus rapide et plus claire que while...
dans : liens.php
<?php echo ''.$fond_page.'' ?>
c'est mignon, mais t'as pas pensé à faire :
<?php echo $fond_page; ?> (sans les guillemets mais avec un ;)
Sinon, dans admin\index.php, t'as de multiples echo à suivres, on se demande pourquoi t'en as pas fait qu'un...
En php, utiliser les @ n'est pas conseillé car ça peut donner un comportement totalement étrange à ton programme sans même que tu ne le sache...
dans ton fichier javascript :
<!-- Begin
ceci n'est pas un commentaire en javascript !
document.form.speudo.value
cette méthode marche, mais est dépressiée : on accède à un élément par son id.
if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.email.value))){
normalement, l'objet n'est pas l'expression régulière, mais la chaine de caractère (enfin, si, mais c'est compliqué : l'objet auquel on s'interesse... l'expreg n'est ici qu'un argument de méthode normalement...)
en php comme en javascript, t'as des accolades en trop...
Pour le code html, tu devrais choisir entre minuscules et majuscules, mais ne pas mélanger. Un peu de CSS ne ferait pas de mal... (pour enlever les atributs qui peuvent être remplis en CSS)
height="30" => pas d'unitées ?
Tes expressions régulières de mails sont fausses : on a le droit aux caractères : + { et } dans les mails (j'ai vraiment l'impression de me répéter...)
17 nov. 2005 à 19:04
if ( ( (isset($_POST['action']) === false ) || empty($_POST['action']) ) === false ) { ... }
?
17 nov. 2005 à 11:55
D'accord ça ne fait pas d'erreur je le sais j'ai testé depuis x année
"
Encore heureux, le && est la pour tester les 2 cotés de la condition. Si l'une est fausse, alors la condition est fausse.
"mais pourquoi ? théoriquement ça devrait en faire une, alors pourquoi ça n'en fait pas ? c'est voulu ? parce que php à une compilation qui fait que et qui me dit que ça durera ainsi ?"
La différence est notable quand tu utilises un "ou logique". En effet, en premier, tu va lire la première condition. Si la premiere condition est vrai, alors la condition entière est vrai (on ne vérifie plus le reste, ou alors PHP le fait mais ne provoque pas d'erreurs).
L'ordre n'a d'importance que si tu utilises des conditions imbriquées ou alors un "ou logique", à savoir "or" ou "||". C'est tout :)
16 nov. 2005 à 22:06
Est considéré (par moi) comme crade ce qui est lent (j'entend par lent : optimisable facilement) ce qui est illogique, et ce qui est imbuvable (un code imbuvable peut être aéré par des retours à la ligne et commenté... Mais un code imbuvable est crade ssi il est vraiment imbuvable...)...
16 nov. 2005 à 18:46
Je sais ce que ça fait réellement mais je voulais porter le point sur la réflexion que ce cas peut apporter.
Je pense que tout les programmeurs devrait raisonner ainsi avant d'utiliser une fonction qui marche.
16 nov. 2005 à 10:18
je me mêle à la discussion.
Moi mon problème vis à vis de isset() et empty() se résume à ceci :
Si une bouteille existe, elle peut-être vide, ou pleine. Certes. Mais si elle n'existe pas...comment puis-je dire qu'elle est vide ? Pour être vide, par essence, il faut exister (en tous cas, c'est mon avis). Comme quoi, PHP se rapproche parfois de la philosophie ;-)
Bref, je suis d'accord avec Antidote, cette définition de empty() me gêne. Et j'utilise toujours isset() ET !empty() (entre autres) quand je teste mes variables.
Antidote => le sens n'a aucune incidence ici. Si la variable est vidée par le trim() , la doncition sur empty() ne sera pas remplie de toutes manières.
15 nov. 2005 à 19:53
if ( !empty(trim($_POST['action'])) && isset($_POST['action']) )
D'accord ça ne fait pas d'erreur je le sais j'ai testé depuis x année
mais pourquoi ? théoriquement ça devrait en faire une, alors pourquoi ça n'en fait pas ? c'est voulu ? parce que php à une compilation qui fait que et qui me dit que ça durera ainsi ?
ba rien.
15 nov. 2005 à 17:31
14 nov. 2005 à 21:50
si la variable n'existe pas qui di que empty ne va pas renvoyer une erreur ?
14 nov. 2005 à 21:13
$mode = isset($_POST['mode']) ? $_POST['mode'] : 0;
if (!empty($action))"
En faite ce n'est pas tout à fait ca qu'il fallait faire :
if ( isset($_POST['action'] && !empty(trim($_POST['action'])) ) {
$action = $_POST['action'];
// Etc...
// Etc...
}
Pourquoi faire compliquer quand on peut faire simple :)
8 nov. 2005 à 18:27
8 nov. 2005 à 18:21
8 nov. 2005 à 17:54
8 nov. 2005 à 06:06
www.webtopliste.com à déjà un futur PR4 et ce trouve premier sur msn avec le mot clef 'top liste' et tout ca; 10 jours seulement aprés son lancement:) Le coding c'est ca aussi :)
7 nov. 2005 à 23:48
ma_page.php?action=
le isset($_GET['action']) renvoie true
le empty($_GET['action']) renvoie true
La variable existe et est vide.
Comme pour la méthode POST, c'est pour ça que selon ce qu'il veut obtenir je pense que ce double emploie est en fait bien nécessaire dans certain cas ou l'on veut une variable qui contienne forcément quelques choses.
Ceci dit, la fonction empty apparement ne provoquerai pas d'erreur et renverrai false si la variable n'existe pas. Ce qui voudrais dire qu'on pourrai se passez du isset()... J'ai vu ceci utiliser plus d'une fois de cette manière. Côté fiabilité j'ai pas testé.
7 nov. 2005 à 21:24
!epmty('') revoi false
isset('') renvoi true
ce qui veut dire que selon moi : la, vous aurez 0 dans vos variables, mais ne pouvant aps faire de tests...
si tu fais print_r($_POST), if (isset($_POST['a'])) s'ignifir if key_exists('a', $_POST)
mais vu ton url, je ne sais pas si $_GET sera rempli des deux champs... Donc, pour $_GET, je ne peux rien dire, cependant, on peut envoyer un champ vide, et il sera considéré comme envoyé ! (méthode POST)
7 nov. 2005 à 21:13
$mode = isset($_POST['mode']) ? $_POST['mode'] : 0;
if (!empty($action))
Même vérif ? pas d'accord. La première vérifie l'existance et met une valeur par défaut si n'existe pas la seconde test si elle contient quelques chose ?
si j'ai une url ma_page.php?action=&mode=
tu veux vérifier comment autrement que par ce moyen ?
7 nov. 2005 à 11:02
Par defaut, ce n'est pas utilse de le preciser car ce sont des pixels
3 nov. 2005 à 22:28
Voila ce qu'il y avait de mauvais dans le code :
Fichier admin\ajouter_sites.php
$action = isset($_POST['action']) ? $_POST['action'] : 0;
$mode = isset($_POST['mode']) ? $_POST['mode'] : 0;
if (!empty($action))
tu vérifie par deux fois ne fait que le champ action soit renseigné... ça fait une optimisation possible...
De plus, la variable $action peut être soit une chaine de caractère, soit un nombre, c'est pas super joli, on sait que PHP est moyennement typé, mais c'est pas une raison !
Pour des questions de compatibilitée, on ne met pas <? mais <?php
Si tu veux mettre des doubles quotes, c'est ton choix (c'est plus lent à l'éxécution), mais sache que mélanger doubles et simple, c'est immonde : on choisit ses méthodes de programmations, mais on y reste fidèle...
dans : admin\mise_a_jour.php
$j = 0;
while ($j < $n)
{
mysql_query("UPDATE topliste_sites_partenaire SET out=0,cliks=0,moyenne=0");
$j++;
}
tu connais for ? for est plus rapide et plus claire que while...
dans : liens.php
<?php echo ''.$fond_page.'' ?>
c'est mignon, mais t'as pas pensé à faire :
<?php echo $fond_page; ?> (sans les guillemets mais avec un ;)
Sinon, dans admin\index.php, t'as de multiples echo à suivres, on se demande pourquoi t'en as pas fait qu'un...
En php, utiliser les @ n'est pas conseillé car ça peut donner un comportement totalement étrange à ton programme sans même que tu ne le sache...
dans ton fichier javascript :
<!-- Begin
ceci n'est pas un commentaire en javascript !
document.form.speudo.value
cette méthode marche, mais est dépressiée : on accède à un élément par son id.
if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.email.value))){
normalement, l'objet n'est pas l'expression régulière, mais la chaine de caractère (enfin, si, mais c'est compliqué : l'objet auquel on s'interesse... l'expreg n'est ici qu'un argument de méthode normalement...)
en php comme en javascript, t'as des accolades en trop...
Pour le code html, tu devrais choisir entre minuscules et majuscules, mais ne pas mélanger. Un peu de CSS ne ferait pas de mal... (pour enlever les atributs qui peuvent être remplis en CSS)
height="30" => pas d'unitées ?
Tes expressions régulières de mails sont fausses : on a le droit aux caractères : + { et } dans les mails (j'ai vraiment l'impression de me répéter...)