requête sql sur deux colonnes

requête sql sur deux colonnes - PHP - Programmation

Marsh Posté le 12-12-2008 à 19:58:10    

Bonjour!
Je souhaite afficher une requête sql sur deux colonnes...
J'ai tenté un code mais cela n'a pas marcher:

Citation :

<?php
   mysql_connect("localhost", "5119", "****" ); // Connexion à MySQL
   mysql_select_db("base" );  
   
       
// nombre de messages par page
$nombreDeMessagesParPage = 5;
// nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM matable');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// boucle pour les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="mapage.php?page=' . $i . '">' . $i . '</a> ';
}
if (isset($_GET['page']))
{
        $page = $_GET['page']; //numéro de la page indiqué dans l'adresse  
}
else // première fois qu'on charge la page
{
        $page = 1; // page 1 (par défaut)
}
 
// le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM matable ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
   // boucle pour lister tout ce que contient la table :
 
 
 
 
 
 
   $pair=0;
   while ($donnees = mysql_fetch_array($reponse) )
   {
     
     if($donnees['id']==$pair)
     {
   ?>
     
 
                    PREMIER CONTENU
                     
   
   <?php
    $pair+2;
    }
     
     
    else
    {
       ?>
     
                DEUXIEME CONTENU
 
                   
   <?php
            }
   }
   mysql_close(); // Déconnexion de MySQL
   ?>


 
 
 
 
mon but est donc un affichage:
9 8
7 6
5 4
3 2
1
 
Tout ca avec des page bien sûr... Mais ça sa marche...
 
Je dois encore vous dire que dans contenu 1 jai un div class=1 et dans contenu 2 jai un div class=2 et que je m'arrange après avec le css... Si vous avez une meilleur idée (surement) donnez là moi s.v.p.!
 
Merci d'avence!
 

Reply

Marsh Posté le 12-12-2008 à 19:58:10   

Reply

Marsh Posté le 12-12-2008 à 23:53:18    

ça ne résout pas le pb, mais perso je remplacerais :

Code :
  1. if (isset($_GET['page']))
  2. {
  3.         $page = $_GET['page'];


par :

Code :
  1. if (isset($_GET['page']))
  2. {
  3.         $page = abs(intval($_GET['page']));


afin d'être sûr que $page est bien un entier numérique positif ou nul.
Et en dessous j'ajouterais la clause :

Code :
  1. if ($page == 0) { $page = 1; } // pour éviter un bug avec le zéro


 
Ensuite, toujours dans une optique d'optimisation, je trouve ça "crade" :

Code :
  1. SELECT COUNT(*)


 
t'as vraiment besoin, pour compter les enregistrements, de rapatrier TOUS les champs ? sur une grosse table, ça peut se ressentir en performances.
 
j'opterais plutôt pour :

Code :
  1. SELECT COUNT(id)


 
Maintenant il me semble, si j'ai bien compris le titre, que dans l'idée des 2 colonnes, c'est plutôt une question d'affichage, non ? Donc HTML, CSS. Pas PHP.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 13-12-2008 à 11:24:24    

Si sa table est MyISAM, un select count(*) simple sur sa table sera ultra rapide vu que le nombre de tuples est stocké. Pas sûr que la même optim soit faite sur un select count(primary_key), même si y a des chances.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed