8796 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai une page qui affiche grâce à une boucle une liste d'item selon une variable transmise par un $_GEt.
La liste est contenu dans le body mais j'aimerai que ma balise <title> du <head> soit remplie en fonction de la variable $_GET.
Donc après beaucoup de recherche (je suis pas vraiment un as du php/sql) et d'aide, j'en suis arrivé à ce code :

<?php
$retour = $bdd->prepare('SELECT * FROM xxxxx WHERE categorie = ?');
$retour->execute(array($_GET['categ']));
$mes_items = '';
while ($donnees = $retour->fetch())
{
$array_name = explode('Photos/',$donnees['image'] );
$name_image     =$array_name[1];
$name_imagette  ='Vign_' .$name_image;
$mes_items.= '<img src="Photos/' . $name_imagette . '" alt="izmage" />'.htmlspecialchars ($donnees['titre_produit']).htmlspecialchars($donnees['prix']);
}
$retour->closeCursor();
?>
<html>
<head>
<title><?php echo htmlspecialchars ($donnees['categorie']); ?><title>
<head>
<body>
<?php
echo $mes_items;
?>
</body>


Le code marche bien. Mais je me heurte à un problème, celui de la mise en forme de la variable $mes_items.

Celle ci contient donc tout les éléments de ma liste où chaque item est composé de son nom, son prix et son image (en fait il y a plus de données mais je simplifie).
Dans l'état, les items sont listés bruts de formatage.
Comment donc affubler à chaque partie (nom, prix, image) une balise (div, h2...) stylisée?

Merci!
Modifié par lodemars (11 May 2011 - 11:51)
Eh bien lors de la construction de ta chaîne $mes_items il faut que tu ajoutes les balises voulues
si par exemple tu veux cette structure finale :

<div id="listeproduits">
    <div class="produit"><img class="photoproduit" src="photos/prod1.jpg" />
         <p> titre produit </p> <p> prix </p> 
    </div>
    <div class="produit"><img class="photoproduit" src="photos/prod2.jpg" />
         <p> titre produit2 </p> <p> prix </p> 
    </div>    
    <div class="produit"><img class="photoproduit" src="photos/prod3.jpg" />
         <p> titre produit3 </p> <p> prix </p> 
    </div>    
    <div class="produit"><img class="photoproduit" src="photos/prod4.jpg" />
         <p> titre produit4 </p> <p> prix </p> 
    </div>
</div>


il faut changer ta boucle :
$mes_items = '<div id="listeproduits">';

while ($donnees = $retour->fetch())

{

$array_name = explode('Photos/',$donnees['image'] );

$name_image     =$array_name[1];

$name_imagette  ='Vign_' .$name_image;

$mes_items.= ' <div class="produit"><img class="photoproduit" src="Photos/' . $name_imagette . '" alt="izmage" /><p>'.htmlspecialchars ($donnees['titre_produit']).'</p> <p>'.htmlspecialchars($donnees['prix']) .'</p></div>'    ;

}
$mes_items.= ' </div>'; 


PS : attention cas liste vide non traité ....
Ca marche, c'était "tout simple". J'avais essayé cette voie, mais la concaténation et moi c'est pas encore le grand amour.
Merci Ariala.

Sinon dans le cas ou je voudrais introduire un mot avec une (un?) apostrophe genre :

$contenu.= ' 
<div class="loupe">
<a id="example3" href="Photos/'. $name_image.'">agrandir l'image</a>
</div>'    ; 


Comment afficher l'apostrophe du mot image, qui tel quel chamboule le reste du code. En clair il attend que l'on referme l'apostrophe.