cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008
-
16 nov. 2005 à 10:10
jordane45
Messages postés38151Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 2 mai 2024
-
5 mars 2017 à 00:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ARY27
Messages postés4Date d'inscriptionsamedi 4 mars 2017StatutMembreDernière intervention 4 mars 2017 4 mars 2017 à 19:16
Peux-tu mettre à jour ce code pour ne plus avoir ce message?(Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\Sfx\index.php on line 3)
jordane45
Messages postés38151Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 2 mai 2024344
>
ARY27
Messages postés4Date d'inscriptionsamedi 4 mars 2017StatutMembreDernière intervention 4 mars 2017 5 mars 2017 à 00:19
cs_binfranck
Messages postés1Date d'inscriptionmercredi 8 avril 2009StatutMembreDernière intervention 2 juin 2009 2 juin 2009 à 09:48
Bonjour à tous,
j'ai été fort intéressé par ces codes, mais je suis un peu perdu dans ces codes ci-dessous, j'aimerai si possible avoir des petits commentaires afin de bien comprendre la suite ... voici donc :
//definition de la variable $query
if(isset($_GET["query"])) {
$query=$_GET["query"] ;
}
else {
$query="";
}
if(isset($_GET["id"])) {
$id=$_GET["id"] ;
}
else {
$id="";
}
if(isset($_GET["currentpage"])) {
$currentpage=$_GET["currentpage"];
}
else {
$currentpage=1;
}
?>
MERCI D'AVANCE. Binfranck
The_magicien
Messages postés72Date d'inscriptionmardi 5 juillet 2005StatutMembreDernière intervention 8 février 2009 15 sept. 2006 à 19:20
J'ai parcouru vite fait la source... Pas mal, mais tu pourais rajouter une possibilité de tri pour le visiteur parce que si il cherche un truc par ordre chronologique et que c'est tout à la fin... :s 7/10 en tout cas!
cs_Stegue
Messages postés45Date d'inscriptiondimanche 4 septembre 2005StatutMembreDernière intervention 9 mars 2024 19 mars 2006 à 20:32
Bonjour, je suis super débutant et je trouve dommage d'avoir choisi des noms de champs identiques aux noms de la tables. Ca complique l'adaptation de ce script à ma bdd.
Est-ce dû à ça, mais moi ça ne marche pas !
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 21 nov. 2005 à 19:35
et bien disons que je ne sais pas si mon avis coté SQL est universel, mais il est utilisé dans beaucoups de livres pour la claretée...
Un code SQL est la plupart du temps mélangé à un autre langage (bash, perl, et dans le cas présent php...), on retrouve donc un gros mélange pourri ou le lecteur doit savoir ce qui est du SQL, et ce qui est du php. On utilise caumunément des fonctions caracréristiques, mais comme en php et en perl, on utilise les quotes nimporte comment (en C, on a printf, mais en php, c'est plus lent... en perl, c'est différent...), donc, pour plus de claretée : il faut TOUJOURS mettre en majuscule son code SQL, et en minuscule son code PHP! il est aussi très agréable de ne pas trouver de lignes de plus de 80 caractères (mais là, c'est un peu utopiste et très exigeant), et de trouver des commentaires bien formulés, et alignés.
Pour ce qui est des optimisations, l'utilisation du * est à éviter : on demande la totalitée de la base, alors le flux est gros... perte de mémoire... de temps... bref, il vaut mieux lister les champs... et par deffinition, un cahier des charge est fait pour évoluer, donc, même si on a besoin de tous les champs, mieux vaut les lister pour éviter, après une modification d'avoir à retoucher tous ses accès... Pour une pagination, BETWEEN est mieux que LIMIT car il est plus rapide...
Bon, sinon corrige ton code, je suis d'accord, on n'est la pour partager, mais regarde ce qui existe pour tes codes, les tutos de vulgarisationinformatique (anbthomicro) sont pas trop mal aparement, t'en avais un de grenard sur le fait de bien coder (ce tuto m'a bcp apporté), sinon
http://coucou747.hopto.org/index.php?action=lire_page&id=4 je crois que ça pourrait t'aider.
sfxlord
Messages postés4Date d'inscriptiondimanche 7 mars 2004StatutMembreDernière intervention30 novembre 2005 21 nov. 2005 à 19:18
coucou747 => ben en fait si tu pouvais m'envoyer ta vison des choses coté sql ca me ferait bcp plaisir.
tu vois la en fait c juste que j'aimerais m'améliorer quoi.
la demande est valable pour tout le monde hein.
faut bien échanger non?
merci encore ;)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 21 nov. 2005 à 18:41
bon, coté prog, j'ai pas lu tout les commentaires suivants, mais à part le premier, tout ne traitait que du php, et je crois que t'as eu ta dose...
bon, sinon, t'as pas l'air d'avoir corrigé grand chose :'(
et franchement, ton code sql, c'est pas top... * minuscules, bref, on s'y retrouve pas et c'est lent...
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 20 nov. 2005 à 10:27
Non, c'est la version la plus rapide.
Après, c'est gout personnel, moi je préfère utiliser :
$id = ( isset($_GET['id']) ) ? $_GET['id'] : NULL;
Mais c'est plus lent :)
Sauf que si t'as 30 variables à initialiser comme tu le fais, ton code devient vite barbant et chiant à lire =)
sfxlord
Messages postés4Date d'inscriptiondimanche 7 mars 2004StatutMembreDernière intervention30 novembre 2005 19 nov. 2005 à 21:31
merci pour tout.
c'est cool de votre part.
je vais faire une mise à jour ou y'aura tous vos conseils.
mais au fait, je voudrais savoir quelque chose:
if(isset($_GET['id'])) {
$id=$_GET['id'] ;
}
ca rend la lecture du code plus lente ou alors c'est qu'il faut pas tout cour.
@+
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 19 nov. 2005 à 13:17
Bah, tu peux faire :
'0' = (string) 0;
Et ca marche aussi bien ;)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 18 nov. 2005 à 09:04
Immortal => c'est bien ce que je dis, '0' = 0 est une erreur de typage. Ok si tu t'en sors avec, mais c'est une mauvaise habitude, qui génère des erreurs même chez les programmeurs chevronnés. Avec des fonctions comme strpos, readdir, ou que sais-je encore...c'est la porte ouverte à toutes les fenêtres comme dirait J_G.
Pour reprendre '0' 0 est une vieille bêtise/facilité (choisissez ce que vous préférez) des développeurs du moteur php. php a été conçu comme un langage extrèmement permissif au niveau du typage : il devait tout gérer tout seul comme un grand. Maintenant, on voit un retour en arrière progressif...le typage fait son grand retour. Et c'est pas plus mal. '0' 0 est tout simplement, selon moi, abherrant.
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 17 nov. 2005 à 13:18
Salut,
Malalam =>
citation de Garfield90 : if($query=="") doit/peut être remplacé par if( empty($query) )
Or fait le test et tu verras que si la valeur de $var = 0 c'est considéré comme vide.
Ensuite '0' !0 mais 0
Si on fait le test : if('0') echo 1; else echo 0;
Cela renvoie 0 donc vide.
Et si tu fait : if('toto') echo 1; else echo 0;
Cela renvoie 1.
Certe il est préférable d'utiliser les fonctions dédiées mais quand les raccourcis peuvent faire l'affaire ;-)
@+
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 17 nov. 2005 à 11:19
Ah oui, mais j'avais pas lu la source c'est pour ca :p
Rien qu'au début, quand j'ai vu le nombre de lignes pour 3 if ( isset() ), j'ai pris peur ;)
18 lignes !!!! =)
Alors que si tu utilises l'opérateur ternaire ==> 3 lignes seulement !
Je poursuis :
echo "[?id='.$idauteur.' '.$author.'] | ';
etc etc...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 nov. 2005 à 17:54
Immortal => tes tests sont censés prouver quoi, au juste ? Parce que là...il manque des cas.
Si $var = '0' ? T'appelles ça vide, toi...? Je n'ai pas testé, mais à mon avis, ton test va nous dire que oui. Or pour moi, $var n'est pas vide.
De plus, tu peux mettre true et false à tous tes tests, dans tous tes cas tu auras false. Ce qui n'est pas forcément souhaitable.
Et quand j'ai $var = 0, je ne veux pas forcément savoir si c'est 0 OU 1...bref, si c'est $var ou !$var...mais peut-être si c'est 0, 1, 2, 15 ou 253...bref, un 0 numérique, pas booléen.
D'où l'importance du typage.
Et d'où l'importance des fonctions dédiées, et de ne pas utiliser les raccourcis (!$var) à tort et à travers.
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 16 nov. 2005 à 17:36
Re,
voilà un test qui va vous prouver mes dires :
<?php
// Test 1
$var = false;
if($var){
echo 'true
';
}else{
echo 'false
';
}
Résultats :
$var = false; renvoie false
$var = 0; renvoie 0
$var = ''; renvoie Le champ est vide
@+
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 16 nov. 2005 à 15:16
le != que j'ai utilisé était dans le sens différent en francais et non pas au sens PHP, j'ai utilisé un mauvais raccourci, donc dans l'absolu je suis OK avec FHX et donc avec moi meme ( ce qui est pas mal ;) )
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 nov. 2005 à 14:48
Quant au select *, c'est carrément à éviter tout le temps...sauf en mode debug/vérifications sur la console d'administration!
Il manque un doctype, aussi, puisqu'on a des meta et tout...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 nov. 2005 à 14:43
Hello,
FhX => je crois, après avoir vaguement parcouru la source, que le empty ($query) est là pour vérifier que le champ texte dédié à la requête est vide ou non. Je crois hein, j'ai parcouru TRES vite... ;-)
Par contre pour le typage, oh que voui!
Garfield => pour appuyer ce que dit FhX, essaye donc ta façon de typer avec strpos ()... un 0 renvoyé par strpos(), dans ton cas, voudra soit dire que la chaine recherchée a été trouvée à la position 0, soit qu'il ne l'a pas trouvée. Tu ne sauras jamais. Alors qu'avec === 0 ou === false...tu seras fixé.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 16 nov. 2005 à 12:46
Faux.
NULL == FALSE mais NULL !== FALSE
NULL == 0 mais NULL !== 0
FALSE == 0 mais FALSE !== 0
Grande erreur de typage... il faut utiliser la triple comparaison pour comparer un type de donnée à une autre, pas la double !
Ensuite, vérifier une query se fait via true/false, pas via empty() :o
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 16 nov. 2005 à 12:34
>> immortalPC
ton 3ement, je suis pas tout a fait ok :
car "" ne signifie pas false, il existe une fonction qui s'appelle empty() qui verifie si le contenu est vide :
pour rappel : null != false != '' != 0 meme si les résultat peuvent parfois être similaire sur certaines fonctions
donc :
if($query=="") doit/peut être remplacé par if( empty($query) )
dès que j'ai un peu de temps, j'examine le code
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 16 nov. 2005 à 10:21
Salut,
Certains trucs sont à revoir :-/ mais dans l'ensemble c'est bon ;-)
1) Les " sont lents !!! Utilise les '
Pourquoi ?
Car PHP lit tout ce qui est dedans les "
2) Du relief !!!!
Ton code php est plat...........
C'est pas térrible pour lire le code.
if(isset($_GET['id'])) {
$id=$_GET['id'] ;
}
3) if($query=="") peut être remplacé par if(!$query)
@+
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 16 nov. 2005 à 10:10
Faire un select * et ensuite se balader dans les résultats ça va quand tu as une petite table et peu d'infos dedans mais si tu dépasses un certain nombre d'enregistrements, la page mettra du temps à s'afficher.
4 mars 2017 à 19:16
5 mars 2017 à 00:19
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
2 juin 2009 à 09:48
j'ai été fort intéressé par ces codes, mais je suis un peu perdu dans ces codes ci-dessous, j'aimerai si possible avoir des petits commentaires afin de bien comprendre la suite ... voici donc :
//definition de la variable $query
if(isset($_GET["query"])) {
$query=$_GET["query"] ;
}
else {
$query="";
}
if(isset($_GET["id"])) {
$id=$_GET["id"] ;
}
else {
$id="";
}
if(isset($_GET["currentpage"])) {
$currentpage=$_GET["currentpage"];
}
else {
$currentpage=1;
}
?>
MERCI D'AVANCE. Binfranck
15 sept. 2006 à 19:20
19 mars 2006 à 20:32
Est-ce dû à ça, mais moi ça ne marche pas !
21 nov. 2005 à 19:35
Un code SQL est la plupart du temps mélangé à un autre langage (bash, perl, et dans le cas présent php...), on retrouve donc un gros mélange pourri ou le lecteur doit savoir ce qui est du SQL, et ce qui est du php. On utilise caumunément des fonctions caracréristiques, mais comme en php et en perl, on utilise les quotes nimporte comment (en C, on a printf, mais en php, c'est plus lent... en perl, c'est différent...), donc, pour plus de claretée : il faut TOUJOURS mettre en majuscule son code SQL, et en minuscule son code PHP! il est aussi très agréable de ne pas trouver de lignes de plus de 80 caractères (mais là, c'est un peu utopiste et très exigeant), et de trouver des commentaires bien formulés, et alignés.
Pour ce qui est des optimisations, l'utilisation du * est à éviter : on demande la totalitée de la base, alors le flux est gros... perte de mémoire... de temps... bref, il vaut mieux lister les champs... et par deffinition, un cahier des charge est fait pour évoluer, donc, même si on a besoin de tous les champs, mieux vaut les lister pour éviter, après une modification d'avoir à retoucher tous ses accès... Pour une pagination, BETWEEN est mieux que LIMIT car il est plus rapide...
Bon, sinon corrige ton code, je suis d'accord, on n'est la pour partager, mais regarde ce qui existe pour tes codes, les tutos de vulgarisationinformatique (anbthomicro) sont pas trop mal aparement, t'en avais un de grenard sur le fait de bien coder (ce tuto m'a bcp apporté), sinon
http://coucou747.hopto.org/index.php?action=lire_page&id=4
je crois que ça pourrait t'aider.
21 nov. 2005 à 19:18
tu vois la en fait c juste que j'aimerais m'améliorer quoi.
la demande est valable pour tout le monde hein.
faut bien échanger non?
merci encore ;)
21 nov. 2005 à 18:41
bon, sinon, t'as pas l'air d'avoir corrigé grand chose :'(
et franchement, ton code sql, c'est pas top... * minuscules, bref, on s'y retrouve pas et c'est lent...
20 nov. 2005 à 10:27
Après, c'est gout personnel, moi je préfère utiliser :
$id = ( isset($_GET['id']) ) ? $_GET['id'] : NULL;
Mais c'est plus lent :)
Sauf que si t'as 30 variables à initialiser comme tu le fais, ton code devient vite barbant et chiant à lire =)
19 nov. 2005 à 21:31
c'est cool de votre part.
je vais faire une mise à jour ou y'aura tous vos conseils.
mais au fait, je voudrais savoir quelque chose:
if(isset($_GET['id'])) {
$id=$_GET['id'] ;
}
ca rend la lecture du code plus lente ou alors c'est qu'il faut pas tout cour.
@+
19 nov. 2005 à 13:17
'0' = (string) 0;
Et ca marche aussi bien ;)
18 nov. 2005 à 09:04
Pour reprendre '0' 0 est une vieille bêtise/facilité (choisissez ce que vous préférez) des développeurs du moteur php. php a été conçu comme un langage extrèmement permissif au niveau du typage : il devait tout gérer tout seul comme un grand. Maintenant, on voit un retour en arrière progressif...le typage fait son grand retour. Et c'est pas plus mal. '0' 0 est tout simplement, selon moi, abherrant.
17 nov. 2005 à 13:18
Malalam =>
citation de Garfield90 : if($query=="") doit/peut être remplacé par if( empty($query) )
Or fait le test et tu verras que si la valeur de $var = 0 c'est considéré comme vide.
Ensuite '0' !0 mais 0
Si on fait le test : if('0') echo 1; else echo 0;
Cela renvoie 0 donc vide.
Et si tu fait : if('toto') echo 1; else echo 0;
Cela renvoie 1.
Certe il est préférable d'utiliser les fonctions dédiées mais quand les raccourcis peuvent faire l'affaire ;-)
@+
17 nov. 2005 à 11:19
Rien qu'au début, quand j'ai vu le nombre de lignes pour 3 if ( isset() ), j'ai pris peur ;)
18 lignes !!!! =)
Alors que si tu utilises l'opérateur ternaire ==> 3 lignes seulement !
Je poursuis :
echo "[?id='.$idauteur.' '.$author.'] | ';
etc etc...
16 nov. 2005 à 17:54
Si $var = '0' ? T'appelles ça vide, toi...? Je n'ai pas testé, mais à mon avis, ton test va nous dire que oui. Or pour moi, $var n'est pas vide.
De plus, tu peux mettre true et false à tous tes tests, dans tous tes cas tu auras false. Ce qui n'est pas forcément souhaitable.
Et quand j'ai $var = 0, je ne veux pas forcément savoir si c'est 0 OU 1...bref, si c'est $var ou !$var...mais peut-être si c'est 0, 1, 2, 15 ou 253...bref, un 0 numérique, pas booléen.
D'où l'importance du typage.
Et d'où l'importance des fonctions dédiées, et de ne pas utiliser les raccourcis (!$var) à tort et à travers.
16 nov. 2005 à 17:36
voilà un test qui va vous prouver mes dires :
<?php
// Test 1
$var = false;
if($var){
echo 'true
';
}else{
echo 'false
';
}
// Test 2
$var = 0;
if($var){
echo 1,'
';
}else{
echo 0,'
';
}
// Test 3
$var = '';
if($var){
echo 'Le champ n\'est pas vide
';
}else{
echo 'Le champ est vide
';
}
?>
Exemple : http://www.immortalpc.free.fr/Test.php
Résultats :
$var = false; renvoie false
$var = 0; renvoie 0
$var = ''; renvoie Le champ est vide
@+
16 nov. 2005 à 15:16
16 nov. 2005 à 14:48
Il manque un doctype, aussi, puisqu'on a des meta et tout...
16 nov. 2005 à 14:43
FhX => je crois, après avoir vaguement parcouru la source, que le empty ($query) est là pour vérifier que le champ texte dédié à la requête est vide ou non. Je crois hein, j'ai parcouru TRES vite... ;-)
Par contre pour le typage, oh que voui!
Garfield => pour appuyer ce que dit FhX, essaye donc ta façon de typer avec strpos ()... un 0 renvoyé par strpos(), dans ton cas, voudra soit dire que la chaine recherchée a été trouvée à la position 0, soit qu'il ne l'a pas trouvée. Tu ne sauras jamais. Alors qu'avec === 0 ou === false...tu seras fixé.
16 nov. 2005 à 12:46
NULL == FALSE mais NULL !== FALSE
NULL == 0 mais NULL !== 0
FALSE == 0 mais FALSE !== 0
Grande erreur de typage... il faut utiliser la triple comparaison pour comparer un type de donnée à une autre, pas la double !
Ensuite, vérifier une query se fait via true/false, pas via empty() :o
16 nov. 2005 à 12:34
ton 3ement, je suis pas tout a fait ok :
car "" ne signifie pas false, il existe une fonction qui s'appelle empty() qui verifie si le contenu est vide :
pour rappel : null != false != '' != 0 meme si les résultat peuvent parfois être similaire sur certaines fonctions
donc :
if($query=="") doit/peut être remplacé par if( empty($query) )
dès que j'ai un peu de temps, j'examine le code
16 nov. 2005 à 10:21
Certains trucs sont à revoir :-/ mais dans l'ensemble c'est bon ;-)
1) Les " sont lents !!! Utilise les '
Pourquoi ?
Car PHP lit tout ce qui est dedans les "
2) Du relief !!!!
Ton code php est plat...........
C'est pas térrible pour lire le code.
if(isset($_GET['id'])) {
$id=$_GET['id'] ;
}
3) if($query=="") peut être remplacé par if(!$query)
@+
16 nov. 2005 à 10:10