Problème affichage sql sur plusieurs pages
zenso
-
avion-f16 Messages postés 20368 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 20368 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous !
J'ai un soucis avec mon affichage sql sur plusieurs pages qui fonctionne très bien sur mon site Free mais ne fonctionne pas sur mon nouvel hébergeur (OVH) alors qu'il s'agit d'exactement les mêmes pages et la même BDD.
Il m'affiche bien mes 5 premiers résultats, les liens existent bien en dessous des résultats par contre dès que je clique sur l'un d'entre eux, les résultats restent toujours les 5 premiers alors que l'url affiche :
"http://www.***.com/***.php?limite=5&PHPSESSID=b5c5eb49fec3bb893999b23214ef8a77" lors de la première visite du site par le navigateur ou bien "http://www.***.com/***.php?limite=5" par la suite.
En début de chaque page j'ai un :
Voici mon code qui me pose maintenant soucis : :oops:
Quelqu'un aurait-il une réponse pour moi s'il vous plaît, vous l'aurez certainement compris, je suis débutant ! :D
J'ai un soucis avec mon affichage sql sur plusieurs pages qui fonctionne très bien sur mon site Free mais ne fonctionne pas sur mon nouvel hébergeur (OVH) alors qu'il s'agit d'exactement les mêmes pages et la même BDD.
Il m'affiche bien mes 5 premiers résultats, les liens existent bien en dessous des résultats par contre dès que je clique sur l'un d'entre eux, les résultats restent toujours les 5 premiers alors que l'url affiche :
"http://www.***.com/***.php?limite=5&PHPSESSID=b5c5eb49fec3bb893999b23214ef8a77" lors de la première visite du site par le navigateur ou bien "http://www.***.com/***.php?limite=5" par la suite.
En début de chaque page j'ai un :
<?php session_start(); ?>
Voici mon code qui me pose maintenant soucis : :oops:
mysql_free_result($result);
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
function affichePages($nombre,$page,$total) {
$nbpages=ceil($total/$nombre);// 5 est le résultat par page
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
while($numeroPages <= $nbpages) {
echo '<span class="numPage"><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></span>';
echo '<style type="text/css">.numPage a{color:blue;font-weight:bold;margin:5px;}</style>';
echo '<style type="text/css">.numPage a:hover{background-color:gray;}</style>';
$limite = $limite + 5;// 5 est le résultat par page
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
}
}
}
echo "<center>";
if($limite != 0) {
echo '<span class="enLigne"><a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a></span>';
echo '<style type="text/css">.enLigne a{color:blue;display:inline;padding:10px;}</style>';
}
affichePages($nombre,$page,$total);
if($limitesuivante < $total) {
echo '<span class="enLigne"><a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a></span>';
echo '<style type="text/css">.enLigne a{color:blue;display:inline; padding:10px;}</style>';
}
echo "</center>";
Quelqu'un aurait-il une réponse pour moi s'il vous plaît, vous l'aurez certainement compris, je suis débutant ! :D
A voir également:
- Problème affichage sql sur plusieurs pages
- Comment supprimer une page sur word - Guide
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Marketplace probleme d'affichage ✓ - Forum Facebook
14 réponses
Ça reviendrait à la même chose, $limite sera défini, donc la condition ne sera pas vraie, mais $limite vaudra quand même 0.
Voilà comment faire :
Voilà comment faire :
$limite = isset($_GET['limite']) ? (int) $_GET['limite'] : 0;
Peut-être par ce que l'hébergeur en question ne supporte pas ta version de MySQL car il a peut-être un version moins récente que toi.
Cordialement.
Cordialement.
Salut.
OVH (comme beaucoup d'autres hébergeurs) est en PHP4 par défaut.
Pense à le mettre en PHP5.
https://docs.ovh.com/fr/
Ensuite, tu nous montres la partie du code pour la pagination ; si j'ai bien compris le problème, c'est au niveau de l'affichage des résultats ...
OVH (comme beaucoup d'autres hébergeurs) est en PHP4 par défaut.
Pense à le mettre en PHP5.
https://docs.ovh.com/fr/
Ensuite, tu nous montres la partie du code pour la pagination ; si j'ai bien compris le problème, c'est au niveau de l'affichage des résultats ...
Salut nob51 et avion-f16
J'ai donc vérifié ce que vous me disiez tous les deux et malheureusement ça ne vient pas de là !
Voici mon code pour l'affichage des résultats :
Nob51, comme tu peux le voir sur ce code, j'ai changé mon $nombre=5 en $nombre =12 pour voir si ça m'affiche le reste de mes données, le résultat est positif. Il y a en effet 12 enregistrements dans ma BDD.
Avion-f16, la version php de mon htaccess était par defaut SetEnv PHP_VER 5 chez OVH.
Merci pour vos idées qui font toujours avancer !
J'ai donc vérifié ce que vous me disiez tous les deux et malheureusement ça ne vient pas de là !
Voici mon code pour l'affichage des résultats :
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$nombre = 12; // on va afficher 5 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois
// on met limite à 0.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];
$select = 'SELECT count(*) FROM film';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
// requête SQL qui ne prend que le nombre d'enregistrements nécessaire à l'affichage.
$select = 'select * from film limit '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
// si on a récupéré un résultat on l'affiche.
if($total) {
while($row = mysql_fetch_array($result))
{
echo "<div id='annon'>";
echo "<div id='annonH'>";
echo "<center> N° :".$row['nofilm'];
echo " Titre :".$row['titre'];
echo "</center>";
echo "</div>"; // fin annonH
echo "<div id='annonB'>";
echo "<center> Année :".$row['annee'];
echo " <a href=\" reserv02.php?nofilm='".$row['nofilm']."'&titre='".$row['titre']."'&annee='".$row['annee']."'&nogenre='".$row['nogenre']."'&affiche='".$row['affiche']."' \">Réserver</a></center>";
echo "</div>"; //fin annonB
echo "</div>"; //fin annon
}
Nob51, comme tu peux le voir sur ce code, j'ai changé mon $nombre=5 en $nombre =12 pour voir si ça m'affiche le reste de mes données, le résultat est positif. Il y a en effet 12 enregistrements dans ma BDD.
Avion-f16, la version php de mon htaccess était par defaut SetEnv PHP_VER 5 chez OVH.
Merci pour vos idées qui font toujours avancer !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le problème, il est là :
$_GET['limite'] n'est pas $limite.
if (!isset($limite)) $limite = 0;Étant donné qu'avant cette ligne, la variable $limite n'est pas définie, la condition sera vraie donc $limite sera toujours défini à 0.
$_GET['limite'] n'est pas $limite.
Donc tu me conseilles de mettre $limite=0; avant et de laisser le reste tel quel ?
Si c'est le cas, ça ne marche pas !
Si c'est le cas, ça ne marche pas !
Youpi !
Avion f16, tu mérites bien ton pseudo, voire plus encore ! Merci, tu m'as enlevé une grosse épine du pied. Quel soulagement ! Par contre, je ne comprends pas alors pourquoi, sur mon site free ce code marche !?!?!?
Encore merci pour ce coup de main !
Avion f16, tu mérites bien ton pseudo, voire plus encore ! Merci, tu m'as enlevé une grosse épine du pied. Quel soulagement ! Par contre, je ne comprends pas alors pourquoi, sur mon site free ce code marche !?!?!?
Encore merci pour ce coup de main !
Sans doute parce que l'option PHP register_globals est activée.
Cette fonction applique la fonction extract() sur les variablesEGPCS (Environment, GET, POST, Cookie, Server). Cette option est obsolète depuis PHP 5.3.0. Grâce (enfin, "à cause" car c'est mal) à cette fonction, $_GET['limite'] était donc écrit dans $limite sans que tu le demandes.
Cette fonction applique la fonction extract() sur les variablesEGPCS (Environment, GET, POST, Cookie, Server). Cette option est obsolète depuis PHP 5.3.0. Grâce (enfin, "à cause" car c'est mal) à cette fonction, $_GET['limite'] était donc écrit dans $limite sans que tu le demandes.
Dis-moi Avion f-16, je vais encore t'embéter un peu :
j'ai un code qui ressemble à ça :
Comment faire pour ordonner les résultats d'une même colonne ? Je m'explique :
A partir d'un champs "annee" posté par un formulaire de recherche, j'aimerais que le résultat de la requête soit ordonné de la manière suivante :
_ les films de l'année $annee;
_ les films dont l'année commence comme $annee
_ le reste des autres films (order by $annee DESC)
Je sais que je suis hors sujet avec cette question mais je ne trouve aucun forum qui propose un tri différent mais sur la même colonne.
Merci par avance de ton aide !
j'ai un code qui ressemble à ça :
$sql="select * from film where titre like \"%$tab[0]%\" ";
for($i=1 ; $i<$nb; $i++)
{
$sql.="UNION select * from film where titre like \"%$tab[$i]%\" "; // on boucle pour integrer tous les mots dans la requête
}
Comment faire pour ordonner les résultats d'une même colonne ? Je m'explique :
A partir d'un champs "annee" posté par un formulaire de recherche, j'aimerais que le résultat de la requête soit ordonné de la manière suivante :
_ les films de l'année $annee;
_ les films dont l'année commence comme $annee
$debannee = substr($annee, 0, 2);
_ le reste des autres films (order by $annee DESC)
Je sais que je suis hors sujet avec cette question mais je ne trouve aucun forum qui propose un tri différent mais sur la même colonne.
Merci par avance de ton aide !
Tu peux le faire simplement avec 3 requêtes :
Voilà un exemple :
https://gist.github.com/anonymous/decc935b3eaf9adc0a2f
Voilà un exemple :
https://gist.github.com/anonymous/decc935b3eaf9adc0a2f
Mon soucis est que, comme tu peux le voir, j'ai déjà un
where titre like \"%$tab[0]%\"dans ma requête et en plus j'ai une boucle qui intègre l'ensemble des mots de la recherche placés dans un tableau $tab.
Le but étant de faire mon propre moteur de recherche avec un formulaire à 3 champs : $titre (avec plusieurs mots à l'intérieur), $genrefilm (avec menu déroulant) et $annee. Donc trois critères de recherche avec un tri sur la colonne annee.
Comment tu présenterais ça toi ?
Comment tu présenterais ça toi ?