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 :

Récupération et affichage des données renvoyées par une fonction affichelivre()


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Récupération et affichage des données renvoyées par une fonction affichelivre()
    bonjour a tous je commence recement a travailler sur php et j'essaye de recuperer les resultat renvoyer par une fonction affichelivre() ensuite afficher les image qui correspand a chaque livre mais il m'affiche que le 1er livre pouvet vous m'aider voici ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function affichelivre(){ 
     
    	  $connection=mysql_connect("localhost", "root", "");
    		mysql_select_db("bibliotheque");
    		 $requete="select * from livres ";
     
    		$resultat=mysql_query($requete,$connection);
    		$res=mysql_fetch_array($resultat);
    		return $res;
     
    	}
    et voici comment j'essayer de la recuperer et afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
       $tab=affichelivre();
       foreach($tab as $j)
        $photo = $tab['image'];
       ?>
       <img src="res\img-books\<?php echo "$photo" ?>"/>;

  2. #2
    Membre régulier Avatar de DezMax
    Homme Profil pro
    Licence Informatique
    Inscrit en
    Décembre 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Licence Informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 89
    Points : 115
    Points
    115
    Par défaut
    J'aurais plutôt fais comme sa pour afficher les images :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mysql_connect("localhost", "root", "");
    mysql_select_db("bibliotheque");
     
    function affichelivre(){
     
    $requete="select * from livres ";
     
     while($data = mysql_fetch_array($requete)){
        $img = $data['image'];
        echo $img;
     
    }
    }

    Utilisation de la fonction :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    //J'ai seulement modifier les slash pour le repertoires 
    <img src="res/img-books/<?php affichelivre(); ?>"/>

    (ta fonction ne prend en compte aucune variable donc je ne juge pas nécessaire d'utiliser une fonction en revenche utiliser include(); ou insérer le code directement c'est aussi possible après je comprend que tu ne veuilles pas surcharger ta page)

  3. #3
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    @douda1989
    Lorsque qu'on exécute un requête SQL du genre "SELECT * ..." cela veut dire qu'on souhaite récupérer toutes les valeurs de tous les champs de la table.
    A mon sens cela n'est pas judicieux dans ce cas de figure.
    A priori seul les noms des images seraient à récupérer, dans tel cas il est préférable d'indiquer uniquement ce champ.
    Genre : "SELECT image FROM livre"

    Autre point, aucun filtre ni même aucune clause n'est faite dans la requête, ce qui sous entend que toutes les images seront récupérées, donc la requête risque fort de retourner plusieurs résultats (ou lignes).
    Or, aucune boucle n'est faite pour récupérer toutes ces lignes.
    De plus, aucune fonction native pour cette librairie (les fonctions mysql_truc_machin) ne permet de récupérer d'une traite l'ensemble d'un jeu de résultat.
    Faire une boucle sera ici obligatoire.
    Petite parenthèse au passage, les fonctions mysql_truc_machin sont obsolètes (on ne cesse de le répéter sur ce forum et ailleurs), Php offre 2 autres moyens d'interroger MySQL parfaitement à jour.
    -> PDO et MySQLi, qui d'ailleurs permettent de récupérer d'une traite un jeu de résultat, donc sans devoir faire une boucle.


    @DezMax
    On est pas loin de la solution, sauf que faire directement un affichage (un echo) du nom des images en boucle dans une fonction n'est pas si judicieux que ça à mon sens.
    Je dis bien à mon sens
    Puis il y a tout de même erreur, car s'il y a plusieurs images/plusieurs noms ils seront concaténés, du coup le navigateur sera déboussolé (bug).
    On va avoir quelque chose du genre : res/img-books/img1.jpgimg2.jpgimg3.jpg ...


    Théoriquement il faudrait faire quelque chose du genre :
    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
    // Déclaration de la fonction
    // On change un poil le nom de la fonction par : recuperer_livres
    // Car la fonction ne fait que récupérer les données (et non les afficher)
    // Puis "livres" avec un "s" car il y aura surement plusieurs
    function recuperer_livres() {
        $img_req = 'SELECT image FROM livres';
        $img_res = mysql_query($img_req);
     
        // Boucle sur les images
        // Stockage des images dans un tableau
        while ($img = mysql_fetch_assoc($img_res)) {
            $images[] = $img['image'];
        }
     
        // On retourne le tableau
        return $images;
    }
     
     
    // A l'usage
    // On déporte la connexion/sélection de la BDD
    // Histoire d'éviter de faire, refaire, rerefaire n fois la même chose
    $connection = mysql_connect("localhost", "root", "");
    mysql_select_db("bibliotheque");
     
    $images = recuperer_livres();
    foreach ($images as $img) {
        echo '<img src="res/img-books/'.$img.'" />';
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    merci enormément pour votre aide et vos explications

  5. #5
    Membre actif Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Points : 207
    Points
    207
    Par défaut
    Tu dois boucler sur l'affichage des images:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
       $tab=affichelivre();
       foreach($tab as $j)
    {
        $photo = $tab['image'];
    echo "<img src=\"res\img-books\". $photo ."\"/>;
    }
       ?>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2015, 15h01
  2. Réponses: 0
    Dernier message: 31/10/2013, 15h45
  3. Récupération des données retournées par une requête
    Par fou-jea dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 06/09/2012, 16h28
  4. Réponses: 2
    Dernier message: 08/10/2006, 11h44

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