cs_putch
Messages postés624Date d'inscriptionmardi 6 mai 2003StatutMembreDernière intervention14 décembre 2009
-
2 mars 2007 à 15:30
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008
-
2 avril 2007 à 10:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 2 avril 2007 à 10:07
Ba mon code etait en IF c je sias plus qui qui ma dit de le changer pour des Switch (se que je n'ai aps fait lol)
Donc bon c pas grave mais je ne rebosserai aps sur cette "source" d'ici un bon bout de temp car trop de bouleau ^^
cs_putch
Messages postés624Date d'inscriptionmardi 6 mai 2003StatutMembreDernière intervention14 décembre 20091 2 avril 2007 à 09:27
bah il te montre juste que la 2eme methode est la plus rapide ...
if ( ... ) { if { ... } }
est plus rapide qu'un switch { case ... break; ... }
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 31 mars 2007 à 07:23
Je voi pas le rapport avec ma source mais tant pis
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 30 mars 2007 à 18:44
function compare1($i){
if ($i==1)return '1';
if ($i==2)return '2';
...
return '9';
}
function compare1_1($i){
if ($i<5){
if ($i==1)return '1';
...
return '4';
}
if ($i==5)return '5';
...
return '9';
}
function compare2($i){
switch ($i){
case 1:return '1';
...
default:return '9';
}
}
cote resultats des temps de calculs, j'obtiens
for ($i=1;$i<10;$i++){echo compare1($i);} 1292.91
for ($i=1;$i<10;$i++){echo compare1_1($i);} 617.11
for ($i=1;$i<10;$i++){echo compare2($i);} 734.43
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 30 mars 2007 à 13:36
je ferais quand je trouverais le temps un bench sur les if et switch, mais a mon avis, c'est largement if qui gagne... De plus, cote modifications possibles, entre un if et un switch, la seule chose bien pour le switch c'est case a; .... casee b .... break;
nimaka83700
Messages postés12Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention 7 mars 2009 30 mars 2007 à 13:28
continues a améliorer ta source
nous ferons la notation après
:-)
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 26 mars 2007 à 14:22
Sa fait plaisir 20 commentaire 0 note
J ai 2 sentiment un de peur je me dit ma saouce c de la M.... enfin vous voyez qoi ou sinon ma source est si bien que personne veu noté
Et aussi personne ne m a raporté de gros bug des truc de malade qui fait que tout foire dois je pour autan conclure qui en a pas ???
ornythorink
Messages postés8Date d'inscriptionmardi 23 décembre 2003StatutMembreDernière intervention28 août 2007 6 mars 2007 à 19:49
effectivement ce type d'erreur vient du fait que ta ressouce dans reponse est invalide donc puisque ta requête est valide synthaxiquement (même si les jokers ça ne se fait pas :p) c'est que ta ressouce est invalide parce qu'il ny a pas de connexion au serveur, essaye un SHOW COLUMNS sur mysql avec ces paramètres de connexion normalement il devrait te jeter s'il est mal configuré comme je le pense.
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 5 mars 2007 à 11:58
nimaka83700
Je n'arrive pas a comprendre l'erreur que tu rencontre je suis désolé de ne pas pouvoir t'aider
nimaka83700
Messages postés12Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention 7 mars 2009 5 mars 2007 à 11:49
tu n'as fait que remettre le nom des tables comme elles etaient
j'ai ete obligé de changer les noms des tables pour ma base mysql car je possede deja les table eavec les noms cités
j'ai bien entendu fait le tour de tous les fichiers pour modifier le nom des tables partout
l'erreur doit venir d'ailleurs
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 5 mars 2007 à 11:49
ajoute or die apres tes mysql_query, ou au moins une verification d'echec de requette
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 5 mars 2007 à 09:57
ligne 50 j'ai
$retour = mysql_query('SELECT * FROM news ORDER BY nid DESC LIMIT 0, 1');
while ($donnees = mysql_fetch_array($retour))
et 99
$reponse = mysql_query("SELECT lien FROM pages");
while ($donnees = mysql_fetch_array($reponse) )
{
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 5 mars 2007 à 09:46
Ba la nimaka83700 je ne comprend pas T ereur tu as bien fait l'install avec le fichier d'install a l'adresse suivant
http://monsite.com/install ?????
Et euh attendez 8 petite heure et je renvoi un zip avec pas mal de bug corriger mais la j'ai pas le temp un max de boulot et peu de temp pour le faire
nimaka83700
Messages postés12Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention 7 mars 2009 5 mars 2007 à 09:41
la ligne 50 c'est la deuxieme ci dessous :
$retour = mysql_query('SELECT ntitre, ncontenu FROM essai-news ORDER BY nid DESC');
while ($donnees = mysql_fetch_array($retour))
la ligne 99 c'est la deuxieme ci-dessous :
$reponse = mysql_query("SELECT lien FROM essai-pages");
while ($donnees = mysql_fetch_array($reponse) )
nimaka83700
Messages postés12Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention 7 mars 2009 5 mars 2007 à 09:39
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.4/libertin/www/cortana/index.php on line 50
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.4/libertin/www/cortana/index.php on line 99
voila les deux erreurs ou je bute sur le script
(j'en ai deja corrigé deux autres mais là je bute)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 4 mars 2007 à 18:43
Argument pas valable coucou.
Quand on utilise switch(), on sait pourquoi on l'utilise.
Dire que c'est moins modifiable... c'est moyen je trouve comme réponse :/
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 4 mars 2007 à 17:19
c'est moins modifiable...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 mars 2007 à 16:53
Le php dérive de Perl, et en Perle y a pas de switch, alors à mort switch ?
Ahem...y a mieux comme argumentation, Coucou.
switch ne s'utilise pas dans le même cadre, voilà tout.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 4 mars 2007 à 15:54
vive if et a mort switch, php est derive du perl, en perl, on n'a pas switch, et modifier un bloc de if est plus simple qu'un switch (genre ajouter une condition <)
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 4 mars 2007 à 00:37
Il est vrai que sur la page Admin le swit est mieu parcontre a d'autre endroit je ne voirt pas commen faire avec un switch donc je laisse le IF/ELSE car cela ne change quasiment rien en réalité et vous ne pouvez pas le nie
En se qui concerne la protection de la parti admin j'avai oublier une parti du code en codan lol dsl donc je vai mettre le plus vite possible une version juste du CortanaProject
PS merci a tout le monde pour vos commentaire je vai essayer de changer tout sa et de le mettre a jour des que possible
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 3 mars 2007 à 19:48
Bah vi, l'imbrication de if/elseif/elseif/else doit se faire modérément.
Comment utiliser un switch à la place d'un if/elseif/else ?
Simple, tout dépend ce que tu veux analyser. Si tu n'analyses qu'une variable, ou une expression qui est identique, autant utiliser switch(). Autrement, il vaut mieux utiliser if/elseif/else.
Ce bloc peut facilement être transformé en :
switch ( $var ) {
case 3:
// code
break;
case 5:
// code
break;
case 7:
// code
break;
default:
// code
}
Eventuellement, on peut aussi dégager le "break" dans le cas ou la variable a tester change en cours de route dans le switch. Cela peut toujours être pratique.
La où tu ne peux pas faire comme ca, c'est si tu testes différentes expressions (bien que...)
if ( isset($_COOKIE[]) ) {
//code
} elseif ( isset($_SESSION[]) ) {
//code
} elseif( isset($_GET[]) ) {
// code
} else {
// code
}
Ca, il faut le laisser telquel. Le remplacement logique serait de faire :
switch ( true ) {
case ( isset($_COOKIE[]) ):
// code
case ( isset($_SESSION[]) ):
// code
case ( isset($_GET[]) ):
// code
default:
// code
}
Mais j'adhère pas forcément le choix du switch(true). Car si on commence comme cela, un jour on va se retrouver un "switch(false)" dans son code et certaines expressions que l'on va tester vont retourner false au lieu de ce que l'on attend.
C'est une facon de programmer :)
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 3 mars 2007 à 13:01
Pour le "empty" je ne savais pas donc désolé pour la fausse information ;-)
Pour les "if (...) {...} elseif (...) {...} etc..." perso j'utilise également moi même les "if" plutôt que les "switch" mais je disais ceci pour FhX qui m'a lancé un jolie : "que c'est bien moche ca :)" lorsque la dernière fois que j'ai utilisé cette méthode XD
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 mars 2007 à 09:45
Hello,
même si je duis du même avis que les 2 commentaires précédents, je tiens à émettre un bémol sur certains :
"Remplaces tous les "if (...) {...} elseif (...) {...} etc..." par un switch (dù moins FhX crisera pas XD)"
=> Ca reste une affaire de goût. Un switch est certes plus clair selon moi, mais bcp de monde préfèrent une suite de if elseif. Donc bon...et en terme de performance, on est peu ou prou à égalité (à dire vrai, les if... sont toujours un peu plus rapides).
"$infos ''" utilises plutôt "empty($infos)"
> ce n'est pas tout à fait pareil...voir ce petit test :
<?php
$a = '0';
if ($a == '') {
echo '$a == \'\'', '
';
}
if (empty ($a)) {
echo 'true === empty($a)', '
';
}
if ($a === '') {
echo '$a === \'\'', '
';
}
?>
cs_putch
Messages postés624Date d'inscriptionmardi 6 mai 2003StatutMembreDernière intervention14 décembre 20091 2 mars 2007 à 16:22
ok ok t'as de l'humour !
bon alors les critiques :
- les fautes d'otrhographes, ca fait pas tres "pro" (ex : admin.php => Choisi se que tu veu faire, Quité, ...)
- les variables ne sont pas toutes déclarées (ex : admin.php => Notice: Undefined index: action in d:\easyphp1-8\www\cortanaproject\admin\admin.php on line 12, ...)
- aucune protection sur tes variables (POST en l'occurence)
- entrée dans l'admin : le formulaire c'est bien mais apres ... tu tape directement l'url admin/admin.php et t'es dedans ^^
bref ... y'a encore des trucs à revoir
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 2 mars 2007 à 16:13
Don't Worry be happy les jeunes lol c'est pas la peine de se battre :-P
J'ai regardé vite fait et voici ce que je peux te dire :
-> (truc classique 1) Utilises toujours "<?php" et non pas "<?" (même si tu as utilisé "<?php" en premier)
-> (truc classique 2) Utilises les simples quotes ' à la place des doubles " (utilise la concaténation avec la virgule "," dans avec la fonction "echo" et le point "." pour les autres fonctions)
-> (truc classique 3) N'utilises pas "SELECT *" pour tes requêtes mais indiques les champs que tu souhaîtes récupérer (même si tu dois récupérer tous les champs) et n'oublies pas "mysql_close()" (je ne l'ai pas vu dans "admin\liste_news.php")
-> Remplaces tous les "if (...) {...} elseif (...) {...} etc..." par un switch (dù moins FhX crisera pas XD)
-> "$infos == ''" utilises plutôt "empty($infos)" (sa devrait être plus rapide enfin je crois ... à voir :-P)
-> Attention aux normes W3C ;-)
BTAJV
Messages postés145Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention17 avril 2008 2 mars 2007 à 15:38
Va dans le repertoir install et ooohhhh que voi tu un script qui permet de crée (en ligne) le fichier conf avec tout les parametre oooohhhhh mais c magic
Le fichier Lisez_moi.txt c'est pas de la deco
cs_putch
Messages postés624Date d'inscriptionmardi 6 mai 2003StatutMembreDernière intervention14 décembre 20091 2 mars 2007 à 15:30
salut !
"Tout est dans le Zip" => le repertoire include est vide, donc pas de fichier conf.php ...
2 avril 2007 à 10:07
Donc bon c pas grave mais je ne rebosserai aps sur cette "source" d'ici un bon bout de temp car trop de bouleau ^^
2 avril 2007 à 09:27
if ( ... ) { if { ... } }
est plus rapide qu'un switch { case ... break; ... }
31 mars 2007 à 07:23
30 mars 2007 à 18:44
if ($i==1)return '1';
if ($i==2)return '2';
...
return '9';
}
function compare1_1($i){
if ($i<5){
if ($i==1)return '1';
...
return '4';
}
if ($i==5)return '5';
...
return '9';
}
function compare2($i){
switch ($i){
case 1:return '1';
...
default:return '9';
}
}
cote resultats des temps de calculs, j'obtiens
for ($i=1;$i<10;$i++){echo compare1($i);} 1292.91
for ($i=1;$i<10;$i++){echo compare1_1($i);} 617.11
for ($i=1;$i<10;$i++){echo compare2($i);} 734.43
30 mars 2007 à 13:36
30 mars 2007 à 13:28
nous ferons la notation après
:-)
26 mars 2007 à 14:22
J ai 2 sentiment un de peur je me dit ma saouce c de la M.... enfin vous voyez qoi ou sinon ma source est si bien que personne veu noté
Et aussi personne ne m a raporté de gros bug des truc de malade qui fait que tout foire dois je pour autan conclure qui en a pas ???
6 mars 2007 à 19:49
5 mars 2007 à 11:58
Je n'arrive pas a comprendre l'erreur que tu rencontre je suis désolé de ne pas pouvoir t'aider
5 mars 2007 à 11:49
j'ai ete obligé de changer les noms des tables pour ma base mysql car je possede deja les table eavec les noms cités
j'ai bien entendu fait le tour de tous les fichiers pour modifier le nom des tables partout
l'erreur doit venir d'ailleurs
5 mars 2007 à 11:49
5 mars 2007 à 09:57
$retour = mysql_query('SELECT * FROM news ORDER BY nid DESC LIMIT 0, 1');
while ($donnees = mysql_fetch_array($retour))
et 99
$reponse = mysql_query("SELECT lien FROM pages");
while ($donnees = mysql_fetch_array($reponse) )
{
5 mars 2007 à 09:46
http://monsite.com/install
?????
Et euh attendez 8 petite heure et je renvoi un zip avec pas mal de bug corriger mais la j'ai pas le temp un max de boulot et peu de temp pour le faire
5 mars 2007 à 09:41
$retour = mysql_query('SELECT ntitre, ncontenu FROM essai-news ORDER BY nid DESC');
while ($donnees = mysql_fetch_array($retour))
la ligne 99 c'est la deuxieme ci-dessous :
$reponse = mysql_query("SELECT lien FROM essai-pages");
while ($donnees = mysql_fetch_array($reponse) )
5 mars 2007 à 09:39
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.4/libertin/www/cortana/index.php on line 99
voila les deux erreurs ou je bute sur le script
(j'en ai deja corrigé deux autres mais là je bute)
4 mars 2007 à 18:43
Quand on utilise switch(), on sait pourquoi on l'utilise.
Dire que c'est moins modifiable... c'est moyen je trouve comme réponse :/
4 mars 2007 à 17:19
4 mars 2007 à 16:53
Ahem...y a mieux comme argumentation, Coucou.
switch ne s'utilise pas dans le même cadre, voilà tout.
4 mars 2007 à 15:54
4 mars 2007 à 00:37
En se qui concerne la protection de la parti admin j'avai oublier une parti du code en codan lol dsl donc je vai mettre le plus vite possible une version juste du CortanaProject
PS merci a tout le monde pour vos commentaire je vai essayer de changer tout sa et de le mettre a jour des que possible
3 mars 2007 à 19:48
Comment utiliser un switch à la place d'un if/elseif/else ?
Simple, tout dépend ce que tu veux analyser. Si tu n'analyses qu'une variable, ou une expression qui est identique, autant utiliser switch(). Autrement, il vaut mieux utiliser if/elseif/else.
Ex :
if ( $var === 3 )
// code
elseif ($var ===5)
// code
elseif ($var === 7)
// code
else
// code
Ce bloc peut facilement être transformé en :
switch ( $var ) {
case 3:
// code
break;
case 5:
// code
break;
case 7:
// code
break;
default:
// code
}
Eventuellement, on peut aussi dégager le "break" dans le cas ou la variable a tester change en cours de route dans le switch. Cela peut toujours être pratique.
La où tu ne peux pas faire comme ca, c'est si tu testes différentes expressions (bien que...)
if ( isset($_COOKIE[]) ) {
//code
} elseif ( isset($_SESSION[]) ) {
//code
} elseif( isset($_GET[]) ) {
// code
} else {
// code
}
Ca, il faut le laisser telquel. Le remplacement logique serait de faire :
switch ( true ) {
case ( isset($_COOKIE[]) ):
// code
case ( isset($_SESSION[]) ):
// code
case ( isset($_GET[]) ):
// code
default:
// code
}
Mais j'adhère pas forcément le choix du switch(true). Car si on commence comme cela, un jour on va se retrouver un "switch(false)" dans son code et certaines expressions que l'on va tester vont retourner false au lieu de ce que l'on attend.
C'est une facon de programmer :)
3 mars 2007 à 13:01
Pour les "if (...) {...} elseif (...) {...} etc..." perso j'utilise également moi même les "if" plutôt que les "switch" mais je disais ceci pour FhX qui m'a lancé un jolie : "que c'est bien moche ca :)" lorsque la dernière fois que j'ai utilisé cette méthode XD
3 mars 2007 à 09:45
même si je duis du même avis que les 2 commentaires précédents, je tiens à émettre un bémol sur certains :
"Remplaces tous les "if (...) {...} elseif (...) {...} etc..." par un switch (dù moins FhX crisera pas XD)"
=> Ca reste une affaire de goût. Un switch est certes plus clair selon moi, mais bcp de monde préfèrent une suite de if elseif. Donc bon...et en terme de performance, on est peu ou prou à égalité (à dire vrai, les if... sont toujours un peu plus rapides).
"$infos ''" utilises plutôt "empty($infos)"
> ce n'est pas tout à fait pareil...voir ce petit test :
<?php
$a = '0';
if ($a == '') {
echo '$a == \'\'', '
';
}
if (empty ($a)) {
echo 'true === empty($a)', '
';
}
if ($a === '') {
echo '$a === \'\'', '
';
}
?>
2 mars 2007 à 16:22
bon alors les critiques :
- les fautes d'otrhographes, ca fait pas tres "pro" (ex : admin.php => Choisi se que tu veu faire, Quité, ...)
- les variables ne sont pas toutes déclarées (ex : admin.php => Notice: Undefined index: action in d:\easyphp1-8\www\cortanaproject\admin\admin.php on line 12, ...)
- aucune protection sur tes variables (POST en l'occurence)
- entrée dans l'admin : le formulaire c'est bien mais apres ... tu tape directement l'url admin/admin.php et t'es dedans ^^
bref ... y'a encore des trucs à revoir
2 mars 2007 à 16:13
J'ai regardé vite fait et voici ce que je peux te dire :
-> (truc classique 1) Utilises toujours "<?php" et non pas "<?" (même si tu as utilisé "<?php" en premier)
-> (truc classique 2) Utilises les simples quotes ' à la place des doubles " (utilise la concaténation avec la virgule "," dans avec la fonction "echo" et le point "." pour les autres fonctions)
-> (truc classique 3) N'utilises pas "SELECT *" pour tes requêtes mais indiques les champs que tu souhaîtes récupérer (même si tu dois récupérer tous les champs) et n'oublies pas "mysql_close()" (je ne l'ai pas vu dans "admin\liste_news.php")
-> Remplaces tous les "if (...) {...} elseif (...) {...} etc..." par un switch (dù moins FhX crisera pas XD)
-> "$infos == ''" utilises plutôt "empty($infos)" (sa devrait être plus rapide enfin je crois ... à voir :-P)
-> Attention aux normes W3C ;-)
2 mars 2007 à 15:38
Le fichier Lisez_moi.txt c'est pas de la deco
2 mars 2007 à 15:30
"Tout est dans le Zip" => le repertoire include est vide, donc pas de fichier conf.php ...