begin process at 2012 05 28 22:18:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

HELP CODAGE / Affichage différent selon résultats requête


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

HELP CODAGE / Affichage différent selon résultats requête

mercredi 23 février 2005 à 23:46:06 | HELP CODAGE / Affichage différent selon résultats requête

wynelle

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 '<TABLE width="495" bgcolor="#FFDB18" bordercolor="#000000" border="0" cellpadding="0" cellspacing="0"><TR><TD ALIGN="center">'."\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 '<tr>';
echo '<td rowspan="3" height="70" width="105"><a href="http://'.$row['URL'].'" target="_blank"><img height="70" alt="'.$row['INTITULE'].'" src="images/Photos_B&B/'.$row['ID'].'.jpg" width="105" border="0"></a></td>';
echo '<td width="277" height="25" valign="middle"><b><a href="http://'.$row['URL'].'" target="_blank"><span class="list1"></span><font color="#FD740F" size="3">'.$row['INTITULE'].'</a></b>&nbsp;<img border="0" src="images/Divers/repas_'.$row['REPAS'].'.bmp" alt="Repas sur réservation => '.$row['REPAS'].'" width="22" height="22"></font></td>';
echo '<td align="right" width="106">&nbsp;<img border="0" src="images/Divers/'.$row['CLASSIFICATION'].'_epis.bmp" width="'.$row['CLASSIFICATION'].''.$row['CLASSIFICATION'].'" height="22"><span class="list3"><font size="1" face="Verdana">&nbsp;<img border="0" src="images/Divers/'.$row['AFFILIATION'].'_jaune.bmp" width="22" height="22" alt="Membre - '.$row['AFFILIATION'].'">&nbsp;</font></span></td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2" width="387"><span class="list2"><font size="1" face="Verdana">'.$row['DESCRIPTIF_LISTE'].'</font></span></td>';
echo '</tr>';
echo '<tr>';
echo '<td width="277"><span class="list3"><font size="2" face="Verdana">'.$row['CP'].' '.$row['VILLE'].'</font></span></td>';
echo '<td align="right" width="106"><span class="list3"><u><font size="1" face="Verdana">'.$row['TEL'].'</font></u></span></td>';
echo '</tr>';
echo '<tr><td colspan="3" width="495" height="10" bgcolor="#FFFFFF"></td></tr>';
echo '</table>'."\n";
}
echo '</TABLE>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);


// nombre total de pages
$nb_pages = ceil($nb_results / $nb_results_p_page);
// nombre de pages avant
$avant = $courant > ($nb_avant + 1) ? $nb_avant : $courant - 1;
// nombre de pages après
$apres = $courant <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $courant;

// première page
if($premiere && $courant - $avant > 1)
     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '"><font size="1" face="Verdana"><span style="color: #0000FF;">Première</span></font></a>&nbsp;&nbsp;';
    
// page précédente
if($courant > 1)
     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant - 1) . '"><font size="1" face="Verdana"><span style="color: #0000FF;">Précédente</span></font></a>&nbsp;&nbsp;';

// affichage des numéros de page
for($i = $courant - $avant; $i <= $courant + $apres; $i++)
{
     // page courante
     if($i == $courant)
        echo '<font size="2" face="Verdana"><span style="color: #FF0000;">' . $i . '</span></font>&nbsp;&nbsp;';
     else
        echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i . '"><font size="2" face="Verdana"><span style="color: #0000FF;">' . $i . '</span></font></a>&nbsp;&nbsp;';
}

// page suivante
if($courant < $nb_pages)
     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant + 1) . '"><font size="1" face="Verdana"><span style="color: #0000FF;">Suivante</span></font></a>&nbsp;&nbsp;';
    
if($derniere && $courant + $apres < $nb_pages)
     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $nb_pages . '"><font size="1" face="Verdana"><span style="color: #0000FF;">Dernière</span></font></a>&nbsp;&nbsp;';

?>

jeudi 24 février 2005 à 03:07:22 | Re : HELP CODAGE / Affichage différent selon résultats requête

JeanPoldeux

Membre Club
Réponse acceptée !

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 "<table>";

