Vous n'êtes pas identifié.

Annonce

#1 Affichage page par pages et PHP du 26-02-2010 19:14:38

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Affichage page par pages et PHP

Bonjour, mes débuts en PHP sont plus que laborieux et la je cale. Je souhaite réaliser l'affichage de mes listes d'objets a raison de 7 par page, ce script ne marche pas; lorsque je choisi d'afficher une page précise ça marche mais "précédente " et "suivante" ne fonctionnent pas du tout, ma variable $page ce perds. En fait je suis incapable de récuperer quelque chose d'exploitable de mes submit "précédante" et" suivante".

Code:

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("laboutiquedubroc");
if (isset($page))     // Si la variable existe
{
    //Bha c'est bien
}
else    // La variable n'existe pas encore
{
    $page=1;    // On envoi la premiere page OK
}
if (isset($_POST['pagec']))    // Si la variable page choisie existe
{
    // On crée une variable $page avec $post entré NB Ce choix ne sert que pour les tests
    $page = $_POST['pagec'];    //OK
}
elseif (isset ($_POST['submit'])) {    //Sinon et si Submit existe
if ($_POST['submit'] == 'suivante')
{
    $page=$page+1;    //C'est dans cette partie que ça merde, enfin je crois
}
elseif  ($_POST['submit'] == 'précédante')
{
    $page=$page-1;
}
}
    //on compte le nombre de pages soit 7 objets par page
    $retour = mysql_query('SELECT COUNT(*) AS refob FROM objets');
    $donnees = mysql_fetch_array($retour);
    $ref= stripslashes($donnees['refob']);
    $ref= $ref/7;
    $ref1 = (int) $ref;
    $ref2=$ref-$ref1;
    if ($ref2!=0)
    {
    $ref1=$ref1+1;
    }   //OK
?>
</form>
<form action="pageannonces2.php" method="post">
<p>
<?php
if ($page<$ref1)     //Y a t-il une page suivante?
{
?>
<input type="submit" name="submit" value="suivante" />
<?php  //OK
}
if ($page>1)     //Et/ou une précédante?
{
?>
<input type="submit" name="submit" value="précédante" />
<?php   //OK
}
?>
<input type="int" name="pagec" /> <input type="submit" value="Valider" />
</p>
</form>
<?php    //OK
?>Nombre de pages;<?php echo $ref1;?>    Page actuelle;<?php echo $page;?><br/><?php   //Affichage provisoir de controle
$debut=$page*7-7;    //Sélection des limites puis affichage 7 resultats par page
$reponse = mysql_query("SELECT * FROM objets ORDER BY refob ASC LIMIT $debut, 7");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<div class="objets1">
            <h1><?php echo $donnees['titreob']; ?></h1>
            <p>
                <?php
    $contenu = nl2br(stripslashes($donnees['descriob']));
    echo $contenu;
    ?>
            <br/><br/>
            <a href="description2.html"><img src="images/chat2.jpg" width="200px" height="109px" alt="photo de famille" title="Cliquer pour plus de détails" /></a>
            </p>
</div>
<?php
}
?>

Je ne sais pas non plus comment coller du code en couleur, désolé

Les OK indiquent les parties a priori bonne , en tout cas qui affichent ce que je veux et ont l'air de fonctionner comme je le désire.

Dernière modification par Thierry (26-02-2010 19:19:47)


Hors ligne

 

26-02-2010 19:14:38

Mister $$$
Créer un site


#2 Re Affichage page par pages et PHP du 27-02-2010 12:34:59

mic54800
Super Modérateur ^^
Lieu: Brainville (54)
Date d'inscription: 25-08-2007
Messages: 819
Site web

Re: Affichage page par pages et PHP

Bonjour thierry !
Ce que vous souhaiter réaliser est un script de pagination, je connais ceci car j'en ai déjà réalisé plusieurs dons un il y a une semaine pour afficher X articles par page.
Je me propose de vous aider mais pour cela, il me faudrait voir la structure de votre base de donnée (un simple screenshoot est nécessaire) afin de voir comment est-ce qu'on pourrait procéder !

Hors ligne

 

#3 Re Affichage page par pages et PHP du 27-02-2010 13:30:20

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

Bon dimanche.

alors, screenshoot, je sais pas faire. Mais voici les infos:

id int   (11)  Non  Aucun auto_increment
refob int (11) Oui NULL
titreob text latin1_swedish_ci Oui NULL
descriob text latin1_swedish_ci Oui NULL
qteob int(11) Oui NULL
prixob float Oui  NULL
fdpob float Oui NULL
dispob int(11) Oui NULL

donc, ID, Reference, Titre, Description, Quantité disponible, Prix, Frais de port, et Etat (Réservé, vendu en stock etc)

Il y aura une seconde table avec une jointure sur la reference pour les photos, pour l'instant je n'en suis pas la.

Bien sur cette premiere table n'est pas forcement définitive, il y a probablement des choses auquels je n'ai pas encore pensé.
Le site en construction est: Laboutiquedubroc.fr
La page "livre" montre le résultat que je souhaite obtenir.
Merci pour toute aide sachant (Je me répéte) que mon objectif est d'apprendre et de comprendre


Hors ligne

 

#4 Re Affichage page par pages et PHP du 27-02-2010 13:44:11

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

Salut,

Je te propose une approche différente et fonctionnelle puisque déjà utilisé smile .

Code:

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("laboutiquedubroc");

//debut de pagination
$contenuParPage=7;

//Nous récupérons le contenu de la requête dans $retour_total
$retour_total = mysql_query('SELECT COUNT(*) AS refob FROM objets');
//On range retour sous la forme d'un tableau.
$donnees_total=mysql_fetch_assoc($retour_total);
//On récupère le total pour le placer dans la variable $total.
$total=$donnees_total['total']; 

//On compte le nombre de pages.
$nombreDePages=ceil($total/$contenuParPage);
// Si la variable $_GET['page'] existe...
if(isset($_GET['page'])) 
{
    $pageActuelle=intval($_GET['page']);
// Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...    
    if($pageActuelle>$nombreDePages) 
    {
        $pageActuelle=$nombreDePages;
    }
}
else // Sinon
{
    $pageActuelle=1; // La page actuelle est la n°1    
}
// On calcul la première entrée à lire
$premiereEntree=($pageActuelle-1)*$contenuParPage; 

if($total == 0){
    echo '<p>Il n\'y a rien</p>';
}
else
{

    // La requête sql 
    $reponse=mysql_query('SELECT * FROM objets ORDER BY refob ASC LIMIT '.$premiereEntree.', '.$contenuParPage.'');
    //fin de la 1ere partie de la pagination

////////////////Ici la requête pour afficher les résultat/////////////////////////////////////////////

 while ($donnees = mysql_fetch_assoc($reponse) )
{
echo '<div class="objets1">
      <h1>'.$donnees['titreob'].'</h1>
      <p>
     '.nl2br(stripslashes($donnees['descriob'])).'
     <br/><br/>
     <a href="description2.html"><img src="images/chat2.jpg" width="200px" height="109px" alt="photo de famille" title="Cliquer pour plus de détails" /></a>
      </p>
     </div>';
}

    //pagination 2ieme partie
    echo '<div align="center">'; //Pour l'affichage, on centre la liste des pages
$suivant=$pageActuelle+1;
$precedent=$pageActuelle-1;
if($precedent>=1){
echo '<a href="pageannonces2.php?page='.$precedent.'">Précédent</a>';
}
if($suivant<=$nombreDePages){
echo '<a href="pageannonces2.php?page='.$suivant.'">Suivant</a>';
}

    echo '</div>';
    //fin pagination 2ieme partie
    mysql_close();

}
?>

Hors ligne

 

#5 Re Affichage page par pages et PHP du 27-02-2010 16:06:12

mic54800
Super Modérateur ^^
Lieu: Brainville (54)
Date d'inscription: 25-08-2007
Messages: 819
Site web

Re: Affichage page par pages et PHP

Voici la solution que je vous propose, en étant parti de votre code de base :

Code:

<!--
Aide : Pagination - Forum créer un site
Forum créer un site : http://forum.creer-un-site.fr/creer-un-site-371-affichage-page-pages-php
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pagination - Forum créer un site </title>
</head>
<body>

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("teste");

// Le nom de votre table SQL :
    $nomDeLaTable = 'aide1';

// Le nombre d'articles à afficher par page :
    $nombreArticlesParPage = 2;

#

// On compte le nombre de pages
list($ref) = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS `refob` FROM `".$nomDeLaTable."`"));
#
    $ref  = $ref/$nombreArticlesParPage;
    $ref1 = (int) $ref;
    $ref2 = $ref-$ref1;
#

// Création de la variable $page

