CORTANA PROJECT

cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 - 2 mars 2007 à 15:30
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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.

https://codes-sources.commentcamarche.net/source/41704-cortana-project

BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
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és 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
31 mars 2007 à 07:23
Je voi pas le rapport avec ma source mais tant pis
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 12 Date d'inscription vendredi 16 avril 2004 Statut Membre Derniè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és 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 8 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 28 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és 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 12 Date d'inscription vendredi 16 avril 2004 Statut Membre Derniè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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mars 2007 à 11:49
ajoute or die apres tes mysql_query, ou au moins une verification d'echec de requette
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 12 Date d'inscription vendredi 16 avril 2004 Statut Membre Derniè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és 12 Date d'inscription vendredi 16 avril 2004 Statut Membre Derniè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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2007 à 17:19
c'est moins modifiable...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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.

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 :)
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
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és 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 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és 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 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és 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
2 mars 2007 à 15:30
salut !

"Tout est dans le Zip" => le repertoire include est vide, donc pas de fichier conf.php ...
Rejoignez-nous