KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Mardi 20 mai 2008 - 21:48:31

Problème affichage resultat requete PHP/mySQL

Rechercher : dans
Problème affichage resultat requete PHP/mySQL
par remoh
 Fil de Discussions
Statut : Non résolu
vendredi 19 octobre 2007 à 14:41:10
Bonjour,

Je suis en train de créér un site qui repertorie des soties culturelles. le principe est simple, c'est un moteur de recherche avec plusieurs entrées. L'utilisateur choisi d'effectuer une recherche par date et type de sortie.

J'ai donc crée une base de donnée mySQL, puis un formulaire de recherche en html. Jusque là pas de pb...

Pour la page PHP qui affiche les résultats, c'est plus compliqué ! Je me suis bien inspiré des cours de phpdebutant.org, j'arrive à afficher les résultats classés par date dans un tableau. J'ai également réussi à limiter le nombre de resultats par page. Le problème, c'est que je n'arrive toujours pas à afficher les liens pour passer d'une page de résultat à une autre en bas de mon tableau...!!!

Je done mon code pour ceux qui pourraient m'aider.
Merci d'avance pour vos réponses.

le fichier fonctions.php est à la suite...

<?php
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
//=========================================
// information pour la connection à le DB
//=========================================
$host = '';
$user = ''';
$pass = '';
$db = '';

//=========================================
// initialisation des variables
//=========================================
$nombre = 5;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];

//=========================================
// connection à la DB
//=========================================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================
$select = 'SELECT count(id) FROM Sorties';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];

//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}

//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage
// selon les demandes de l'utilisateur
//=========================================

// Si le champ Date est vide et le champ Type correspond à tous
if ($_POST['mois'] == '' AND $_POST['jour'] == '' AND $_POST['Type'] == 'Tous')
{
// requête SQL qui récupère les enregistrements
$select = "SELECT DATE_FORMAT(Date,'%d-%m-%Y') AS Datefr,Type,Désignation,Lieu FROM Sorties ORDER BY Date ASC limit ".$limite.",".$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

// si on a récupéré un resultat on l'affiche.
if($total) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>Date</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Type</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Désignation</u></b></td>­;';
echo '<td bgcolor="#9f9f9f"><b><u>Lieu</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['Datefr'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['Type'].'</td>';
echo '<td bgcolor="#d4d4d4">'.'<b>'.$row['Désignation'].'</b>'.'</td>­';
echo '<td bgcolor="#d4d4d4">'.$row['Lieu'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);
}

// Si le champ Date est vide ou le champ Type correspond à tous
elseif ($_POST['mois'] == '' AND $_POST['jour'] == '' OR $_POST['Type'] == 'Tous')
{
// requête SQL récupère les enregistrements
$select = "SELECT DATE_FORMAT(Date,'%d-%m-%Y') AS Datefr,Type,Désignation,Lieu FROM Sorties WHERE Date='".$_POST['annee']."-".$_POST['mois']."-".$_POST['jour'].&qu­ot;' OR Type='".$_POST['Type']."' ORDER BY Date ASC limit ".$limite.",".$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

// si on a récupéré un résultat on l'affiche.
if($total) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>Date</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Type</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Désignation</u></b></td>­;';
echo '<td bgcolor="#9f9f9f"><b><u>Lieu</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['Datefr'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['Type'].'</td>';
echo '<td bgcolor="#d4d4d4">'.'<b>'.$row['Désignation'].'</b>'.'</td>­';
echo '<td bgcolor="#d4d4d4">'.$row['Lieu'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);
}

// Si les deux champs sont renseignés
else
{
// requête SQL qui récupère les enregistrements
$select = "SELECT DATE_FORMAT(Date,'%d-%m-%Y') AS Datefr,Type,Désignation,Lieu FROM Sorties WHERE Date='".$_POST['annee']."-".$_POST['mois']."-".$_POST['jour'].&qu­ot;' AND Type='".$_POST['Type']."' ORDER BY Date ASC limit ".$limite.",".$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

// si on a récupéré un résultat on l'affiche.
if($total) {
// debut du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td width="80" bgcolor="#9f9f9f"><b><u>Date</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Type</u></b></td>';
echo '<td bgcolor="#9f9f9f"><b><u>Désignation</u></b></td>­;';
echo '<td bgcolor="#9f9f9f"><b><u>Lieu</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td width="80" bgcolor="#d4d4d4">'.$row['Datefr'].'</td>';
echo '<td bgcolor="#d4d4d4">'.$row['Type'].'</td>';
echo '<td bgcolor="#d4d4d4">'.'<b>'.$row['Désignation'].'</b>'.'</td>­';
echo '<td bgcolor="#d4d4d4">'.$row['Lieu'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);
}
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);
}
?>





fichier fonctions.php

<?php
//récupération de $limite
if(isset($_GET['limite']))
$limite=$_GET['limite']; else $limite=0;

function verifLimite($limite,$total,$nombre) {
// je verifie si limite est un nombre.
if(is_numeric($limite)) {

// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
// j'assigne 1 à $valide si $limite est entre 0 et $max
$valide = 1;
}
else {
// sinon j'assigne 0 à $valide
$valide = 0;
}
}
else {
// si $limite n'est pas numérique j'assigne 0 à $valide
$valide = 0;
}
// je renvois $valide
return $valide;
}
?>

<?php
function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
echo '<table border = "0" ><tr>'."\n";
while($numeroPages <= $nbpages) {
echo '<td ><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\­n";
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
echo '<br>'."\n";
}
}
echo '</tr></table>'."\n";
}
?>
Répondre à remoh  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ilan27, le vendredi 19 octobre 2007 à 17:02:30 Fil de Discussions 
Bonjour,
moi je te propose un algorithme plus simple pour les pages:
$nbmessparpage=15 //par exemple
$req=mysql_query("SELECT COUNT(*) as nbmess FROM latable") or die(mysql_error()); //On compte le nb de messages
$don=mysql_fetch_array($req);
$nbtotalmess=$don['nbmess']; //On le stock dans une variable. Ensuite, les messages s'afficheront entre 2 limites, fixées par rapport au
//numéro de la page demandée.Ex: on demande la 2? On affiche les messages du numéro 2*15-15 , et on en affiche 15. La fonction
//générale est:
if(isset($_POST['page'])){ //si on a demandé une page, donc dans les liens il y aura cette variable. On parcourt les possibilités:
for($i=1; $i<=$nombredepages; $i++){
if($_GET['page']==$i){
//On a demandé cette page i

$requet=mysql_query("SELECT * FROM latable ORDER BY id DESC LIMIT ". ($nbmessparpage*$i-$nbmessparpage) . "," . $nbmessparpage . "") or die(mysql_error());;
while ($donnees=mysql_fetch_array($requet)) { //Tu affiches les données
}
}
}else{
//Tu affiche la page 1 avec cette methode
}

Les liens:

for($j=1; $j<=$nombredepages; $j++){
echo "<a href=\"mapage.php?page=" . $j . "\">" . $j . "</a>";
}

Voila!
Pour plus, vas ici: plusieurs pages dans un forum#0
Répondre à ilan27
Discussions pertinentes trouvées dans le forum
26/04 16h21Afficher résultat requête php dans tableau ?Webmastering26/04 16h282
19/02 15h28afficher résultat requête dans un tableau phpProgrammation22/02 14h3421
21/01 20h59Aide pour répéter requete PHP/MySQLWebmastering22/01 18h223
01/02 11h50Affichage résultat requête tableau dynamiqueWebmastering27/02 23h3312
Plus de discussions sur « Problème affichage resultat requete PHP/mySQL » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide