AFFICHAGE DE DONNÉES MYSQL PAGE PAR PAGE

cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008 - 16 nov. 2005 à 10:10
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 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.

https://codes-sources.commentcamarche.net/source/34659-affichage-de-donnees-mysql-page-par-page

ARY27 Messages postés 4 Date d'inscription samedi 4 mars 2017 Statut Membre Derniè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és 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344 > ARY27 Messages postés 4 Date d'inscription samedi 4 mars 2017 Statut Membre Dernière intervention 4 mars 2017
5 mars 2017 à 00:19
Il suffit de refaire le code en utilisant PDO OU mysqli ....
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
cs_binfranck Messages postés 1 Date d'inscription mercredi 8 avril 2009 Statut Membre Derniè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és 72 Date d'inscription mardi 5 juillet 2005 Statut Membre Derniè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és 45 Date d'inscription dimanche 4 septembre 2005 Statut Membre Derniè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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 4 Date d'inscription dimanche 7 mars 2004 Statut Membre Dernière intervention 30 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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 4 Date d'inscription dimanche 7 mars 2004 Statut Membre Dernière intervention 30 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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
19 nov. 2005 à 13:17
Bah, tu peux faire :
'0' = (string) 0;

Et ca marche aussi bien ;)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
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
';
}

// 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

@+
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 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és 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
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és 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 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.
Rejoignez-nous