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

Langage PHP Discussion :

image affiche tous dans la première pages


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut image affiche tous dans la première pages
    Bonjour,
    Le code fonctionne sauf que les imges du dossier s'affiche tous dans la première page, tous dans la 2eme, etc. Moi, je veux qu'elles s'affichent une par page.

    Code:
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    <?
        include("variables.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Animaux</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <link rel="stylesheet" media="screen" type="text/css" title="stylepage" href="stylepage.css" />
       </head>
     
       <body>
     
           <!-- L'en-tête -->
     
           <div id="en_tete">
     
           </div>
     
           <!-- Les menus -->
     
           <div id="menu">        
     
                <? include("menuesite.php"); ?>
     
     
           </div>
     
           <!-- Le corps -->
     
           <div class="listescostumestexte" id="corps">
    <?
    mysql_connect( $server, $login, $mdp);
    mysql_select_db( $nombase );
     
    // --------------- Etape 2 -----------------
    // On écrit les liens vers chacune des pages
    // -----------------------------------------
     
    // On met dans une variable le nombre de messages qu'on veut par page
    $nombreDeMessagesParPage = 1; // Essayez de changer ce nombre pour voir :o)
     
    // On récupère le nombre total de messages
    $retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM jojo WHERE classe='animaux'");
    $donnees = mysql_fetch_array($retour);
    $totalDesMessages = $donnees['nb_messages'];
     
    // On calcule le nombre de pages à créer
    $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
     
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
     
     
     
    // --------------- Etape 3 ---------------
    // Maintenant, on va afficher les messages
    // ---------------------------------------
     
    if (isset($_GET['page']))
    {
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
        $page = 1; // On se met sur la page 1 (par défaut)
    }
     
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
    $dernierMessageAafficher = ($page + $nombreDePages - 2) * $nombreDeMessagesParPage;
     
    $reponse = mysql_query('SELECT * FROM jojo ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
     
        echo '<center>';
     
    while ($donnees = mysql_fetch_array($reponse))
    {
     
    	echo '<h1>' . $donnees['nomphoto'] . '</h1> <br />';
    	echo 'prix : ' . $donnees['prix'] . '$ <br />';
    	echo 'Grandeur : ' . $donnees['grandeur'] . ' <br />';
    	echo 'Inclus : ' . $donnees['inclus'] . ' <br />';
    	echo 'Non-inclus : ' . $donnees['noninclus'] . ' <br /><br /><br />';
     
    	$path= './animaux'; // soit un dossier gallerie
    	$d = dir($path);
    	while (false !== ($entry = $d->read()))
    	{
    	   if(is_file($path.'/'.$entry))
    	   {
    	   $info = pathinfo($entry);
    	   switch($info["extension"])
    			{
    			case "jpg":
    			case "gif":
    			case "png":
    			case "bmp":
    			case "jpeg":
    			case "tiff":
    			echo "<img src=\"{$path}/{$entry}\"
    				 class=\"imglistesphotos\"
    				 alt=\"{$entry}\" 
    				 style=\"border:0; padding:5px; \"/>";
    			break;
    			default:
    			echo "";
    			}
    	   }
    	}
    	$d->close();
    }
     
    if (isset($_GET['page']))
    {
     
           if ($_GET['page'] > 1)
                    {
                    echo '<a href="listesanimaux.php?page='. ($_GET['page'] - 1) .  ' "> <img border="0" src="flechegauche.gif"> </a> ';
                    }
            else
                    {
                    echo '<a href="listesanimaux.php?page='. ($_GET['page'] + $dernierMessageAafficher) .'"> <img border="0" src="flechegauche.gif"> </a> ';;
                    }
     
            if ($_GET['page'] < $nombreDePages)
                    {
                    echo '<a href="listesanimaux.php?page='. ($_GET['page'] + 1) .'"> <img border="0" src="flechedroite.gif"> </a> ';
                    }
           else
                    {
                    echo  '<a href="listesanimaux.php?page='. ($_GET['page'] - $premierMessageAafficher) .'"> <img border="0" src="flechedroite.gif"> </a> ';
                    }
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
        echo '<a href="listesanimaux.php?page=' . ($nombreDePages -1).'"> <img border="0" src="flechegauche.gif"> </a> ';
    	echo '<a href="listesanimaux.php?page=2"> <img border="0" src="flechedroite.gif"> </a> ';
    }
     
    	echo '</center>';
     
    mysql_close(); // On n oublie pas de fermer la connexion à MySQL
    ?>
     
    </p>
     
     
    </body>
    </html>
    [/code]

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    Je t'avoue avoir un peu de mal à tester ton code vu que je n'ai pas la bdd associée.

    Néeanmoins :
    - Je suis un peu étonné de ceci :
    $dernierMessageAafficher = ($page + $nombreDePages - 2) * $nombreDeMessagesParPage;

    Et puis j'aurais bien envie de faire un echo de la requete suivante:
    $reponse = mysql_query('SELECT * FROM jojo ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

    Pour voir ce que cela affiche car le code me parait correct...

    Bye

  3. #3
    Invité
    Invité(e)
    Par défaut voici ma base
    voici ma BDD(table).

    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
     
    CREATE TABLE `jojo` (
      `id` int(11) NOT NULL auto_increment,
      `nomphoto` varchar(255) NOT NULL default '',
      `prix` text NOT NULL,
      `grandeur` text NOT NULL,
      `inclus` text NOT NULL,
      `noninclus` text NOT NULL,
      `classe` varchar(255) NOT NULL default '',
      KEY `id` (`id`),
      KEY `id_2` (`id`),
      KEY `id_3` (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=52 ;
     
    -- 
    -- Contenu de la table `jojo`
    -- 
     
    INSERT INTO `jojo` VALUES (41, 'Monsieur cochon', '20', 'Small à x-large', 'Tête, combinaison, mitaines et couvres-souliers', '', 'animaux');
    INSERT INTO `jojo` VALUES (42, 'Madame cochon', '20', 'Médium à x-large', ' Tête, combinaison et mitaines', '', 'animaux');
    INSERT INTO `jojo` VALUES (40, 'Canard casquette à pois', '20', 'X-small à médium ', ' Tête, casquette, combinaison, pattes et leggings.', '', 'animaux');
    INSERT INTO `jojo` VALUES (43, 'Éléphant', '20', 'X-small à médium', 'Combinaison avec la tête, mitaines et couvre-chaussures', '', 'animaux');
    INSERT INTO `jojo` VALUES (44, 'Gorille', '30', 'Small à large', 'Tête, corps, gants et pieds', '', 'animaux');
    INSERT INTO `jojo` VALUES (45, 'Loup', '25', 'Small à x-large', 'Habit de peluche, tête masque, pattes et couvres-souliers', '', 'animaux');
    INSERT INTO `jojo` VALUES (46, 'Panthère Noire', '20', 'Small à large', 'Tête, combinaison, mitaines et couvres-souliers', '', 'animaux');
    INSERT INTO `jojo` VALUES (47, 'Vache homme', '20', 'Médium à x-large', 'Combinaison, tête, mitaines, bottes et cloche', '', 'animaux');
    INSERT INTO `jojo` VALUES (48, 'Vache femme', '20', 'Small à large', 'Combinaison, tête, mitaines, bottes et cloche', '', 'animaux');
    INSERT INTO `jojo` VALUES (49, 'Vache comique', '20', 'Small à large', 'Tête et combinaison', '', 'animaux');

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    pas tout compris non plus, mais tu as deux boucles while imbriquées :
    la première
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($donnees = mysql_fetch_array($reponse))
    et la tu as bien un limit de 1, donc tu as un seul message avec prix, grandeur, etc
    Ensuite tu as ta seconde boucle imbriquée (et la je ne t'aide pas, je ne connais pas les instructions relatives à la lecture de répertoires/fichiers)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (false !== ($entry = $d->read()))
    mais qui semble lire toutes les images dans ton répertoire sans limit et sans restrictions

  5. #5
    Invité
    Invité(e)
    Par défaut
    exatement,

    Le produit final que vas donner la page de code c'est:

    Dans chaque page quand je vas cliquer sur les flèche il va afficher ca

    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
       echo '<h1>' . $donnees['nomphoto'] . '</h1> <br />';
       echo 'prix : ' . $donnees['prix'] . '$ <br />';
       echo 'Grandeur : ' . $donnees['grandeur'] . ' <br />';
       echo 'Inclus : ' . $donnees['inclus'] . ' <br />';
       echo 'Non-inclus : ' . $donnees['noninclus'] . ' <br /><br /><br />';
     
       $path= './animaux'; // soit un dossier gallerie
       $d = dir($path);
       while (false !== ($entry = $d->read()))
       {
          if(is_file($path.'/'.$entry))
          {
          $info = pathinfo($entry);
          switch($info["extension"])
             {
             case "jpg":
             case "gif":
             case "png":
             case "bmp":
             case "jpeg":
             case "tiff":
             echo "<img src=\"{$path}/{$entry}\"
                 class=\"imglistesphotos\"
                 alt=\"{$entry}\"
                 style=\"border:0; padding:5px; \"/>";
             break;
             default:
             echo "";
             }
          }
       }
       $d->close();
    sauf avec du texte diffirent.

    Où que c'est pas correcte c'est là:

    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
    $path= './animaux'; // soit un dossier gallerie
       $d = dir($path);
       while (false !== ($entry = $d->read()))
       {
          if(is_file($path.'/'.$entry))
          {
          $info = pathinfo($entry);
          switch($info["extension"])
             {
             case "jpg":
             case "gif":
             case "png":
             case "bmp":
             case "jpeg":
             case "tiff":
             echo "<img src=\"{$path}/{$entry}\"
                 class=\"imglistesphotos\"
                 alt=\"{$entry}\"
                 style=\"border:0; padding:5px; \"/>";
             break;
             default:
             echo "";
             }
          }
       }
       $d->close();
    car ce code fait apparaître toutes les images dans la même page et quand je clique sur les flèche il fait apparait un autre text et avec ce text il ré-affiche toutes les images etc.

    Moi j'aimerai que quand tu cliques sur la flèche qui change l'image pour que l'image aie avec le text inscrit.


    Pour ce script je me suis bassé sur un script de "Livre d'Or".

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    question pour bien comprendre :
    quand tu parles de texte, tu parles bien de nomphoto, prix, grandeur, etc ?

    et tu veux qu'avec ce texte il n'apparaît qu'une seule image qui aille avec ce texte ?

    si c'est bien cela, COMMENT ASSOCIES-TU LA BONNE IMAGE AVEC CE TEXTE, ou pour poser la question différemment, quel est le lien (pas le lien hypertexte, mais la concordance) entre le nom d'une image dans ton répertoire et le nom de la photo dans ton texte ?

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    +1 pour francis.

    actuellement tu semble afficher tout les fichiers de type tiff, sans les rapprocher à un élément de ta BDD.

    Il vas falloir que tu fasses le rapprochement entre ta BDD et tes fichiers, mais selon le schéma de ta BDD il n'y à actuellement rien qui semble faire le rapprochement :O

    Bye

  8. #8
    Invité
    Invité(e)
    Par défaut
    Donc il faut absolument que j'écrive dans la BDD le nom de les fichiers images pour réussir à mettre une image par page.

    Est bien cela ?

    Si oui est ce qu'il a un moyen pour qu'avec un code qui lise dans le dossier les fichiers et après qui les écrives dans la BDD et tout cela automatiquement?

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    Citation Envoyé par epiq
    Donc il faut absolument que j'écrive dans la BDD le nom de les fichiers images pour réussir à mettre une image par page.
    Est bien cela ?
    OUI

    Citation Envoyé par epiq
    Si oui est ce qu'il a un moyen pour qu'avec un code qui lise dans le dossier les fichiers et après qui les écrives dans la BDD et tout cela automatiquement?
    Pas dans le sens ou tu l'entends. Tu peux bien sûr avec ton DIR rechercher tous les fichiers d'un répertoire, et avec un INSERT les insérer dans la BDD. Mais tu n'auras rien d'autre qu'une liste de fichiers. Ils ne sont pas associés à tes $donnees (nom de la photo, prix, grandeur, etc)et je ne vois aucun moyen automatique pour que ta bdd devine le prix ou le nom que tu désires donner à un fichier.

    Un ordinateur, c'est rapide, mais c'est bête... il ne fait que ce qu'on lui dit de faire !

  10. #10
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    pour ce genre de chose en génral je renomme les images lors de l'upload avec l'id de l'élément à associé.

    Ainsi si j'ai un élément Y avec l'id 1 et des fichiers au formats jpeg.
    mon image se nommera 1.jpg.

    Il devient tout de suite assez simple de retrouver ces petits !

    Bye

  11. #11
    Invité
    Invité(e)
    Par défaut
    Ok merci,

    Je sais quoi faire, je vais entrer les fichiers un par un dans une table et je vais les faire apparaitre en ordre alphabétiques. Et je vais faire de même avec le texte, le texte sera dans une autre table.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    euh je mettrais le texte et le nom des fichiers dans la même table, sinon je ne vois pas comment tu feras le lien entre les deux

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ok je vais tout mettre dans la même table.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Afficher resultat dans une seconde page web
    Par Skytrancer dans le forum AJAX
    Réponses: 3
    Dernier message: 15/05/2011, 21h14
  2. [WD-2003] Image de fond dans la première page
    Par dominos dans le forum Word
    Réponses: 4
    Dernier message: 19/08/2010, 17h14
  3. Réponses: 2
    Dernier message: 09/02/2010, 20h46
  4. Comment afficher "TOUS" dans une requete union
    Par Stargate SG1 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 30/11/2008, 12h17
  5. Réponses: 1
    Dernier message: 11/09/2007, 23h38

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