IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Afficher 12 images page 1 puis page 2, les 12 suivantes


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut Afficher 12 images page 1 puis page 2, les 12 suivantes
    Bonjour,
    Je travail avec php et MySQL pour afficher des dessins sur mon site via les "bdd".
    J'aimerais afficher dans un premier temps 12 résultat puis avoir un système pour passer de l'affichage de 0 à 12 puis 12 à 24 puis 24 à 36 et ainsi de suite. un peu dans le style :

    <précédent 1-2-3-4-5-6-7-8 suivant>

    Je pense bien à utiliser LIMIT mais je ne vois pas comment l'insérer pour effectuer l'action que je souhaite.

    Voici le code de ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php 
    require_once("connexiondessins.inc.php");
    $reponse = $bdd->query('SELECT * FROM dessins WHERE categorie="sps"');
    ?>
    <!DOCTYPE HTML>
    <html>
    <link href="mafavicon.png" rel="shortcut icon" title="crobara2bal" type="image/png" />
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="description" content="Tout les dessins humouristique sur le SPS en bande dessinée. Ici !" />
    <title>S.P.S / Tous les dessins concernant le sps</title>
    <link href="css1.css" rel="stylesheet" type="text/css">
    </head>
     
    <body>
    <div id="container">
    <?php include("header.inc.php"); ?>
    <?php include("menus.inc.php"); ?>
    <div id="corpssps">
    <a href="dessins.php" title="retourner aux catégories"><p class="titrevignette1">Catégories</p></a>
    <a href="sps.php" title="recharger la page"><h1 class="titre1">S.P.S</h1></a>
     <div id="textesps">
     <p class="texte2">description du sps balbalbalbalbla...</p>
     </div>
     
     <?php while ($dessins = $reponse->fetch())
     {
     ?>
    <div class="cat1">
      <?php echo '<span class="classtext1v">'.$dessins['categorie'].'</span>'; ?>
      <br />
      <?php echo '<span class="classtext2v">'.$dessins['titre'].'</span>'; ?>
      <br />
      <a href="selectionsps.php?categorie=<?php echo $dessins['categorie']; ?>&amp;titre=<?php echo $dessins['titre']; ?>&amp;titre=<?php echo $dessins['description']; ?>&amp;image=<?php echo $dessins['image']; ?>"><img src="images/<?php echo $dessins['image'];?>" width="200" height="250" /></a>
    </div>
    <? } $reponse->closeCursor(); ?>
    </div>
    <?php include("footer.inc.php"); ?>
    </div>
    </body>
    </html>
    Merci de votre aide
    Sincèrement.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    C'est un peu plus compliqué que simplement rajouter un LIMIT.

    Fais une recherche sur GG (Google est ton ami, ça on l'a déjà dit pourtant) avec des mots clés genre : "pagination php".

    Ce que tu recherche c'est donc ni plus ni moins que de la pagination.
    Tu trouveras une multitudes de pistes, solutions, tutos, etc ...

    Bonne recherche

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Bonjour,

    Ok, ^^
    merci pour ton conseil je vais me renseigner un peu plus à ce sujet.

    Cordialement.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Par défaut
    Bonjour,

    Pourquoi tu n’utilises pas un script genre Piwigo qui fait cela déjà très bien ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    Bonjour,

    personnellement, j'utilise un petit bout de code avec de l'ajax, je l'ai tellement utilisé qu'il est devenur un standard is suffint juste de modifier les requetes.

    La fonction ajax qui va dans head:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    function go_page(str,str1)
    {
     
    document.getElementById("show_page").innerHTML='<b>Chargement en cours... Veuillez patienter</b>';
    if (str=="")
      {
      document.getElementById("show_page").innerHTML="";
      return;
      } 
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp21=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp21=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp21.onreadystatechange=function()
      {
      if (xmlhttp21.readyState==4 && xmlhttp21.status==200)
        {
        document.getElementById("show_page").innerHTML=xmlhttp21.responseText;
        }
      }
    xmlhttp21.open("GET","populate_page.php?id_page="+str+"&id_reste1="+str1,true);
    xmlhttp21.send();
     
    }

    puis la partie qui détermine le nombre de pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // lister les Pages
    $find_query1=mysql_query(" BLA BLA BLA");
    if (mysql_num_rows($find_query1)<>0){
     
    echo "<table  style=\"font-family:Arial; font-size:10px;font-weight : bold;float:left\" border=\"1\" width=\"100%\">";
    echo "<tr bgcolor=\"$bg2\"><td colspan=\"3\">LISTE DES PAGES</td></tr>";
    $to_show=mysql_num_rows($find_query1);
    $step=35;// IMPORTANT C Le DONNEES PAR PAGE
    $reste_pages= $to_show%$step;
    if ($reste_pages<>'0'){
    	$add_page=1;
    }else{
    	$add_page=0;
    }
    $nb_pages= (($to_show-$reste_pages)/$step)+$add_page;
    echo "<tr bgcolor=\"$bg2\"><td colspan=\"3\">PAGES :"; 
    for ($i = 0; $i < $nb_pages; ++$i){
    $lim1=$i*$step;
    $lim2=$lim1+$step;
     
    $j=$i+1;
    if ($j==$nb_pages){
    	$reste1=$reste_pages;
    }else{
    	$reste1='0';
    }
    echo "<a href=\"#\" onclick=\"go_page('$i','$reste1')\">$j</a>&nbsp;";
     
    }
    echo "</td></tr>";
    et la tu affiche le contenu de la page 1 dans ta div avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "<tr><td colspan=\"3\"><div id=\"show_vague\">";
    $find_query=mysql_query("select BLA BLA BLA LIMIT 0,35");
     
    //******TOUT LE TRAVAIL D'aFFICHAGE
     
    echo "</div></td></tr></table></body>";
    et maintenant le code dans la page populate_page.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $i=$_GET["id_page"];
    $reste=$_GET["id_reste1"];
     
     
    if ($reste<>0){
    	$step=$reste;
    }else{
    	$step=35;
    }
     
    $lim1=($i*35);
    $lim11=$lim1+1;
    $lim2=($lim1+$step);
     
    $find_query=mysql_query("select  BLA BLA LIMIT $lim1,35");
    $j=$i+1;
    echo "<html><head>
        <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\">
     
    </head><table  style=\"font-family:Arial; font-size:10px;font-weight : bold;float:left\" border=\"0\" charset=UTF-8>";
    echo "<tr bgcolor=\"$bgtr\"><td colspan=\"3\">Page $j : de $lim11 à $lim2</td></tr>";
     
    // ICI TU FETCH TA REQUETE Et TU AFFICHE
    Voilà j'espère que cela t'apportera l'aide nécessaire

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    personnellement, j'utilise un petit bout de code avec de l'ajax, je l'ai tellement utilisé qu'il est devenur un standard is suffint juste de modifier les requetes.
    Autant utiliser JQuery pour simplifier le tout alors.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Bonjour,
    Merci beaucoup pour vos conseils et votre aides.
    J'en prend compte, mais j'aimerais apprendre à programmer moi même ( qui me sera très utile pour le futur ) en PHP, et en utilisant de préférence la PDO, ayant appris un petit peu le _mysql je me perd avec les différences de code... Et il y a très peu de tutoriel présenté avec de la PDO :/ . ( si vous pourriez peut-être m'indiquer un lien d'un tuto' pour débutant qui explique simplement la pagination PHP pdo xD )
    Merci encore pour votre aide,
    sincèrement.

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    La pagination entre PDO et mysql_ ne change rien.

    Le principe sera le même.

    - Tu dois avoir une requête qui récupère le nombre total d'élément d'une table X.

    - Tu divises ce résultat par le nombre que tu veux d'éléments par page : nombre de page

    - Sur ta page, tu fais une boucle en php qui va de 1 à nbr de pages (récupéré par ta requête).

    - A chaque tour de boucle, la "value" sera la tranche des éléments (si tu récupères 100 élements, que tu en veux 10 / page, ça fera alors 10 pages. Alors le premier tour de boucle aura pour value 0 - 10, puis 11 - 20, ...).

    Quand tu cliques sur un de ces ID, à toi d'appeler la requête adéquate pour afficher les résultats de x à x éléments de la BDD.

    => Que tu utilises PDO, mysql, mysqli, que tu fasses du procédurale, du PHP Objet ... le principe est le même.

    Quelle partie ne vois-tu pas ?

Discussions similaires

  1. afficher une image 3D dans ma page web
    Par ghadroud dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 16/01/2009, 19h33
  2. Réponses: 2
    Dernier message: 18/07/2007, 17h19
  3. Réponses: 4
    Dernier message: 24/06/2007, 19h27
  4. Lien permettant d'afficher une image dans la même page
    Par mouna201 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2007, 10h31
  5. Réponses: 2
    Dernier message: 04/02/2007, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo