Vous n'êtes pas identifié(e).
Pages :: 1
J'ai trouvé ce site comme tutorial.
http://www.lephpfacile.com/howto/6-comm … age-en-php
Me semble qu'il doit y avoir plus facile à faire.
A voir le tuto, ça semble très complexe.
Si je dois faire afficher 30 item par page, est-ce qu'il faut que je créé des pages .php pour afficher des 30 autres item?
C'est que je ferais une requete sql pour faire afficher 30 item à la fois.
Ou bien, c'est un jeu de variables qui ferais que les pages se créer comme plus virtuellement?
Salutations
Hors ligne
Essayes ce tutorial : http://phpdebutant.org/article84.php
Il ne faut pas 30pages, c'est la preuve que tu n'as pas compris le tutorial. Et les pages ne se créent pas non plus. ^^
Lis bien le tutorial ci-dessus, il y va vraiment étape par étape et pour ce que j'ai vu explique de A à Z chaque étape.
Hors ligne
Essayes ce tutorial : http://phpdebutant.org/article84.php
Il ne faut pas 30pages, c'est la preuve que tu n'as pas compris le tutorial. Et les pages ne se créent pas non plus. ^^
Lis bien le tutorial ci-dessus, il y va vraiment étape par étape et pour ce que j'ai vu explique de A à Z chaque étape.
Entre-temps, j'ai découvert ce tutorial après une recherche sur Google l'ami de tout le monde dit-on.
Je l'essais, mais je comprends à moitié. Ce sont les petits bout de code que je comprends pas l'emplacement à mettre. C'est de l'appliqué à mon code qui devrait poser problème. A ce que j'ai compris, ça marche avec $_GET.
Il n'est pas simple ce tuto je trouve.
Salutations
Hors ligne
J'ai réussi à l'appliquer directement à mon code. Et j'ai maintenant page précédente et suivante. Mais une erreur dans le tutorial sur le minuscule du "p" à limiteprecedente et l'autre aussi.
Les variables sont sensible à la case.
Saviez-vous quoi? C'est un plaisir de le dire heheheh Peut-etre corriger cela pour les autres.
Je vous avoue que ça n'a pas été facile.
Quelques devinette a été nécessaire de ce tuto.
Salutations
Hors ligne
Dommage que l'ont peut pas placer les termes "précédent" et "suivant" à côté des chiffres. J'ai essayé de le faire sans succès. J'ai mis du css dans la fonction et ça veut pas rien savoir.
J'aurais plus tendance à les enlever.
Salutations
Hors ligne
Je veux pouvoir afficher à coté des numéro de page, previous à gauche et next à droite.
Salutations
Hors ligne
Il suffit de les séparer en deux fonctions comme suit :
Hors ligne
jamais d'echo dans une function
a+
Hors ligne
Je n'ai fait que reprendre le tutorial de phpdebutant Pierrot.
De nombreux débutants n'utilisent pas de pattern car ils ne savent pas ce que c'est et font du code brut.
Pour ma part j'ai aussi commencé ainsi.
Hors ligne
bah, tu as mal commencé
c'est pourtant simple :
a la place des echo, tu concatène une variable string ;
a++
Hors ligne
Je n'insinuais pas que c'était compliqué, juste que la raison pouvait ne pas se trouver quand on débute.
Après chacun sa méthode d'enseignement mais je pense que bon nombre de débutants abandonneraient ou ne ferraient que quémander des scripts tout fait si on commençait à leur parler de MVC, d'injection de dépendances ou autre...
Hors ligne
C'est bon d'avoir des modèles de script mais lorsqu'il faut adapter le bout de code à un autre code existant, là, c'est bon que l'on connaisse plus particulièrement les commandes. C'est pour cela que je me casse la tête à apprendre. Je cherche très souvent des modèle juste pour comprendre comment est fait le script.
J'ai essayé le bout de code pour séparer les deux fonctions "precedent et suivant" et le bouton "suivant" n'a pas d'effet
la fonction :
displayNextButtons($limite,$total,$nb,$page)
$nb : variable indéfini
si je mets $nombre : pas de message mais le bouton n'a pas d'action.
C'est ok pour l'autre bouton si je mets aussi $nombre à la place de $nb.
codes de la page affichage.php :
table { margin-left:auto; margin-right:auto; }
th,td { border-width:1; border-color:rgb(102,102,255); border-style:dotted; text-align:center; white-space:no-wrap; }
th { background-color:#ffffdb; width:70px; }
p { font-size:x-small; font-family:Arial; font-stretch:narrower; font-weight:bold; line-height:0.9em; margin-bottom:3px; margin-top:3px; }
a:focus { outline:0 }
h5 { position:relative; top:13px; }
.thumbnail{
position: relative;
z-index: 0;
}
.thumbnail:hover{
background-color: transparent;
z-index: 50;
}
.thumbnail span{
position: absolute;
background-color: lightyellow;
padding: 5px;
left: -1000px;
border: 1px dashed gray;
visibility: hidden;
color: black;
text-decoration: none;
}
.thumbnail span img{
border-width: 0;
padding: 2px;
}
.thumbnail:hover span{
visibility: visible;
top: -50px;
left: 60px;
}
-->
</style>
<?php
require 'fonctions.php';
$nombre = 1; //1 parce que j'ai pas bc d'enregistrement.
if (!isset($limite)) $limite = 0;
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];
$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db('cristauxphil', $db) or die(mysql_error());
$select = mysql_query ("SELECT COUNT(*) FROM produits");
$row = mysql_fetch_row($select);
$total = $row[0];
$verifLimite = verifLimite($limite,$total,$nombre);
if(!$verifLimite) { $limite = 0; }
$req = mysql_query("SELECT * FROM produits ORDER BY noart ASC LIMIT $limite,$nombre",$db) or die(mysql_error());
if($total) {
echo '<h5 style="text-align:center">Présentement, il y\'a '.$row[0].' items disponibles en ligne.</h5>';
echo '<table>
<tr>
<th><h5>Photo</h5></th>
<th><h5>Catégorie</h5></th>
<th><h5>Numéro</h5></th>
<th><h5>Article</h5></th>
<th><h5>Taille</h5></th>
<th><h5>Stock</h5></th>
<th><h5>Prix</h5></th>
</tr>';
while($data = mysql_fetch_array($req))
{
echo '<tr>'
?>
<td><a class="thumbnail" href="#thumb"><img src="image/<?php echo $data['image']; ?>" width="20px" border="0"><span><img src="image/<?php echo $data['image']; ?>" /></span></a></td>
<?php
echo '<td><p>'. $data['nocat'] . '</p></td>';
echo '<td><p>'. $data['noart'] . '</p></td>';
echo '<td><p>' . $data['article'] . '</p></td>';
echo '<td><p>' . $data['taille'] . '</p></td>';
echo '<td><p>'. $data['stock'] . '</p></td>';
echo '<td><p style="background:#ffffab; font-size:14px;">' . $data['prix'] . '</p></td>';
echo '</tr>';
echo '<tr>';
echo '<td style="background-color:#ffffef; text-align:left; border-bottom: 3px inset #FF9900;" colspan="7"><p>Détails: ' . $data['details'] . '</p></td>';
echo '</tr>';
}
echo '</table>';
if($total > $nombre) {
displayPreviousButtons($limite,$total,$nombre,$page);
affichePages($nombre,$page,$total);
displayNextButtons($limite,$total,$nombre,$page);
}
} else { echo 'Pas d\'enregistrements dans cette table...'; }
mysql_close();
?>
Fonctions.php :
function displayPreviousButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo '<table><tr>'."\n";
if($limite != 0) {
echo '<td valign="top">'."\n";
echo '<form action="'.$page.'" method="post">'."\n";
echo '<input type="submit" value="précédents">'."\n";
echo '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n";
echo '</form>'."\n";
echo '</td>'."\n";
}
echo '</tr></table>'."\n";
}
function displayNextButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo '<table><tr>'."\n";
if($limiteSuivante < $total) {
echo '<td valign="top">'."\n";
echo '<form action="'.$page.'" method="post">'."\n";
echo '<input type="submit" value="suivants">'."\n";
echo '<input type="hidden" value="'.$limiteSuivante.'" name="limite">'."\n";
echo '</form>'."\n";
echo '</td>'."\n";
}
echo '</tr></table>'."\n";
}
function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
echo '<table><tr>'."\n";
while($numeroPages <= $nbpages) {
echo '<td class="sans"><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
}
}
echo '</tr></table>'."\n";
}
if(isset($_GET['limite']))
$limite=$_GET['limite'];
else $limite=0;
function verifLimite($limite,$total,$nombre) {
if(is_numeric($limite)) {
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
$valide = 1;
}
else {
$valide = 0;
}
}
else {
$valide = 0;
}
return $valide;
}
J'ai adapté le cour d'ici à mon script. Pour le moment, c'est juste le bouton SUIVANT qui n'a aucun effet et aussi l'emplacement à coté des chiffres.
Dernière modification par dan4 (28-03-2010 13:54:46)
Salutations
Hors ligne
Le page par page, j'ai laissé tombé la notion de "précédent et suivant", car je n'arrive vraiment pas à faire fonctionner cette fonction. Je vais peut-être y revenir.
Pour ce qui touche les Numéros de page, j'aimerais au moins pouvoir indiquer la page courante en mettant [] pour placer en évidence la page en cour. Mais, selon le script, je ne vois pas ou placer le code.
--
Merci xTG pour vos indications et aussi Pierrot.
C'est bon d'avoir des modèles de script mais lorsqu'il faut adapter le bout de code à un autre code existant, là, c'est bon que l'on connaisse plus particulièrement les commandes. C'est pour cela que je me casse la tête à apprendre. Je cherche très souvent des modèle juste pour comprendre comment est fait le script.
J'ai essayé le bout de code pour séparer les deux fonctions "precedent et suivant" et le bouton "suivant" n'a pas d'effet
la fonction :
displayNextButtons($limite,$total,$nb,$page)$nb : variable indéfini
si je mets $nombre : pas de message mais le bouton n'a pas d'action.C'est ok pour l'autre bouton si je mets aussi $nombre à la place de $nb.
codes de la page affichage.php :
<style>
<!--table { margin-left:auto; margin-right:auto; }
th,td { border-width:1; border-color:rgb(102,102,255); border-style:dotted; text-align:center; white-space:no-wrap; }
th { background-color:#ffffdb; width:70px; }
p { font-size:x-small; font-family:Arial; font-stretch:narrower; font-weight:bold; line-height:0.9em; margin-bottom:3px; margin-top:3px; }
a:focus { outline:0 }
h5 { position:relative; top:13px; }.thumbnail{
position: relative;
z-index: 0;
}.thumbnail:hover{
background-color: transparent;
z-index: 50;
}.thumbnail span{
position: absolute;
background-color: lightyellow;
padding: 5px;
left: -1000px;
border: 1px dashed gray;
visibility: hidden;
color: black;
text-decoration: none;
}.thumbnail span img{
border-width: 0;
padding: 2px;
}.thumbnail:hover span{
visibility: visible;
top: -50px;
left: 60px;
}-->
</style><?php
require 'fonctions.php';
$nombre = 1; //1 parce que j'ai pas bc d'enregistrement.
if (!isset($limite)) $limite = 0;
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db('cristauxphil', $db) or die(mysql_error());$select = mysql_query ("SELECT COUNT(*) FROM produits");
$row = mysql_fetch_row($select);$total = $row[0];
$verifLimite = verifLimite($limite,$total,$nombre);
if(!$verifLimite) { $limite = 0; }
$req = mysql_query("SELECT * FROM produits ORDER BY noart ASC LIMIT $limite,$nombre",$db) or die(mysql_error());
if($total) {
echo '<h5 style="text-align:center">Présentement, il y\'a '.$row[0].' items disponibles en ligne.</h5>';
echo '<table>
<tr>
<th><h5>Photo</h5></th>
<th><h5>Catégorie</h5></th>
<th><h5>Numéro</h5></th>
<th><h5>Article</h5></th>
<th><h5>Taille</h5></th>
<th><h5>Stock</h5></th>
<th><h5>Prix</h5></th>
</tr>';while($data = mysql_fetch_array($req))
{
echo '<tr>'?>
<td><a class="thumbnail" href="#thumb"><img src="image/<?php echo $data['image']; ?>" width="20px" border="0"><span><img src="image/<?php echo $data['image']; ?>" /></span></a></td>
<?phpecho '<td><p>'. $data['nocat'] . '</p></td>';
echo '<td><p>'. $data['noart'] . '</p></td>';
echo '<td><p>' . $data['article'] . '</p></td>';
echo '<td><p>' . $data['taille'] . '</p></td>';
echo '<td><p>'. $data['stock'] . '</p></td>';
echo '<td><p style="background:#ffffab; font-size:14px;">' . $data['prix'] . '</p></td>';
echo '</tr>';
echo '<tr>';
echo '<td style="background-color:#ffffef; text-align:left; border-bottom: 3px inset #FF9900;" colspan="7"><p>Détails: ' . $data['details'] . '</p></td>';
echo '</tr>';
}
echo '</table>';if($total > $nombre) {
displayPreviousButtons($limite,$total,$nombre,$page);
affichePages($nombre,$page,$total);
displayNextButtons($limite,$total,$nombre,$page);
}
} else { echo 'Pas d\'enregistrements dans cette table...'; }mysql_close();
?>Fonctions.php :
<style>
<!--
.sans { border-width:0; text-align:center; font-size:1.5em; }
a:focus { outline:0; }
-->
</style>
<?php
function displayPreviousButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo '<table><tr>'."\n";
if($limite != 0) {
echo '<td valign="top">'."\n";
echo '<form action="'.$page.'" method="post">'."\n";
echo '<input type="submit" value="précédents">'."\n";
echo '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n";
echo '</form>'."\n";
echo '</td>'."\n";
}
echo '</tr></table>'."\n";
}function displayNextButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo '<table><tr>'."\n";
if($limiteSuivante < $total) {
echo '<td valign="top">'."\n";
echo '<form action="'.$page.'" method="post">'."\n";
echo '<input type="submit" value="suivants">'."\n";
echo '<input type="hidden" value="'.$limiteSuivante.'" name="limite">'."\n";
echo '</form>'."\n";
echo '</td>'."\n";
}
echo '</tr></table>'."\n";
}
function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
echo '<table><tr>'."\n";
while($numeroPages <= $nbpages) {
echo '<td class="sans"><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
}
}
echo '</tr></table>'."\n";
}
if(isset($_GET['limite']))
$limite=$_GET['limite'];
else $limite=0;function verifLimite($limite,$total,$nombre) {
if(is_numeric($limite)) {if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
$valide = 1;
}
else {
$valide = 0;
}
}
else {
$valide = 0;
}
return $valide;
}J'ai adapté le cour d'ici à mon script. Pour le moment, c'est juste le bouton SUIVANT qui n'a aucun effet et aussi l'emplacement à coté des chiffres.
Salutations
Hors ligne
Salut à vous tous et toutes, bien, j'ai trouvé un super et excellent système de pagination expliqué. Je pense que ça vaut la peine d'y mettre une attention et de l'étudier.
http://seebz.net/34-pagination-2-comme- … mieux.html
Je l'adopte mais je vais aussi l'étudier..
En passant, je l'ai testé dans mon script et aucune erreur.
Salutations
Hors ligne
Pages :: 1