while($row = mysql_fetch_array($result))
{
    if ($row["PREMIUM"]==1)
    {
          echo "
<span color=\"red\">;
    }
    else
    {
          echo "
<span color=\"blue\">;
    }
    echo"<tr><td>";
    echo $row["VILLE"];
    echo "</td></tr></span>";
}

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
      $nbrec      = nombre d'enregistrements à retourner
    */
    {

     //Connexion à localhost
     $id_connect = mysql_connect( $serveur, $login, $pass );
     mysql_select_db( "portail-bnb", $connexion );

    //Création de la requête
    $query="SELECT $champs
            FROM $tables";
    if(!empty($conditions))
      {
      $query=$query." WHERE $conditions";
      }
    if(!empty($group))
      {
      $query=$query." GROUP BY $group";
      }
    if(!empty($order))
      {
      $query=$query." ORDER BY $order";
      }
    if(!empty($nbrec))
      {
      if(!empty($liminf))
        {
        $query=$query." LIMIT $liminf, $nbrec";
        }
      else
        {
        $query=$query." LIMIT $nbrec";
        }
      }
    //Exécution de la requête
    if(id_connect != false)
      {
      $res=@mysql_query($query, $id_connect);
      if (empty($res))
        {
        return false;
        }
      else
        {
        $nbRows=@mysql_num_rows($res);
        if ($nbRows==0)
          {
          return false;
          }
        else
          {
          for($i=0;$i<$nbRows;$i++)
            {
            $enregs[$i]=@mysql_fetch_array($res,MYSQL_NUM);
            }
          return $enregs;
          }
        }
      }
    else
      {
      return false;
      }
    }

Parcours de la matrice
$res=
Select($champs,$tables,$conditions)
echo "<table>";
for($i=0;$i<count($res);$i++)
{
    echo "<tr>";
    for($j=0;$j<count($res[$i]);$j++)
       {
        echo "<td>".$res[$i][$j]."</td>";
        }
    echo "</tr>";
}
echo "</table>";

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.

vendredi 25 février 2005 à 13:40:39 | Re : HELP CODAGE / Affichage différent selon résultats requête

wynelle

Merci JeanPoldeux,

Cela semble si simple quand on maîtrise son sujet.

Finalement, c'est la toute première suggestion qui a été retenue... et qui fonctionne.

Un grand merci.

Wynelle.


Cette discussion est classée dans : page, echo, nb, courant, nbsp


Répondre à ce message

Sujets en rapport avec ce message

Affichage différents selon requête SQL [ par wynelle ] 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 lo Bug affichage page par page :-(( [ par wynelle ] Bonjour à toutes et à tous,J'ai un problème avec un affichage page à page pour lier 2 requêtes. Seule la 2ème requête ($result) prend bien en compte u tjs mon probleme d'affichage page par par page!!!! [ par piervs ] Salut,Je vous avez deja poster ce message mais n'ayant tjs pas eu de solution fonctionnant je retente ma chance!!!J'ai un petit (en fait plutot gros) Problème de pagination [ par goboben ] Bonjour à tous!Voila mon problème, qui n'est pas insurmontable mais bien embetant...J'ai crée un diaporama avec affichage par page (precedente 1 2 3 4 Boite de réception de nouveau messages privés. [ par BenXbox ] Pour le moment j’ai mon script qui m’affiche sur 5 pages les 100 derniers messages dans l’ordre décroissant de ma boite de réception de nouveau messag Problème de pagination [ par speedylol ] Bonjour , j 'ai une petit problème avec ma pagination , depuis que je l'est rajouté mais donnée qui son dans ma base ne son plus extraite et je vois p problème d'affichage par page [ par 01cod10 ] Salut à tousLa première page s'affiche correctement mais qd je clique sur 2 rien ne s'affiche <span style= sortie une seule fois un double champs d'une table [ par speedylol ] bonjour voici mon probléme, j ai une liste de membres qui depose leur galerie dans la table galerie avec id_gal qui est egale au membre, j'aimerais l' moteur recherche probléme n'affiche rien [ par speedylol ] bonjour voilà j'ai un moteur de recherche  il n' affiche rien, j'ai besoin d'une petite aide , pour resoudre ce probléme?? voici les code;require_once aide pour affichage galerie [ par speedylol ] bonjour voila mon probléme id_gal est le speudo du membre qui introduit sa galerie et j'aimerais l'afficher une seule fois dans ma liste de galerie .


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales