Changer l'ordre d'affichage d'un contenu sql

Farenheit

WRInaute discret
bonjour

j ai une base de données sql qui affiche des liens contenu dans la base, par ordre d'enregistrement (id).
Le numero 1 d'abord, pis le numero 2 etc...

Or, j aurai plutot voulu faire afficher par le "count" qui compabilise les visites.
C'est a dire du + grand vers le + petit (decroissant)

dans le code de la page j ai cette ligne ou pourrait se situer l'ordre d'affichage :
Code:
    <?php while($row = mysql_fetch_array($result, MYSQL_BOTH)){

est-ce bien la ?
si oui que dois je remplacer svp ?
et si non que faire ?

merci a vous

;-)
 

lambi521

WRInaute passionné
Re: Changer l'odre d'affichage d'un contenu sql

Cette ligne met le résultat de ta requête dans un tableau, ça ne trie pas.

Tu dois ajouter "order by count desc" à la fin de ta requête SQL, cherche "mysql order by" sur google tu vas trouver en 2 secondes
 

Koxin-L.fr

WRInaute passionné
Re: Changer l'odre d'affichage d'un contenu sql

Bonjour,

Non, ce n'est pas là.
Ca, c'est l'exécution de la requête.

Tu dois modifier la requête. Généralement du type "Select xxx From ..."
Là, tu y ajoutes l’ordonnance par nb visites, genre "... Order by nb_visite Desc..."

Rod
 

Farenheit

WRInaute discret
Re: Changer l'odre d'affichage d'un contenu sql

juste apres cette ligne (au dessus) j ai rajouté :
Code:
$SELECT * FROM * ORDER BY count desc;

mais ca cree une erreur, donc ca ne doit pas etre ca :lol:
 

Farenheit

WRInaute discret
Re: Changer l'odre d'affichage d'un contenu sql

(messages croises)
ah oui effectivement en haut du fichier j ai :

Code:
$result = mysql_query("select * from url", $link);
$num = mysql_num_rows($result);

c'est la dedans que ca se passe ?
 

Koxin-L.fr

WRInaute passionné
Re: Changer l'odre d'affichage d'un contenu sql

Non, ça, ça ne veut rien dire :)

Met un peu plus de code.
Essaye de trouver ta requête qui semble s'appeler $result = ... Select...
 

lambi521

WRInaute passionné
Re: Changer l'odre d'affichage d'un contenu sql

Remplace
Code:
$result = mysql_query("select * from url", $link);
Par
Code:
$result = mysql_query("select * from url where 1 order by count desc", $link);
En supposant que ton champ "count" existe bien dans ta table "url" et qu'il comptabilise tes visites
 

Farenheit

WRInaute discret
Re: Changer l'odre d'affichage d'un contenu sql

merci pour votre aide, mais le source semble un peu confus, genre on affiche tout "comme c'est "

voila l extrait :

Code:
<?php
include("config.php");
$msg = "";
if(isset($_POST['Submit']))
{
	$total = $_POST['total'];
	$td = 0;
	$i = 0;
	
	for($i = 1; $i <= $total; $i++)
	{
		if(isset($_POST["d$i"]))
		{
			mysql_query("DELETE FROM url WHERE id=".mysql_real_escape_string($_POST["d$i"]),$link);
			$td++;
		}
	}

	$msg = "$td url(s) deleted!";
}

$result = mysql_query("select * from url", $link);
$num = mysql_num_rows($result);
$n = 0;
?>


<p><?php echo $msg?></p>
<form name="form1" method="post" action="">
  <br /><br />
  <table  border="0" width="100%" cellpadding="0" cellspacing="2" bordercolor="#000000">
    <tr bgcolor="#dedede"> 
<td>&nbsp; Url 1</td>
<td>&nbsp; Url 2</td>
<td>Count</td>
</tr>
    <?php while($row = mysql_fetch_array($result, MYSQL_BOTH)){
$n++;
?>

<tr> 
<td><li> <a href="http://www.xxx.xxx/<?php echo htmlspecialchars($row['id']);?>" target="_blank">http://www.xxx.xxx/<?php echo htmlspecialchars($row['id']);?></a></td></li>
<td> <a href="<?php echo htmlspecialchars($row['url']);?>" target="_blank"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><?php echo htmlspecialchars($row['url']);?></font></a></td>
<td><p align="right">&nbsp;<b><?php echo htmlspecialchars($row['count']); ?></b></p></td>
    </tr>
    <?php

 }?>
 

lambi521

WRInaute passionné
Re: Changer l'odre d'affichage d'un contenu sql

Ce que je t'ai dis au-dessus devrais fonctionner sans problèmes. As-tu au moins essayé ? Et as-tu regardé sur Google ? C'est du PHP/MySQL de base, y'a aucune raison que ça ne fonctionne pas.
 

lambi521

WRInaute passionné
Peux-tu mettre la structure de ta table MysQL appellée "URL" ?

Je vais jeter un coup d'oeil à ton code mais c'est bizarre, ça doit venir du "count"
 

Farenheit

WRInaute discret
ma table est ainsi :

1 id mediumint(20) auto_increment
2 url text
3 count varchar(255)

je sais pas si ca peut apporter quelque chose
 

Farenheit

WRInaute discret
Code:
Structure de la table `url`
--

CREATE TABLE IF NOT EXISTS `url` (
  `id` mediumint(20) NOT NULL auto_increment,
  `ip` varchar(20) NOT NULL,
  `url` text NOT NULL,
  `count` varchar(255) NOT NULL,
  `tag` varchar(50) NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=100001 ;

--
-- Contenu de la table `url`
--

INSERT INTO `url` (`id`, `ip`, `url`, `count`, `tag`) VALUES
(1, '78.223.64.45', 'http://fr.news.yahoo.com/au-mont-saint-michel-fréquentation-baisse-depuis-nouveaux-074036776.html', '3', ''),
(2, '78.223.64.45', 'http://fr.news.yahoo.com/au-mont-saint-michel-fréquentation-baisse-depuis-nouveaux-074036776.html', '21', ''),
(5, '78.223.64.45', 'http://www.meteo10.com/les-sables-d-olonne.php', '11', 'sables');
 

lambi521

WRInaute passionné
Ton champ count est un varchar (pour le texte) plutôt qu'un INT (integer pour nombres) ce qui pose problème

Essaie directement dans ton espace d'admin de ta base (surement PhpMyAdmin)

Code:
select * from url where 1 order by (count * 1) desc
 

lambi521

WRInaute passionné
De rien !

Par contre tu devrais mettre ce champ en INT pour ne plus avoir ce problème (en sauvegardant ta BDD avant de modifier quoi que soit...)
 

Farenheit

WRInaute discret
oui effectivement, je commence a comprendre.
Ok je note pour le INT.

Une derniere demande :
est il possible de limiter le nombre d'affichage a 30 par exemple sur la page ?
 

lambi521

WRInaute passionné
C'est parcequ'il débute. Il est super optimiste. :)
C'est une erreur très courante de choisir le mauvais type de champ, surtout que je ne pense pas que c'est lui qui ait mis en place la BDD. Et vu la qualité des réponses que tu lui a fournies tu devrais t'abstenir de rire de lui...
 

Discussions similaires

Haut