// On cherche si la variable pagec existe et si elle est bien un nombre
if((isset($_POST['pagec'])) && ($_POST['pagec'] != '') && (is_numeric($_POST['pagec'])) && ($_POST['pagec'] < $ref1+1))
{
    // Si tel est le cas, on remplace la variable $page par la valeur de la page choisie
    $page = $_POST['pagec'];
}
elseif(isset($_POST['submit']) && ($_POST['submit'] == 'Suivante'))
{
    $page = $_POST['avant-validation']+1;
}
elseif(isset($_POST['submit']) && ($_POST['submit'] == 'Précédente'))
{
    $page = $_POST['avant-validation']-1;
}
else
{
    $page = 1;
}

/**************************************************************************************/
/**                        A SUPPRIMER AVANT LA MISE EN LIGNE                        **/
    echo '<pre style="padding:5px; background:#CCCCCC; border:1px solid #AAAAAA;">';

        echo 'Variable $ref  : '.$ref.'<br />';
        echo 'Variable $ref1 : '.$ref1.'<br />';
        echo 'Variable $ref2 : '.$ref2.'<br />';

    echo '</pre>';
/**************************************************************************************/

if($ref2 != 0)
{
    $ref1 = $ref1+1;
}
?>
<!-- Champ permettant d'accéder directement à la page voulu -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>
    <input type="text" name="pagec" value="" />
    <input type="submit" value="Valider" />
</p>
</form>

<!-- Affichage des boutons "Précédente" et "Suivante" -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>
<?php
// On cherche si il existe une page précédente
if($page <= 1)
    $disabled = ' disabled="disabled"';
else
    $disabled = '';
?>
    <input type="submit" name="submit" value="Précédente"<?php echo $disabled; ?> />
<?php
// On cherche si il existe une page suivante
if($page >= $ref1)
    $disabled = ' disabled="disabled"';
else
    $disabled = '';
?>
    <input type="submit" name="submit" value="Suivante"<?php echo $disabled; ?> />
    <input type="hidden" name="avant-validation" value="<?php echo $page; ?>" />
</p>
</form>

<?php
// Sélection des limites puis affichage de  " $nombreArticlesParPage "  résultats par page
$debut = $page*$nombreArticlesParPage-$nombreArticlesParPage;

/****************************************************************************************************/
/**                               A SUPPRIMER AVANT LA MISE EN LIGNE                               **/
    echo '<pre style="padding:5px; background:#CCCCCC; border:1px solid #AAAAAA;">';

        echo 'Variable $page  : '.$page.'  <font color="#666666">// Page actuelle</font><br />';
        echo 'Variable $debut : '.$debut.'  <font color="#666666">// </font><br />';
        echo 'Variable $ref1  : '.$ref1.'  <font color="#666666">// Nombre de pages</font><br />';
        echo '<u>Nombre d\'articles par page : '.$nombreArticlesParPage.'</u>';

    echo '</pre>';
/****************************************************************************************************/

$reponse = mysql_query("SELECT * FROM `".$nomDeLaTable."`
                        ORDER BY `refob` ASC
                        LIMIT ".$debut.", ".$nombreArticlesParPage);
while($donnees = mysql_fetch_array($reponse))
{
?>
<div class="objets1">

    <h1><?php echo stripslashes($donnees['titreob']); ?></h1>

    <p>
<?php
    $contenu = nl2br(stripslashes($donnees['descriob']));
    echo $contenu;
?>
    <br />
    <br />
    <a href="./description2.html"><img src="images/chat2.jpg" width="200px" height="109px" alt="photo de famille" title="Cliquer pour plus de détails" /></a>
    </p>

</div>
<?php
}
?>

</body>
</html>

Bien-sur, n'oubliez pas de modifier les premières variables afin que le script marche sous vos configurations (nom de votre table SQL, nom de votre base de donnée, nombre d'articles par page)
Vous pourrez, une fois que vous aurez vérifié que le code marche bien, supprimer les deux balises <pre> et leur contenu (elles sont assez voyantes dans le code ^^)

Merci de nous tenir au courant de ce qu'il en advient !

Hors ligne

 

#6 Re Affichage page par pages et PHP du 27-02-2010 17:39:18

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

c00lman,
j'ai ce message d'erreur;

Notice: Undefined index: total in D:/ on line 23

Il n'y a rien

Pour l'instant je cherche encor la solution (La ligne en question; $total=$donnees_total['total'];)
effectivement je ne comprends pas d'ou sort ce total, il faut dire que le "_" dans les variables je ne connais pas encore non plus.

