8795 sujets

Développement web côté serveur, CMS

Bonjour,

Dans le cadre d'une eBoutique, je cherche à créer une boucle PhP qui me permettrait de créer une nouvelle <div> à chaque fois qu'une requête Mysql me retourne un nouveau produit (identifié par un id_produit).

Représenté par un tableau, voici le résultat de la requête à la base de données :

upload/44840-tableau.jpg

<h3>Nos trois dernières offres</h3>
				<?php 
function getLastOffers()
{
$req = "SELECT p.date_arrivee, p.date_depart, a.ville,  a.photo ,p.prix, a.capacite, p.id_produit FROM produits p, salles a where p.date_arrivee > CURDATE() AND etat=0 and a.id_salle=p.id_salle ORDER BY p.date_arrivee LIMIT 3";
//req retourne un array. 
$resultat = mysql_query($req);

return $resultat;


$offers=getLastOffers();
$nbcol = mysql_num_fields($offers);
	echo "<table style='border-color:grey' border=2><tr>";
		for ($i=0; $i <$nbcol; $i++)
		{
		        $colonne=mysql_fetch_field($offers);
			echo '<td>'.$colonne->name.'</td>';
		}
		echo '</tr>';
					
		while ($row=mysql_fetch_array($offers))
		{
			echo '<tr>';
			for ($i=0; $i<$nbcol; $i++)
				{
									
					echo '<td>'.$row[$i].'</td>';
				}
				echo '</tr>';
					}
	echo '</table>';



Je cherche donc à obtenir ce type de résultat :

upload/44840-NewPicture.jpg

La difficulté que je rencontre consiste à rentrer dans une boucle "foreach" la valeur de l'index du tableau issu de la requête... étant donné que je veux créer une nouvelle "div" à chaque fois que le pointeur est sur "id_produit".

Vos lumières sont les bienvenues. Merci !
Salut


Ma solution se fait avec une classe

la classe article

ensuite dans ma classe article j'ai une fonction qui va SELECT * FROM tb_produit

et la je parcours ma table si elle est pleine (parcours = for, et pas foreach mais tu peux faire les deux)


$oArticle = new Article();

	$data = $oArticle->fx_getCatalog();
	
	// AFFICHE LA TOTALITE DU CATALOGUE, TOUS TYPES CONFONDUS
	if ($data != false)
	{
		
		$dataSize = sizeof($data);
		for ($i = 0 ; $i < $dataSize ; $i++)
		{
Merci JuseN pour ta réponse.

Ceci devrait donc permettre de créer une DIV à chaque fois que la base SQL envoie une ligne de données... si j'ai bien compris !

Pour ce qui est de traiter les valeurs selon leur colonne-index, cette solution paraît plus transparente. à savoir :

Array
(
    [0] => Array
        (
            [person_id] => 1
            [firstname] => Firstname one
            [lastname] => Lastname one
        )

    [1] => Array
        (
            [person_id] => 2
            [firstname] => Firstname two
            [lastname] => Lastname two
        )

    [2] => Array
        (
            [person_id] => 3
            [firstname] => Firstname three
            [lastname] => Lastname three
        )
)

foreach ($rows as $row) {
    echo $row['person_id'];
    echo $row['firstname'];
    echo $row['lastname'];
}

À tester...
Modifié par PrOtOzOaire (27 Jul 2012 - 16:26)
Salut,

Oui voila, tu parcoureras ton tableau

et si tu fais un

<?php echo $data[$i]['[i]ton_champ[/i]']?
>


sa parcourera dans l'odre tout les lignes et affichera a chaque fois le champs en echo


EDIT : ET oui si tu met <div> entre ta boucle for et ce que tu affiche (tes champs de bdd) sa créera une div a chaque fois. c'est ce que je fait pour afficher tout mes produits.


$dataSize = sizeof($data);
		for ($i = 0 ; $i < $dataSize ; $i++)
		{
			
?>	 
				<div  class="position_li ">
                      <div class="center_block"> <a href= "<?php echo utf8_decode($data[$i]['URL_DETAIL_PRODUIT']); ?>" 

etc...
etc..
etc...

Modifié par JuseN (27 Jul 2012 - 17:31)