Affichage différents selon requête SQL

Signaler
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005
-
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005
-
Bonjour à tous,

Et une galère de plus

J'ai une base de données plutôt simple avec les champs classiques (Nom, Prénom, Rue, ...., Premium).
J'aimerais lorsque je lance une requête s/un département par exemple que l'affichage des résultats de la requête commence par les données dont le champs "premium" = 1 avec un format tableau comme ci-dessous et que les autres données soit affichées en liste classique... tout en conservant mon affichage page par page.

Ci-joint mon codage actuel qui me donne les résultats avec un affichage sous forme de tableau spécifique mais je n'arrive pas à faire à ce que les données "premium"= 0 ne s'affichent pas de la même façon.

Merci d'avance pour toutes vos pistes car je commence à m'exciter grâve

Wynelle.

Ps : Désolé si ce n'est pas super bien codé, je n'ai aucun mérite car je m'inspire à gauche à droite ;-)

<?php
//partie de connexion a la bdd
$serveur = "localhost";
$login = "root";
$pass = "";
$connexion = mysql_connect( $serveur, $login, $pass );
mysql_select_db( "portail-bnb", $connexion );


$nb_results_p_page = 10; // nombre de résultats par page
$nb_avant = 3; // nombre de page avant la page courante
$nb_apres = 3; // nombre de page après la page courante
$premiere = 1; // aficher le lien "première page" (1 ou 0)
$derniere = 0; // afficher le lien "dernière page" (1 ou 0)
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)


// comptage du nombre de lignes de la base
$result = mysql_query("SELECT count(ID) FROM bnb_inscrits WHERE CP>=29000 AND CP<30000 AND TYPE!='G');
if(!$result)
{
// redirection erreur
header("location: erreur.php");
exit;
}
$ret = mysql_fetch_array($result);
// nombre de lignes
$nb_results = $ret[0];


// exemple de requete
$result = mysql_query("SELECT ID,INTITULE,CP,VILLE,TEL,URL,DESCRIPTIF_LISTE,AFFILIATION,CLASSIFICATION,REPAS, PREMIUM FROM bnb_inscrits WHERE CP>=29000 AND CP<30000 AND TYPE!='G' ORDER BY `CP` ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");


//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================
if($nb_results) {
// debut du tableau


echo ''."\n";

// lecture et affichage des résultats sur 2 colonnes

while($row = mysql_fetch_array($result)) {

echo '<table bordercolor="#FFFFFF" border="0" cellpadding="1" width="495">';
echo '----
';
echo ', [' . $_SERVER['SCRIPT_NAME'] . ' Première]&nbsp;&nbsp;';

// page précédente
if($courant > 1)
echo '[' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant - 1) . ' Précédente]&nbsp;&nbsp;';


// affichage des numéros de page
for($i = $courant - $avant; $i <= $courant + $apres; $i++)
{
// page courante
if($i == $courant)
echo '' . $i . '&nbsp;&nbsp;';
else
echo '[' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i . ' ' . $i . ']&nbsp;&nbsp;';
}


// page suivante
if($courant < $nb_pages)
echo '[' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant + 1) . ' Suivante]&nbsp;&nbsp;';

if($derniere && $courant + $apres < $nb_pages)
echo '[' . $_SERVER['SCRIPT_NAME'] . '?page=' . $nb_pages . ' Dernière]&nbsp;&nbsp;';


?>

2 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



dans ta requête met : ORDER BY premium DESC à la fin



a ++

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005

Salut Anthomicro,

Merci pour ta réponse mais cela ne ressout pas mon problème car même en filtrant par le champ "premium" à la fin, cela ne change par le mode d'afficchage pour ceux qui ne sont pas "premium"!

Pour faire simple, les listés "premium" s'affiche dans un cadre de couleur et les "non-premiums" s'affichant eux classiquement en liste.

Merci d'avance.

@+