inverser le sens d'affichage des donner

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : inverser le sens d'affichage des donner

par hakazizi » 27 déc. 2008, 18:14

sa y'est c'est bon j'ai debuguer et sa fonctionne tres bien merci a tous pour votre aide.

par Ryle » 27 déc. 2008, 02:11

Bizare....

et si on oublie la pagination quelques instants, et que tu fais juste un

Code : Tout sélectionner

"SELECT * FROM produit WHERE $table = '$type' AND stock > 0 ORDER BY id DESC"
(sans le LIMIT donc) quelle que soit la valeur de $page

Est ce que tu as bien depuis le dernier id jusqu'au premier ?

par hakazizi » 26 déc. 2008, 14:19

je suis en auto increment.
et le probleme que j'ai c'est que la premiere page me donne 4,3,2,1 au lieu de 69,68,67,66 et pour moi 4321 ou 1,2,3,4 c'est exactement la meme chose en page deux j'ai 8,7,6,5 etc...

par Ryle » 25 déc. 2008, 19:37

Euh... on a pas nécessairement besoin d'une date pour trier des enregistrements chronologiquement. En l'occurence, si l'id est en auto_increment, les id les plus grands seront les plus récents, pas besoin de revoir toute la structure pour ça.

Ceci étant, et vu ton code (order by id desc), je ne comprends pas ce qui ne fonctionne pas dans ton tri... sur ta première page tu as les 4 derniers éléments triés de façon décroissante (id = 54, 53, 52 et 51 par exemple) et quand tu passes à la page 2 tu les retrouves par ordre croissant ? (id = 1, 2, 3 et 4 ??)

si tel est le cas, c'est que tu ne passes pas par le code mentionné ci-dessus ou que t'as des problèmes dans les valeurs du limit :)

par hakazizi » 24 déc. 2008, 19:19

cette solution n'est donc pas bonne je ne vais pas refaire toute la page pour cela merci quand meme

Code : Tout sélectionner

CREATE TABLE `produit` ( `id` int(11) NOT NULL auto_increment, `code_produit` varchar(255) NOT NULL default '', `cathegorie` varchar(255) NOT NULL default '', `type` varchar(255) NOT NULL default '', `petite_image` varchar(255) NOT NULL default '', `grande_image` varchar(255) NOT NULL default '', `image1` varchar(255) NOT NULL default '', `image2` varchar(255) NOT NULL default '', `image3` varchar(255) NOT NULL default '', `description` text NOT NULL, `prix` varchar(255) NOT NULL default '', `taille` varchar(255) NOT NULL default '', `stock` varchar(255) NOT NULL default '0', `recherche` text NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `recherche` (`recherche`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=73 ;

par Invité » 24 déc. 2008, 16:58

Il te sera impossible de trier par date si tu n'enregistre pas la date.

Présente-nous la structure de ta table à trier (CREATE TABLE produit ...)
Tu obtiendras cela dans phpmyadmin via la fonction "exporter" (un taquet en tête de page lorsque tu affiche la table produit

par hakazizi » 24 déc. 2008, 12:43

j'ai pas compris tu peux expliquer un peu merci j'ai pas de champs date dans ma table

par Patriboom » 23 déc. 2008, 18:37

C'est parce que dans ton code tu as ORDER BY id DESC
plutôt que ORDER BY NomChamptDate DESC

par hakazizi » 23 déc. 2008, 17:27

le script en lui meme fonctionne c'est dans la presentation des resultats que ce n'est pas ce que je veux.
le soucis que j'ai c'est d'afficher mes articles du plus recent au plus ancien 4 par 4 mais la premiere pages me donne toujours les plus ancien et pas les plus recent.

par Ryle » 23 déc. 2008, 15:42

Je vois pas bien ce qui pourrait clocher... pour trier par ordre décroissant, il suffit effectivement de spécifier un "ORDER BY champ DESC" dans ta requête, donc ton dernier while devrait bien t'afficher tes résultats du plus grand id au plus petit.

Peux-tu nous décrire d'avantage le problème ?

A noter que ce que tu mets entre apostrophes/guillemets est considéré par php comme une chaine, et qu'un nombre n'a pas besoin d'être converti en chaine pour être utilisé :
$nombre_page = ceil($nombre_article['COUNT(*)']/4); 
$page1 = $page*4 - 4;
sera tout aussi efficace, voire plus performant, et surtout plus lisible

inverser le sens d'affichage des donner

par hakazizi » 23 déc. 2008, 12:43

je butte sur le probleme depuis une semaine et la je bloque.
sur mon site le soucis c'est que les derniers ajouts sont afficher a la fin et je voudrais les mettre au debut en en affichant que quatre a la fois je vous met ou j'en suis.
cela n'est que ce qui concerne mon probleme
j'arrive a rien cela me les inverse bien mais les 4 premier seulement alors qu'au debut je voudrais les quatre dernier au debut
$page=intval($_GET['page']);
if($page < 1)
{
$page = '1';
}
$controle_page=$page;
if($table!='cathegorie'){$table='type';}elseif($table!='type'){$table='cathegorie';}
$nombre_article1=mysql_query("SELECT COUNT(*) FROM `produit` WHERE `$table` = '$type'  AND `stock` > 0");
$nombre_article=mysql_fetch_array($nombre_article1);
$nombre_page = ceil($nombre_article['COUNT(*)']/'4');
$page1=$page*'4'-'4';

$mod1 = mysql_query("SELECT * FROM produit WHERE $table = '$type'  AND stock > 0  ORDER BY id DESC LIMIT $page1,4 ");
while ($mod=mysql_fetch_assoc($mod1))
{}
merci de votre aide.