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 :

Boucle pour écrire de l'html avec liens stoqués dans une base de données [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut Boucle pour écrire de l'html avec liens stoqués dans une base de données
    bonjour,
    mon problème est très simple, je fais un diaporama qui contient plusieurs photos.
    Et pour chaque photo je dois écrire tout le html qu'il y a entre les balises
    <li>... </li>
    En supposant que j'ai 70 photos...




    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
    <li>
    			<h3>Slideshow v1</h3>
    			<span>images/diapo_perso1/image01.JPG</span>
     
    			<p>voici une belle photo </p>
    			<a href="#"><img src="images/diapo_perso1/thumbnails/image01.JPG" alt="moi" /></a>
    		</li>
     
     
     
    <li>
    			<h3>Slideshow v2</h3>
    			<span>images/diapo_perso1/image02.JPG</span>
     
    			<p>voici encore une belle photo </p>
    			<a href="#"><img src="images/diapo_perso1/thumbnails/image02.JPG" alt="encore moi " /></a>
    		</li>
    je dois écrire pour chaque photos

    bon je pense qu'on peut faire plus simple et mieux avec php.
    Donc j'ai stocké les attributs(titre,adresse,adresse miniature,commentaire)
    de chaque photo dans une BBD sql.

    Et je pense associer une variable pour chaque attribut.
    je cherche juste comment générer ce code html avec une boucle php en relation avec le nombre de photo de ma bdd.



    je mets juste un code "symbolique" pour expliciter le but


    pour la bdd...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $reponse_diapo_perso1 = @mysql_query("SELECT COUNT(*) AS nombre_images FROM diapo_perso1 "); // Requête SQL
    		while ($donnees_diapo_perso1 = @mysql_fetch_array($reponse_diapo_perso1) )
    		{
     
    		}
    et pour le génération du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for ($nombre_de_lignes = 1; $nombre_de_lignes <= $nombre_images; $nombre_de_lignes++)
    		{
    		echo'<li>
    			<h3>$donnees_diapo_perso1[\'titre\']</h3>
    			<span>$donnees_diapo_perso1[\'big_photo\']</span>
    			<p>$donnees_diapo_perso1[\'commentaires\']</p>
     
    			<img src="$donnees_diapo_perso1[\'minature\']" alt="$donnees_diapo_perso1[\'titre\']" />
    		</li>';


    donnez moi quelques pistes svp

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Voici une petite piste

    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
     
    <?php
    //ne pas mettre @ devant une commande cela enlève les erreurs
     
    $sql= mysql_query("SELECT titre,adresse,commentaire AS nombre_images FROM diapo_perso1 "); // Requête SQL
    		while ($result = mysql_fetch_array($sql) )
    		{
    ?>
    <li>
    			<h3><?php echo $result['titre'] ?></h3>
    			<span>??? je ne vois pas pq mettre une adresse ici</span>
     
    			<p><?php echo $result['commentaire'] ?></p>
    			<a href="#"><img src="<?php echo $result['adresse'] ?>" alt="encore moi " /></a>
    		</li>
     
    		<?php } ?>
    voila !

  3. #3
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut
    merci, je vais voir ce que ça donne.

    pour la réponse, la balise span contient l'adresse de la vrai photo taille rééllle.

    1-ce que je retiens c'est ne pas mettre du html dans du code php.

    2- le while va traiter toutes les entrées l'une après l'autre (donc pas besoin de boucle for et du nombre d'image dans la base)

    en revanche
    3- pour le @ devant la requête sql, le livre que j'ai acheté pour le php dit qu'il permet d'éviter lors des erreurs de bdd de dévoiler le code, ce qui peut être une
    source d'insécurité.
    les choses ont peut être évolué...

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Citation Envoyé par athlon64 Voir le message
    merci, je vais voir ce que ça donne.

    pour la réponse, la balise span contient l'adresse de la vrai photo taille rééllle.

    1-ce que je retiens c'est ne pas mettre du html dans du code php.

    2- le while va traiter toutes les entrées l'une après l'autre (donc pas besoin de boucle for et du nombre d'image dans la base)

    en revanche
    3- pour le @ devant la requête sql, le livre que j'ai acheté pour le php dit qu'il permet d'éviter lors des erreurs de bdd de dévoiler le code, ce qui peut être une
    source d'insécurité.
    les choses ont peut être évolué...

    Ton livre a à moitié raison effectivement, afficher les requetes SQL surtout en cas d'erreur peuvent être un gros soucis mais la solution n'est pas de rajouter des @, en effet, tu auras le même résultat en production qu'en développement, cad => rien du tout ^^

    Ce qu'on fait en général, c'est plutot préparer au mieux ses requetes (avec mysql_num_rows pour les vérifs etc) et en production avoir une config : Display_errors Off, error_reporting desactivé également

  5. #5
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut
    j'ai fait un tout petit code pour vérifier juste la boucle et les variables obtenues à partir de la bdd en se basant sur l'exemple donné :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: mysql_fetch_array(): supplied argument
     is not a valid MySQL result resource in C:\wamp\www\test
    \connect_bdd.php on line 16
    c'est la ligne de mon while.

    j'ai ajouté or die(mysql_error();
    ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Parse error: parse error in C:\wamp\www\test\connect_bdd.php 
    on line 13
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql= mysql_query("SELECT titre,adresse,commentaire,big_photo * 
    FROM diapo_perso1 ") or die(mysql_error(); // Requête SQL

    et voici le code complet
    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
    <body>
            <?php
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("peg"); // Sélection de la base peg
     
    $sql= mysql_query("SELECT titre,adresse,commentaire,big_photo * FROM diapo_perso1 ") or die(mysql_error(); // Requête SQL
    // On est connectés, on peut travailler sur la BDD
     
    		while ($resultat = mysql_fetch_array($sql) )
    		{
     
    	 echo $resultat['titre'] ;
    		}
     
    mysql_close(); // Déconnexion de MySQL
    ?>
     
        </body>

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Il faut enlever le star (*).

    Voici une ligne correcte.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT titre,adresse,commentaire,big_photo  FROM diapo_perso1

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 85
    Points
    85
    Par défaut
    Il manque surtout une parenthèse après mysql_error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= mysql_query("SELECT titre,adresse,commentaire,big_photo FROM diapo_perso1 ") or die(mysql_error()); // Requête SQL

  8. #8
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut

    en effet l'étoile ne sert plus à rien et la parenthèse à fermer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= mysql_query("SELECT titre,miniature,commentaires,big_photo  FROM diapo_perso1 ")or die(mysql_error()); // Requête SQL
    c'est normal qu'avec des erreurs pareilles g rien trouvé sur






    encore une petite chose, après quelques recherches j'ai cru comprendre qu'en phase de développement il faut éviter le @ devant les requêtes( pratique pour trouver les erreurs) et une fois le code aboutit on peut l'ajouter.

    perso je suis plutôt pour les mettre parce que je me dis que s'ils existent c'est surement pour une bonne raison.
    Mais bon je suis en train de découvrir le php , et je vais plutôt suivre l'avis de ceux qui s'y connaissent mieux ...

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le @ devant une fonction "bloque" le message d'erreur. Donc en phase de développement, il vaut mieux ne pas l'utiliser pour pouvoir repérer et corriger les erreurs (sinon on finit par se retrouver avec un code tout bugué en prod...) Les mettre dans le code en production évite que ton utilisateur se mange des messages en cas de problème.
    Bon évidement le mieux est d'avoir prévu le maximum d'erreur pour pouvoir afficher des messages compréhensibles par un être humain type "impossible de charger le fichier" plutot que de laisser une page blanche (avec le @) ou un message de dev type "can't open filestream"...

    Plus d'infos : Opérateur de contrôle d'erreur

  10. #10
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut
    merci pour tous les conseils.

    je ne vais pas les mettre en attendant de mieux maitriser le php.

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

Discussions similaires

  1. Lien inverse dans une base des données objet
    Par kochfet dans le forum Décisions SGBD
    Réponses: 0
    Dernier message: 08/06/2013, 14h55
  2. Activer/Désactiver un lien récupéré dans une base de données
    Par rockncaly dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 26/01/2013, 19h36
  3. [AC-2010] Gestion de liens hypertexts dans une Base de données Access
    Par ouzal dans le forum Access
    Réponses: 7
    Dernier message: 20/01/2012, 12h45
  4. Réponses: 7
    Dernier message: 26/05/2007, 16h14
  5. Réponses: 1
    Dernier message: 14/05/2006, 20h52

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