mic54800

Ca marche parfaitement et merci d'avoir repris mon cheminement;c'est bon pour apprendre

Alors pour tout les deux, merci et c'est clair cela reponds parfaitement a ma demande.
Par contre c'est franchement décourageant parceque dans les deux cas il y a enormement de choses que je ne comprends pas.
Comme je n'ais pas grand chose a faire cette semaine je vais rester dessus et voir si j'arrive a faire un mix des deux qui fonctionne.


Hors ligne

 

#7 Re Affichage page par pages et PHP du 27-02-2010 18:09:47

mic54800
Super Modérateur ^^
Lieu: Brainville (54)
Date d'inscription: 25-08-2007
Messages: 819
Site web

Re: Affichage page par pages et PHP

Content que ça marche parfaitement !
Si vous avez une ou plusieurs questions, posez la / les !
Il est vrai que je n'ai pas commenté toutes les lignes mais c'est parce qu'en fait, ça parait plutôt logique à mes yeux.
Donc n'hésitez pas à poster toutes les lignes que vous ne comprenez pas et nous vous éclairerons pour que vous puissiez acquérir de nouvelles connaissances !
Donc n'hésitez pas !

Hors ligne

 

#8 Re Affichage page par pages et PHP du 27-02-2010 20:00:53

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

C'est pas juste icon_mrgreen ...

Pour info, la variable $total=$donnees_total['total']; correspond au nombre d'enregistrement contenu dans votre table.
Le (_) est un séparateur. Il permet juste de donner un nom plus sympa à la variable wink.
Il est plus compréhensible de lire une variable $ma_variable_qui_dit_quoi_faire que $mavariablequiditquoifaire .

Comme vous avez envie de comprendre, je vais refaire juste pour vous et de façon plus explicite mon code. La différence avec celui de mic54800 (yo mic wink, sympa le code) est qu'il permet entre autre une pagination du style :
Page : 1-2-3-4-5-6 ou Suivant - Précédent sans l'utilisation de champs de formulaire.

Hors ligne

 

#9 Re Affichage page par pages et PHP du 27-02-2010 22:20:43

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

Cette exemple par d'une base nommé "teste" contenant les champs que vous citez plus haut. Il faut donc changer le nom de la base dans les 2 requêtes et compléter la dernière selon vos besoins.

Code:

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("teste");

//Nombre d'élément par page
$messagesParPage=7;
//Nous récupérons le contenu de la requête dans $retour_total
$retour_total = mysql_query("SELECT COUNT(*) AS total FROM teste");
//On range $retour_total sous la forme d'un tableau.
$donnees_total=mysql_fetch_assoc($retour_total); 
//On récupère le total pour le placer dans la variable $total. $total correspond au nombre total de commentaires
$total=$donnees_total['total']; 
echo 'Nombre de message : '.$total.'<br/>';
//Nous allons maintenant compter le nombre de pages. On fait donc une simple division . 
//ceil —>Arrondit le chiffre au nombre supérieur si il n'est pas entier
$nombreDePages=ceil($total/$messagesParPage);
echo 'Nombre de page : '.$nombreDePages.'<br/>';
// Si la variable $_GET['page'] existe...
if(isset($_GET['page'])) 
{
//$pageActuelle correspond au numéro de la page ou l'on se trouve. 
//intval —  Retourne la valeur numérique entière équivalente d'une variable 
     $pageActuelle=intval($_GET['page']);
     echo 'On se trouve sur la page numéro : '.$pageActuelle.'<br/>';
// Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...     
     if($pageActuelle>$nombreDePages) 
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}
// On calcul la première entrée à lire
$premiereEntree=($pageActuelle-1)*$messagesParPage; 
echo 'Première entrée : '.$premiereEntree.'<br/>';
//Si il n'y a rien
 if($total == 0){
 echo '<p><strong>Aucun article pour le moment :(!</strong></p>';
 }
 else
 {
// La requête sql pour récupérer les articles de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM teste ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
//fin de la 1ere partie de la pagination
while($articles=mysql_fetch_assoc($retour_messages))
 {
echo''.$articles["titreob"].'<br/>';
echo ''.$articles["id"].'<br/>'.$articles["descriob"].'<br/>';
 }
//pagination 2ieme partie
//Pour l'affichage, on centre la liste des pages 
echo '<div align="center">Page : '; 
//Cette partie affiche uniquement Suivant et Précédent
$suivant=$pageActuelle+1;
$precedent=$pageActuelle-1;

if($precedent>=1){
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$precedent.'">Précédent - </a>';
}
if($suivant<=$nombreDePages){
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$suivant.'">Suivant</a>';
}
echo '<br/>';
//Cette partie affiche une pagination complète de toutes les pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }    
     else //Sinon...
     {
          echo ' <a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> ';
     }
}
echo '</div>';
//fin pagination 2ieme partie
 mysql_close();

 }
