wynelle
Messages postés24Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention11 septembre 2005
-
23 févr. 2005 à 23:46
wynelle
Messages postés24Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention11 septembre 2005
-
25 févr. 2005 à 13:40
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.
Pour faire simple, je veux que les résultats "premium" s'affichent dans un tableau avec couleur et que les autres "non premium" s'affichent en liste normale.
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
JeanPoldeux
Messages postés64Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention 5 août 2005 24 févr. 2005 à 03:07
Je n'ai pas bien
compris si tu souhaites avoir des tableaux différents selon la valeur
du champ "premium" ou si il s'agit simplement des lignes d'un seul et
même tableau qui doivent être présentées différemment.
Dans le premier cas, la solution la plus facile est de lancer deux requêtes SQL successives. Une première avec la clause WHERE premium=1 et la seconde avec la clause WHERE premium NOT = 1.
Tu auras donc deux jeux d'enregistrements que tu pourras afficher comme
tu le souhaites. Afin de garder ta présentation par page, lance d'abord
la requête SELECT COUNT(*) sur ta table afin de connaitre le nombre total d'enregistrements.
Dans le second cas, il te suffit d'ajouter un test dans ta boucle "while"
Ce qui en substance donnera
echo "\";
while($row = mysql_fetch_array($result))
{
if ($row[\"PREMIUM\"]==1)
{
echo \";
}
else
{
echo \";
}
echo\"----
";
echo $row["VILLE"];
echo ", \";
}
Voici une fonction
qui peut t'être utile. Elle lance une requête sur une base de données
et renvoi une matrice. Il suffit alors de la parcourir par deux boucles
for imbriqués afin de faire varier les indices de ligne et de colonne.
function Select($champs,$tables,$conditions,$group,$order,$nbrec,$liminf)
/* Effectue une requête SELECT sur la table choisie
RETOUR: une matrice (nbre de records X nbre de champs)
false en cas d'échec ou 0 enregistrement
$champs = une liste des champs séparés par ,
$tables = une liste des tables séparées par , avec alias si nécessaire
$conditions = liste des conditions séparés par des opérateurs logiques
$group = champ(s) sur le(s)quel(s) sera effectué un regroupement
$order = champ(s) sur le(s)quel(s) seront triés les enregistrements
(+ ASC pour croissant et DESC pour décroissant)
$liminf = index du premier enregistrement de l'intervalle à retourner
Rien ne t'empêche alors de placer le nombre d'enregistrement par page dans la condition : $i=0;$i<$limite_par_page;$j++
Bon courage
Jean Poldeux
Petit conseil : Essaye d'utiliser les feuilles de
styles (CSS). Ta mise ne page est alors totalement indépendante de ton
code PHP et tu n'as plus qu'à utiliser les attributs "class" ou "id"
dans tes balises HTML.