coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
28 déc. 2005 à 00:17
cs_rayman223
Messages postés17Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention20 mai 2010
-
26 août 2008 à 11:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_rayman223
Messages postés17Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention20 mai 2010 26 août 2008 à 11:44
Bonjour,
J'ai essayé cette source et j'ai aucun problème si ce n'est une petite question^^
au début, il y a la fonction pagination
function pagination($page, $max_page)
{...}
Je ne vois pas l'utilité de ce code car sans cette fonction, le script fonctionne et on peut utiliser d'autre variable dans les liens, quelque chose qu'on ne peux pas faire avec cette source actuel.
Donc a quoi sert cette fonction?
merci de me répondre :)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 3 janv. 2006 à 19:20
Les exceptions ne sont pas signes de programmation OO !! :)
function test($sql) {
$query = @mysql_query($sql);
if ( $query === FALSE ) {
throw new Exception('Erreur de query : '.$sql);
} else {
return $query;
}
}
$sql = "SELECT ....";
try { // Optionnel !
$query = test($sql);
$num = mysql_num_rows($query);
// code supplémentaire...
} catch ( Exception $e ) { // Affichera une erreur seulement si une exception a été déclanché !
die ($e->getmessage);
}
C'est simpliste et c'est ultra facile à exploiter !
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 3 janv. 2006 à 04:49
Oui,pourquoi pas ctype_digit().Mais pour la programmation objet je ne suis pas encore prêt.
Merci de vos conseils.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 2 janv. 2006 à 22:24
Pourquoi pas... ctype_digit est applicable ici, pourquoi pas... ! :)
Par contre, le trigger_error ca commence à se faire vieux ca... il existe les exceptions maintenant qui permettent de faire bien plus de choses qu'un simple trigger tout moche au visiteur quand ca arrive ! ;)
Jayadeva
Messages postés67Date d'inscriptionmercredi 2 juillet 2003StatutMembreDernière intervention 1 septembre 2008 2 janv. 2006 à 17:43
Au lieu de faire :
# echo'erreur
';
Qui est d'ailleur faux, car en xhtml H3 existe pas (il faut utiliser les minuscules), utilise la fonction trigger_error(); qui générera une erreur comme celles de php ^^
Exemple, qui générera un 'warning' :
trigger_error('Mauvais type d\'url',E_USER_WARNING);
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 2 janv. 2006 à 16:01
justement :-)
Autant voir si la page est numérique pour ne pas l'afficher dans le cas contraire, plutôt que de tout convertir numériquement (gourmandise) alors que ça peut ne servir à rien.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 2 janv. 2006 à 13:52
c'est pas crade.... c'est strictement équivalent à
$page =intval($_GET['page']);
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 1 janv. 2006 à 22:19
ouais mais c'est crade...
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 1 janv. 2006 à 20:33
Et alors ? Le typage en force ca existe pas en PHP ???!!!
$page = (int) $_GET['page'];
Et hop, pas besoin de s'emmerder avec 40 fonctions pour savoir si c'est un entier ou un double ou un string ou un objet ou un tableau !!!!
Rahhh des fois :p
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 29 déc. 2005 à 22:45
FhX > bah oui c'est du string, mais bon si tu veux savoir que c'est un entier... je préfère encore ctype_digit à la précédente expression régulière lol
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 29 déc. 2005 à 20:55
La raison pourquoi j'ai utilisé ctype_digit($page),c'est que je voulais éviter que l'on passe des nombres décimaux par l'url puisque cela est inutile.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 29 déc. 2005 à 19:44
"if($page <= $max_page AND $page >= 1 AND ctype_digit($page)){" A partir du moment où tu fais : $page >= 1, $page est considéré comme INT dorénavent, donc ctype_digit() ne sert à rien du tout. Il y a transtypage automatique de $page qui passe de string à integer.
D'ailleurs, j'ai souvenir que tout ce qui passe par $_GET est forcément de type chaine ! En effet, un tour sur la doc permet de voir :
"Variables provided to the script via URL query string."
C'est bien du string qui circule, le reste passe à la trappe :)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 déc. 2005 à 22:27
Ah oki laisse tomber j'ai compris quel était ton problème avec la fonction is_int() ;-) $_GET['page'] étant une string... et inutile de passer par intval() trop gourmand :-)
Autant pour moi.
a ++
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 déc. 2005 à 22:20
"Tu m'a proposé d'utiliser les fonctions {is_numeric($page) ou encore is_int($page)} qui remplacait très mal"
d'où ça remplace "mal" ? au contraire, j'utilise perso ça sur mon site j'ai jamais eu de problèmes, et c'est largement plus rapide qu'une expression régulière...
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 28 déc. 2005 à 21:48
Salut Anthomicro
LA raison pour laquelle je parle de chaîne de caractères, c'est parce que la valeur de {$_GET['page']} est une chaine et
Cela n'empêche pas mon script de fonctionner.
Tu m'a proposé d'utiliser les fonctions {is_numeric($page) ou encore is_int($page)} qui remplacait très mal l'expression régulière dans mon script.Merci quand même.
j'ai alors trouvé une fonction plus apropriée pour mon script.
ctype_digit($page)
Elle vérifie qu'une chaîne est un entier.
Ton conseil est très aprécié.Si tu a une meilleure idée J'aimerai bien la connaitre.
Merci encore :-]
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 28 déc. 2005 à 21:14
Mdr Coucou...
Sinon print est plus lent mais prend moins de mémoire... donc ça se vaut... .. .
QUi plus est la différence est trop peu flagrante (1/2 seconde sur 250.000 )... .. .
@ tchaOo°
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 déc. 2005 à 20:59
non, en philo par exemple, j'ai jamais réussi à lire une page entière...
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 déc. 2005 à 20:39
"is_numeric() ne permet pas de savoir si la chaîne $page est un nombre décimal"
parce qu'une page non entière ça existe ?
une page ça porte toujours un numéro entier, ou alors tu m'apprends des trucs là...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 déc. 2005 à 20:02
en html on ne met pas < mais < idem pour > qui se note >
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 28 déc. 2005 à 19:56
Voila, j'ai fait quelques modifications.
J'ai ajouté des guillemets simples et du css.
Si il y a autre chose à améliorer, merci de me le dire.
Merci coucou :-)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 déc. 2005 à 19:54
print est plus lent
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 28 déc. 2005 à 19:15
@ Coucou... pourquoi echo et pas print... .. . oÔ
@ tchaOo°
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 déc. 2005 à 17:10
mais il te reste toujours des guillemets doubles !
echo"[pagination.php?page='.$i.' '.$i.']
';
de plus, les balises u, b et i sont n'existent pas en xhtml mieux vaut utiliser du CSS
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 28 déc. 2005 à 16:31
J'ai modifié l'Expression rationnelle par la fonction ctype_digit()
Merci
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 28 déc. 2005 à 14:48
L'affichage du script sur cette page me laisse croire qu'il contient une erreur.
Merci de me donner votre avis.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 déc. 2005 à 14:30
l'expression régulière est disons quelquechose de quelquepeu inutile ici... une expression est couteuse en temps de calcul...
gt_371
Messages postés10Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention 6 octobre 2008 28 déc. 2005 à 14:21
bonjour,
J'ai utilisé une expression régulière pour éviter que l'url sois modifiée inutilement.
Cette expression régulière permet de savoir si $page n'est pas un nombre décimal.
is_numeric() ne permet pas de savoir si la chaîne $page est un nombre décimal et is_int() retourne FALSE car $page est une chaîne de caractères.
Je ne vois donc pas l'utilité de c'est fonction dans mon script.
Merci.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 déc. 2005 à 13:58
ça reste mal codé, même après la mise à jour...
relis le commentaire d'antho
echo"««";
ici, on doit mettre des guillemets simples...
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 déc. 2005 à 08:12
Salut,
utilise plutôt is_numeric($page) ou encore is_int($page) (si tu préfères le court) plutôt qu'une expression régulière pour ça ;-)
26 août 2008 à 11:44
J'ai essayé cette source et j'ai aucun problème si ce n'est une petite question^^
au début, il y a la fonction pagination
function pagination($page, $max_page)
{...}
Je ne vois pas l'utilité de ce code car sans cette fonction, le script fonctionne et on peut utiliser d'autre variable dans les liens, quelque chose qu'on ne peux pas faire avec cette source actuel.
Donc a quoi sert cette fonction?
merci de me répondre :)
3 janv. 2006 à 19:20
function test($sql) {
$query = @mysql_query($sql);
if ( $query === FALSE ) {
throw new Exception('Erreur de query : '.$sql);
} else {
return $query;
}
}
$sql = "SELECT ....";
try { // Optionnel !
$query = test($sql);
$num = mysql_num_rows($query);
// code supplémentaire...
} catch ( Exception $e ) { // Affichera une erreur seulement si une exception a été déclanché !
die ($e->getmessage);
}
C'est simpliste et c'est ultra facile à exploiter !
3 janv. 2006 à 04:49
Merci de vos conseils.
2 janv. 2006 à 22:24
Par contre, le trigger_error ca commence à se faire vieux ca... il existe les exceptions maintenant qui permettent de faire bien plus de choses qu'un simple trigger tout moche au visiteur quand ca arrive ! ;)
2 janv. 2006 à 17:43
# echo'erreur
';
Qui est d'ailleur faux, car en xhtml H3 existe pas (il faut utiliser les minuscules), utilise la fonction trigger_error(); qui générera une erreur comme celles de php ^^
Exemple, qui générera un 'warning' :
trigger_error('Mauvais type d\'url',E_USER_WARNING);
2 janv. 2006 à 16:01
Autant voir si la page est numérique pour ne pas l'afficher dans le cas contraire, plutôt que de tout convertir numériquement (gourmandise) alors que ça peut ne servir à rien.
2 janv. 2006 à 13:52
$page =intval($_GET['page']);
1 janv. 2006 à 22:19
1 janv. 2006 à 20:33
$page = (int) $_GET['page'];
Et hop, pas besoin de s'emmerder avec 40 fonctions pour savoir si c'est un entier ou un double ou un string ou un objet ou un tableau !!!!
Rahhh des fois :p
29 déc. 2005 à 22:45
29 déc. 2005 à 20:55
29 déc. 2005 à 19:44
D'ailleurs, j'ai souvenir que tout ce qui passe par $_GET est forcément de type chaine ! En effet, un tour sur la doc permet de voir :
"Variables provided to the script via URL query string."
C'est bien du string qui circule, le reste passe à la trappe :)
28 déc. 2005 à 22:27
Autant pour moi.
a ++
28 déc. 2005 à 22:20
d'où ça remplace "mal" ? au contraire, j'utilise perso ça sur mon site j'ai jamais eu de problèmes, et c'est largement plus rapide qu'une expression régulière...
28 déc. 2005 à 21:48
LA raison pour laquelle je parle de chaîne de caractères, c'est parce que la valeur de {$_GET['page']} est une chaine et
Cela n'empêche pas mon script de fonctionner.
Tu m'a proposé d'utiliser les fonctions {is_numeric($page) ou encore is_int($page)} qui remplacait très mal l'expression régulière dans mon script.Merci quand même.
j'ai alors trouvé une fonction plus apropriée pour mon script.
ctype_digit($page)
Elle vérifie qu'une chaîne est un entier.
Ton conseil est très aprécié.Si tu a une meilleure idée J'aimerai bien la connaitre.
Merci encore :-]
28 déc. 2005 à 21:14
Sinon print est plus lent mais prend moins de mémoire... donc ça se vaut... .. .
QUi plus est la différence est trop peu flagrante (1/2 seconde sur 250.000 )... .. .
@ tchaOo°
28 déc. 2005 à 20:59
28 déc. 2005 à 20:39
parce qu'une page non entière ça existe ?
une page ça porte toujours un numéro entier, ou alors tu m'apprends des trucs là...
28 déc. 2005 à 20:02
28 déc. 2005 à 19:56
J'ai ajouté des guillemets simples et du css.
Si il y a autre chose à améliorer, merci de me le dire.
Merci coucou :-)
28 déc. 2005 à 19:54
28 déc. 2005 à 19:15
@ tchaOo°
28 déc. 2005 à 17:10
echo"[pagination.php?page='.$i.' '.$i.']
';
de plus, les balises u, b et i sont n'existent pas en xhtml mieux vaut utiliser du CSS
28 déc. 2005 à 16:31
Merci
28 déc. 2005 à 14:48
Merci de me donner votre avis.
28 déc. 2005 à 14:30
28 déc. 2005 à 14:21
J'ai utilisé une expression régulière pour éviter que l'url sois modifiée inutilement.
Cette expression régulière permet de savoir si $page n'est pas un nombre décimal.
is_numeric() ne permet pas de savoir si la chaîne $page est un nombre décimal et is_int() retourne FALSE car $page est une chaîne de caractères.
Je ne vois donc pas l'utilité de c'est fonction dans mon script.
Merci.
28 déc. 2005 à 13:58
relis le commentaire d'antho
echo"««";
ici, on doit mettre des guillemets simples...
28 déc. 2005 à 08:12
utilise plutôt is_numeric($page) ou encore is_int($page) (si tu préfères le court) plutôt qu'une expression régulière pour ça ;-)
# $page = $_GET['page'];
#
# if(isset($page)){
non, là ta verif isset est mal placée
if(isset($_GET['page'])
{
$page_courante = pagination($_GET['page'], $max_page);
}
28 déc. 2005 à 01:38
28 déc. 2005 à 00:17
on utilise echo et non print
$page = @$_GET['page'];
non !!! on vérifie si la variable existe ! on ne cache pas l'erreur !!!
ce code est très mal codé !