?>

Pratiquement chaque ligne est commenté pour en comprendre le fonctionnement. Certaines requêtes contiennent un "echo" (qu'il faudra supprimer) permettant de visualiser le résultat de celle-ci et donc de comprendre un peut mieux à quoi elle sert.

Le code contient 2 possibilités de navigation ... à vous de choisir wink .

Hors ligne

 

#10 Re Affichage page par pages et PHP du 27-02-2010 22:31:56

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

C'est pas juste  ...

J'ais bien dis "Alors pour tout les deux, merci et c'est clair cela reponds parfaitement a ma demande."

En fait pour moi ils sont complémentaires, disons l'un à mon niveau et l'autre juste au dessus. Le présent et le futur en somme (ça fait pas trop cirage de pompes?)

Apres cela n'explique pas pourquoi "Undefined index: total" mais je trouverais, dés que j'aurais fini de martyriser le code de mic54800 que je crois avoir bien assimilé.

Le séparateur j'avais compris mais c'est vrai que ces variables avec des noms a ralonge me perturbent plus qu'autre chose. Je comprenais bien A ou B mais ça va finir par rentrer.

A bientôt


Hors ligne

 

#11 Re Affichage page par pages et PHP du 27-02-2010 22:41:12

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

content (130) En faite quand je dis : "c'est pas juste ..." , c'est parce que mon code ne fonctionne pas du 1er coup pour vous ^^ alors que chez moi ça roule nickel.

Perso, je préfère nettement $description_objet que $descriob et pour ceux ou celles qui "aident", c'est plus lisible smile .

Hors ligne

 

#12 Re Affichage page par pages et PHP du 28-02-2010 03:54:38

mic54800
Super Modérateur ^^
Lieu: Brainville (54)
Date d'inscription: 25-08-2007
Messages: 819
Site web

Re: Affichage page par pages et PHP

Merci c00lman, je sais que je fais un travail formidable, que je suis un dieu pour toi, mais n'en fais pas trop non plus lol (H.U.M.O.U.R)

En effet, j'aurais dû ajouter la pagination en faisant apparaitre les pages  [1] - [2] - [3] - > - >>  tout comme je l'ai fait sur mon dernier script de pagination que tu ne devrais pas tarder à voir en ligne smile

Ensuite, je voudrais donner un conseil à Thierry, évitez le genre de variable $ref, $ref1, $ref2 ou autres variables dont le nom ne veut rien dire.
Si vous devez modifier à l'avenir votre script, vous n'arriverez plus à comprendre l'utilité de ces variables (et je sais ce que je dis par là, ça sent le vécu ^^) et pensez aussi au fait que si vous devez demander de l'aide dans le but de faire marcher un script, le webmaster d'en face ne comprendra pas du premier coup d'oeuil l'utilité de ces variables (comme ça a été le cas avec moi ^^)

A très bientôt !

Hors ligne

 

#13 Re Affichage page par pages et PHP du 01-03-2010 10:13:32

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

mic54800 a écrit:

Merci c00lman, je sais que je fais un travail formidable, que je suis un dieu pour toi, mais n'en fais pas trop non plus lol (H.U.M.O.U.R)

Rhoooo l'autre icon_mrgreen .

Histoire que Thierry ou autre visiteur(s) visualise le rendu du code donné plus haut, voici une page qui utilise la pagination : Pagination page par page .

Ceci va me donner l'occasion de rédiger un petit tutoriel big_smile ...

Hors ligne

 

#14 Re Affichage page par pages et PHP du 01-03-2010 17:35:04

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

Bonjour,
Alors voila ce que j'ais fais , qui à l'air de fonctionner parfaitement, et qui correspond exactement à ce que je voulais;

Code:

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("laboutiquedubroc");
    $nomDeLaTable = 'objets';
    $nombreArticlesParPage = 7;
// On compte le nombre de pages
list($NombreArticles) = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS `refob` FROM `".$nomDeLaTable."`"));
    $NombreDePages  = $NombreArticles/$nombreArticlesParPage;
    $NombreDePages=ceil($NombreDePages);
// Création de la variable $page
if(isset($_POST['submit']) && ($_POST['submit'] == 'Suivante'))
{
    $page = $_POST['avant-validation']+1;
}
elseif(isset($_POST['submit']) && ($_POST['submit'] == 'Précédente'))
{
    $page = $_POST['avant-validation']-1;
}
else
{
    $page = 1;
}
?>
<!-- Affichage des boutons "Précédente" et "Suivante" -->
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>
<?php
// On cherche si il existe une page précédente
if($page <= 1)
    $InputType = 'hidden';
else
    $InputType = 'submit';
?>
    <input type="<?php echo $InputType; ?>" name="submit" value="Précédente" />
<?php
// On cherche si il existe une page suivante
if($page >= $NombreDePages)
{
    $InputType = 'hidden';
}
else
{
    $InputType = 'submit';    
    ?>
    <input type="<?php echo $InputType; ?>" name="submit" value="Suivante" />
    <?php
}
    ?>
    <input type="hidden" name="avant-validation" value="<?php echo $page; ?>" />
</p>
</form>
<?php
// Sélection des limites puis affichage de  " $nombreArticlesParPage "  résultats par page
$debut = $page*$nombreArticlesParPage-$nombreArticlesParPage;
$reponse = mysql_query("SELECT * FROM `".$nomDeLaTable."` 
ORDER BY `refob` ASC
 LIMIT ".$debut.", ".$nombreArticlesParPage);
while($donnees = mysql_fetch_array($reponse))
{
?>
<div class="objets1">
    <h1><?php echo stripslashes($donnees['titreob']); ?></h1>
    <p>
<?php
    $contenu = nl2br(stripslashes($donnees['descriob']));
    echo $contenu;
?>
    <br />
    <br />
    <a href="./page2.html"><img src="image.jpg" alt="photo" title="Cliquer pour plus de détails" /></a>
    </p>
</div>
<?php
}
?>

Dernière modification par Thierry (01-03-2010 17:37:42)


Hors ligne

 

#15 Re Affichage page par pages et PHP du 01-03-2010 17:48:55

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

Salut Thierry,

Content pour toi que ça fonctionne :).
Aurais tu une page que l'on puisse voir le résultat?

Hors ligne

 

#16 Re Affichage page par pages et PHP du 01-03-2010 18:01:44

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

Merci de me dire si une erreur grossiére apparait.

Je ne voulais pas numéroter mes pages, si mon projet va au bouts il pourrait y avoir plusieurs milliers de livres et donc plusieurs centaines ou milliers de pages, le systeme de navigation comme le bon coin par exemple me déplais fortement, et même en l'améliorant je trouve le résultat plutot moche.Si je dois avoir un nombre important de page le champs de recherche permetant d'afficher une page précise me parait préferable. Dans le cas contraire (C A D peu d'objets) la liste des pages ferait ressortir cette pauvreté.
Par contre il manque un champs 'Categorie" dans ma table.

Par raport au script de Mic54800, jais remplacé ceci;

Code:

// On cherche si il existe une page précédente
if($page <= 1)
    $disabled = ' disabled="disabled"';
else
    $disabled = '';
?>
    <input type="submit" name="submit" value="Précédente"<?php echo $disabled; ?> />
<?php

par cela;

Code:

// On cherche si il existe une page précédente
if($page <= 1)
    $InputType = 'hidden';
else
    $InputType = 'submit';
?>
    <input type="<?php echo $InputType; ?>" name="submit" value="Précédente" />
<?php

Le résultat me plais d'avantage mais je dois reconnaitre que je n'avais pas encore intégré que l'on pouvait absolument tout mettre dans une variable et tout faire avec.

En cherchant des infos sur

Code:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

je suis tombé sur un article qui conséille ceci;

Code:

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

Je l'ais rajouté sans vraiement etre sur que cela soit utile.

Lorsque vous utilisez

Code:

if($page >= $ref1)

c'est par habitude pour bien bétonner la condition ou bien par nécéssité?

Enfin je suis absolument d'accord avec vous sur l'utilisation de noms clairs pour les variables, manque d'habitude seulement (Je pense avoir modifier cela de maniére correcte)

J'aurais pas mal d'autre questions et confirmations a demander mais bon pas tout le même jour big_smile.
Encore merci et maintenant je passe à la page2 ! (Déscription de l'article)

Dernière modification par Thierry (01-03-2010 18:09:17)


Hors ligne

 

#17 Re Affichage page par pages et PHP du 01-03-2010 18:05:53

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

Pas de page pour l'instant, ça fonctionne en local uniquement.
En fait je suis en train de faire mon interface administrateur, toujours en local(J'ais déjà jeté un oeil sur votre tuto, je vais trés certainement piquer des choses dedans)
Pour l'instant je n'ais pas abordé le coté sécurité et protection, donc j'attend avant de mettre des choses en ligne.

Dernière modification par Thierry (01-03-2010 18:06:19)


Hors ligne

 

#18 Re Affichage page par pages et PHP du 01-03-2010 18:49:11

mic54800
Super Modérateur ^^
Lieu: Brainville (54)
Date d'inscription: 25-08-2007
Messages: 819
Site web

Re: Affichage page par pages et PHP

L'utilisation de la condition ( 1 ) permet de vérifier s'il existe une page après la page actuellement visualisée, si tel n'est pas le cas, on rend inclicable le bouton "suivant" (ce qui parait logique)

Code:

( 1 )
if($page >= $ref1)

D'un point de vue personnel, je préfère griser les boutons précédent et suivant plutôt que de ne les cacher.
Mais si vous voulez le cacher, je vous conseil plutôt de ne pas l'afficher en procédant comme tel :

Code:

// On cherche si il existe une page précédente
if($page > 1)
?>
    <input type="submit" name="submit" value="Précédente" />
<?php

Ensuite, par rapport au numérotage des pages, encore personnellement, je peux vous conseiller d'afficher les deux liens précédents et suivants (c'est ce que j'ai fait sur un site de vente).
Ca pourrait te donner des idées c00lman ^^

Hors ligne

 

#19 Re Affichage page par pages et PHP du 01-03-2010 19:06:04

Thierry
c00lnaute nouveau
Date d'inscription: 26-11-2009
Messages: 14

Re: Affichage page par pages et PHP

Oui j'avais bien compris, mais egal aurait suffit non?

Code:

// On cherche si il existe une page précédente
if($page > 1)
?>
    <input type="submit" name="submit" value="Précédente" />
<?php

bouletdujour
Bin oui c'est sur, en plus je l'avais fais dans mon premier code, mais j'ai tellement aimé l'idée de passer de hidden a submit avec une variable que je n'y ais pas fait attention.
Difficle d'avoir du recul lorsque l'on ne maitrise pas tout.


Hors ligne

 

#20 Re Affichage page par pages et PHP du 01-03-2010 19:07:01

c00lman
Administrateur
Date d'inscription: 16-08-2007
Messages: 1558
Site web

Re: Affichage page par pages et PHP

mic54800 a écrit:

Ca pourrait te donner des idées c00lman ^^

J'ai fais mieux ^^, j'ai modifiés mon code pour qu'il affiche soit tout les numéros de page soit "Suivant-Précédent"... voir ici -> Pagination page par page, le tout adapté pour une utilisation plus facile razz et le rendu est là http://creer.ton.site.free.fr/pagination.php big_smile

Hors ligne

 

#21 Re Affichage page par pages et PHP du 01-03-2010 19:13:49

mic54800
Super Modérateur ^^
Lieu: Brainville (54)
Date d'inscription: 25-08-2007
Messages: 819
Site web

Re: Affichage page par pages et PHP

Oui mais imagines qu'il y ait 300 pages ??!! lol
Sinon le mieux serait de faire une liste (<select>) contenant les numéros de page !
Chacun son truc mais pour le site de vente, ça suffit amplement, voici ce que ça donne :
« ‹ [2] [3] [4] [5] [6] [7] [8] › »

Hors ligne

 

#22 Re Affichage page par pages et PHP du 08-10-2010 13:02:41

noanis
c00lnaute nouveau
Date d'inscription: 08-10-2010
Messages: 1

Re: Affichage page par pages et PHP

Bonjour à tous,
J'ai essayer d'adapter le script de mic54800 à ma page mais l'ouverture d'autres pages est vide.
Je vous envoie mon code




<?php

mysql_connect("127.0.0.1","root","");
     mysql_select_db("hello");
     
if(isset($_POST['sel1'])&& !empty($_POST['sel1'])&& isset($_POST['sel2'])&& !empty($_POST['sel2']) )      {     

$nomDeLaTable = 'annonce';
$nombreArticlesParPage = 3;

list($ref) = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS `nom` FROM `".$nomDeLaTable."`WHERE type_annonce='association'"));



#
    $ref  = $ref/$nombreArticlesParPage;
    $ref1 = (int) $ref;
    $ref2 = $ref-$ref1;
#

// On cherche si la variable pagec existe et si elle est bien un nombre
if((isset($_POST['pagec'])) && ($_POST['pagec'] != '') && (is_numeric($_POST['pagec'])) && ($_POST['pagec'] < $ref1+1))
{
    // Si tel est le cas, on remplace la variable $page par la valeur de la page choisie
    $page = $_POST['pagec'];
}
elseif(isset($_POST['submit']) && ($_POST['submit'] == 'Suivante'))
{
    $page = $_POST['avant-validation']+1;
}
elseif(isset($_POST['submit']) && ($_POST['submit'] == 'Précédente'))
{
    $page = $_POST['avant-validation']-1;
}
else
{
    $page = 1;
}

/**************************************************************************************/
/**                        A SUPPRIMER AVANT LA MISE EN LIGNE                        **/
    echo '<pre style="padding:5px; background:#CCCCCC; border:1px solid #AAAAAA;">';

        echo 'Variable $ref  : '.$ref.'<br />';
        echo 'Variable $ref1 : '.$ref1.'<br />';
        echo 'Variable $ref2 : '.$ref2.'<br />';

    echo '</pre>';
/**************************************************************************************/

if($ref2 != 0)
{
    $ref1 = $ref1+1;
   
}



?>
<!-- Champ permettant d'accéder directement à la page voulu -->
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>
    <input type="text" name="pagec" value="" />
    <input type="submit" value="Valider" />
</p>
</form>

<!-- Affichage des boutons "Précédente" et "Suivante" -->
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>
<?php
// On cherche si il existe une page précédente
if($page <= 1)
    $InputType = 'hidden';
else
    $InputType = 'submit';
?>
    <input type="<?php echo $InputType; ?>" name="submit" value="Précédente" />
<?php
// On cherche si il existe une page suivante
if($page >= $ref1)
    $disabled = ' disabled="disabled"';
else
    $disabled = '';
?>
    <input type="submit" name="submit" value="Suivante"<?php echo $disabled; ?> />
    <input type="hidden" name="avant-validation" value="<?php echo $page; ?>" />
</p>
</form>

<?php
/*
if(isset($_POST['sel1'])&& !empty($_POST['sel1'])&& isset($_POST['sel2'])&& !empty($_POST['sel2']) && isset($_POST['myCombo'])&& empty($_POST['myCombo'])&& isset($_POST['categorie_a'])&& empty($_POST['categorie_a'])&& isset($_POST['Nom_association'])&& empty($_POST['Nom_association'])&& isset($_POST['trie'])&& !empty($_POST['trie']))      {        */

// Sélection des limites puis affichage de  " $nombreArticlesParPage "  résultats par page
$debut = $page*$nombreArticlesParPage-$nombreArticlesParPage;

/****************************************************************************************************/
/**                               A SUPPRIMER AVANT LA MISE EN LIGNE                               **/
    echo '<pre style="padding:5px; background:#CCCCCC; border:1px solid #AAAAAA;">'; 

        echo 'Variable $page  : '.$page.'  <font color="#666666">// Page actuelle</font><br />';
        echo 'Variable $debut : '.$debut.'  <font color="#666666">// </font><br />';
        echo 'Variable $ref1  : '.$ref1.'  <font color="#666666">// Nombre de pages</font><br />';
        echo '<u>Nombre d\'articles par page : '.$nombreArticlesParPage.'</u>';

    echo '</pre>';
/****************************************************************************************************/




     
$result = mysql_query('SELECT * FROM annonce WHERE type_annonce="association" ORDER BY '.$_POST['trie'].' ASC LIMIT '.$debut.', '.$nombreArticlesParPage);

$num_rows = mysql_num_rows ( $result );
?>

<div align=center style="font-family:'Arial',serif; color:#DC143C"><?php echo "  $num_rows réponses trouvées " ;?></div>

<?php
       
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "Type annonce :{$row['type_annonce']} <br>" .
       
         "Nom : {$row['nom']} <br>" .
         "Catégorie : {$row['categorie']} <br><br>";
}
  }

?>

</body>

Merci d'avance


Hors ligne

 

Propulsé par PunBB
© Copyright 2007
Forum créer un site

Partenaires de « créer un site internet »

Flux Rss Remonter Remonter Fermer