Page 1 sur 1

page de produit php mysql

Posté : 02 déc. 2013, 18:06
par WENKz
Bonjour,
je souhaiterai afficher différents produit par catégorie, les différentes informations des produits sont enregistré dans la base de donnée(nom,mois de publication,type de produit,l'image,la description et la reference)

je voudrais afficher c'est produit de cette mannière

filtre
filtre1 filtre2 filtre3
filtre4 filtre5 filtre6
filtre7 filtre8 filtre9
caserol
casserole1 casserole2 casserole3
casserole4 casserole5 casserole6
casserole7 casserole8 casserole9


actullement j'ai fait

function Fonction_filtres_mai()
{
	$result = mysql_query("SELECT * FROM UPLOAD WHERE type = 'Filtres' AND mois = 'Mai'");
	//On vérifie que la table contient quelque chose
	if(mysql_num_rows($result) == 0)
	{
		echo '<p>erreur pas de produits ?</p>';
	}
		//Si il y a des entrées	  
	else
	{
		while($affiche_produit = mysql_fetch_array($result))
		{
			//On affiche les entrées
			echo '<li style="width:220px;">';
			echo '<img src="'.nl2br($affiche_produit["avatar"]).'" alt="fsd " /><br/>';
			echo '<p>'.nl2br($affiche_produit["nom"]).'<br>';
			echo '<br/>'.nl2br($affiche_produit["descritpion"]).'';
			echo '<br/>'.nl2br($affiche_produit["reference"]).'</p>';
			echo '</li>';
		}
	}
}
<div class="categorie1">
		<h1>Filtres</h1>
			<ul>
				<?php 
					echo Fonction_filtres_mai();
				?>
			</ul>
		</div>
<div class="categorie2">
				<h1>casserole</h1>
			<ul>
				<?php 
					echo Fonction_tubeuses_mai();
				?>
			</ul>
		</div>
mais ça ne convient pas pour ce que je veux faire ce n'est pas réellement dynamique et pour ce qui est feuille de style ça ne fonctionne pas vraiment

Re: page de produit php mysql

Posté : 02 déc. 2013, 19:59
par yann18
bonjour,

je suppose que la catégorie est représentée par la colonne type(type de produit).
dans ce cas tu peux ordonner les produits par catégories.puis dans la boucle vérifie si la ligne de la catégorie en cours est différente de la précédente auquel cas on affiche la catégorie:

function Fonction_filtres_mai()
{
        $result = mysql_query("SELECT * FROM UPLOAD WHERE `type` = 'Filtres' AND mois = 'Mai'  ORDER BY `type` ");
        //On vérifie que la table contient quelque chose
        if(mysql_num_rows($result) == 0)
        {
                echo '<p>erreur pas de produits ?</p>';
        }
                //Si il y a des entrées         
        else
        {
        $categorie_prec ='';
                while($affiche_produit = mysql_fetch_array($result))
                {
    
                if( $affiche_produit["type"] !=   $categorie_prec ){
               
                 echo "<h1> {$affiche_produit['type']} </h1>"; 
                  $categorie_prec = $affiche_produit["type"] ;
                 }
                        //On affiche les entrées
                        echo '<li style="width:220px;">';
                        echo '<img src="'.nl2br($affiche_produit["avatar"]).'" alt="fsd " /><br/>';
                        echo '<p>'.nl2br($affiche_produit["nom"]).'<br>';
                        echo '<br/>'.nl2br($affiche_produit["descritpion"]).'';
                        echo '<br/>'.nl2br($affiche_produit["reference"]).'</p>';
                        echo '</li>';
                }
        }
}

Re: page de produit php mysql

Posté : 02 déc. 2013, 21:16
par WENKz
merci de ta réponse ,en fait ce que j'ai fait pour le moment j'ai créer plusieurs fonction pour chaque type de produit

Re: page de produit php mysql

Posté : 02 déc. 2013, 23:58
par yann18
merci de ta réponse ,en fait ce que j'ai fait pour le moment j'ai créer plusieurs fonction pour chaque type de produit
de rien.en fait pour afficher tous les produits par type il suffit d'enlever la clause WHERE type= de la requête sql et ça donnerait ceci:
<?php

function Fonction_filtres_mai()
{
        $result = mysql_query("SELECT * FROM UPLOAD WHERE  mois = 'Mai'  ORDER BY `type` ");
        //On vérifie que la table contient quelque chose
        if(mysql_num_rows($result) == 0)
        {
                echo '<p>erreur pas de produits ?</p>';
        }
                //Si il y a des entrées        
        else
        {
        $categorie_prec ='';
                while($affiche_produit = mysql_fetch_array($result))
                {
   
                if( $affiche_produit["type"] !=   $categorie_prec ){
               
                 echo "<h1> {$affiche_produit['type']} </h1>";
                  $categorie_prec = $affiche_produit["type"] ;
                 }
                        //On affiche les entrées
                        echo '<li style="width:220px;">';
                        echo '<img src="'.nl2br($affiche_produit["avatar"]).'" alt="fsd " /><br/>';
                        echo '<p>'.nl2br($affiche_produit["nom"]).'<br>';
                        echo '<br/>'.nl2br($affiche_produit["descritpion"]).'';
                        echo '<br/>'.nl2br($affiche_produit["reference"]).'</p>';
                        echo '</li>';
                }
        }
}
?>

---------------------------------------
une rémarque en passant.dans le but de réutiliser ta fonction pour n'importe quel mois il faut réécrire autrement ta fonction en lui passant en paramètre la variable $mois qui sera transmise à la requête:
 function Fonction_filtres_mai( $mois )
{
        $result = mysql_query("SELECT * FROM UPLOAD WHERE  mois = '". $mois. "'  ORDER BY `type` ");
      
       return mysql_fetch_array($result) ;
}

Re: page de produit php mysql

Posté : 03 déc. 2013, 10:06
par WENKz
Bonjour !
je voudrais avoir le nom des catégorie comme séparation, j'ai voulu le faire en html mais ce n'est pas propre et ça ne s'adapte pas en fonction des mois si je réutilise le même code (car plus de produit dans certaine catégorie certain mois), j'avais déjà utiliser le même code au début quand j'ai commencé, mais par soucis de mise en page je ne pouvais pas. pendant deux jour j'ai tout retourné dans tous les sens du moins je le pense et la j'avoue que je commence a manqué d'idée, par la suite je devrais créer des filtres de recherche par mois et type de produit , pourrais tu me diriger vers quoi chercher ? la au niveau de l'affichage j'ai :


filtre :
filtre1 filtre2 filtre3
filtre4 filtre5 Casserole :
casserole1 casserole2 casserole3 .... etc

edit : je n'ai rien dit j'avais oublié de faire le css pour la balise h1 ;)
par contre order by 'type' oui mais je voudrais avoir un ordre bien spécifique car order by 'type' c'est par rapport a l'alphabet

Re: page de produit php mysql

Posté : 03 déc. 2013, 11:21
par WENKz
Simple juste a faire
$result = mysql_query(SELECT * FROM UPLOAD WHERE  mois = 'Mai'  ORDER BY FIELD(type, 'Filtres', 'Casseroles')");
merci de ton aide ^^ pour les messages précédent ! je mettrai résolu une fois mon projet finit au cas ou j'ai d'autre problème, je suis toujours a la recherche d'une solution pour les filtre de recherche .

Re: page de produit php mysql

Posté : 03 déc. 2013, 16:23
par yann18
pour construire la requête en fonction d'un critère donné il faut juste construire dynamiquement la requête en fonction du mois envoyé par l'utilisateur.
Pour ce qui est de l'affichage par type : on stocke dans un tableau à 2 dimensions le résultat de la requête.dans ce tableau la clé correspndra au type du produit et cette clé sera associée à un autre tableau qui contient des produits:
<?php
function filtrerParMois( $mois='' ) {

$where='';
if(!empty( $mois )  ){ //filtre par mois 
  $where.="WHERE mois ='".$mois."' ";
}
if(empty( $mois ) ){//le mois n'est pas renseigné alors on extrait toutes les lignes 
  $sql = "SELECT * FROM UPLOAD ORDER BY FIELD(`type`, 'Filtres', 'Casseroles')";
}else{//le mois est renseigné, on extrait les produits correspondants au mois
  $sql = "SELECT * FROM UPLOAD WHERE mois='".$mois."' ORDER BY FIELD(`type`, 'Filtres', 'Casseroles')";
}
//pour voir la requête construite
//echo $sql;
$result = mysql_query($sql);

while( $row=  mysql_fetch_array($result)){
 $produitTab[$row['type']][] = $row;
}
return  $produitTab;
}//fin

on peut appeler cette fonction pour voir les produits d'un mois donné
<?php
//pour le mois de juin
var_dump(filtrerParMois( 'juin' ) );

//pour tous les mois
var_dump(filtrerParMois( ) );

?>
et dans une page d'affichage html:
<?php
if(empty($_POST['mois']) )
 $prduitTab=filtrerParMois();
else
 $prduitTab=filtrerParMois($_POST['mois']);
?>


<?php if( !empty($prduitTab ) ) : ?>
<div class="categorie">
<?php
foreach($prduitTab as $type=>$produits ){
  echo "<h1> $type </h1>"; //on affiche le type
  foreach($produits as $poduit ){ //on affiche les produits du type correspondant à $type 
     echo '<p>'$produit["nom"].'</p>';
     echo '<p>'.nl2br($produit["descritpion"]).'</p>';
 }
}
?>                
</div>

<?php else: ?>
<p> aucun produit ne correspond à votre choix</p>
<?php endif; ?>

Re: page de produit php mysql

Posté : 03 déc. 2013, 21:14
par sirakawa
Il faudrait surtout et avant tout abandonner mysql qui est obsolète et sera abandonnée à terme au profit de mysqli ou PDO.

Re: page de produit php mysql

Posté : 04 déc. 2013, 11:08
par WENKz
Merci de tes réponses rapide Yann !

Re: page de produit php mysql

Posté : 05 déc. 2013, 15:19
par WENKz
bonjour !

mon projet presque aboutit je voudrais savoir comment sauvegarder ma sélection ex:
<form style="margin-left:15%"method="post" action="alpha.php" id="dummy">
				<select class="basic-example" name="mois">
					<option value="">Mois</option>
					<option value="Janvier">Janvier</option>
					<option value="Fevrier">Fevrier</option>
					<option value="Mars">Mars</option>
				 </select>
<select class="basic-example" name="type">
					<option value="">Catégories</option>
					<option value="Filtres ">Filtres </option>
					<option value="cassrole">cassrole</option>
</select>
<input type="submit" class="classsubmit"  value="Rechercher"/>
</form>

si je choisis le mois de janvier et clique sur rechercher que lorsque je me trouve sur les produit du mois de janvier que je puisse choisir Filtres du mois de janvier sans re-sélectionner janvier

Re: page de produit php mysql

Posté : 05 déc. 2013, 16:29
par yann18
bonjour,
l'attribut selected="selected" de html te donne l'option sélectionnée:
 <option value="Janvier" <?php echo  (isset($_POST['mois']) && $_POST['mois'] == 'Janvier') ? 'selected="selected"' : ''; ?>>Janvier</option>
 <option value="Fevrier" <?php echo  (isset($_POST['mois']) && $_POST['mois'] == 'Fevrier') ? 'selected="selected"' : ''; ?>>Fevrier</option>
<!--idem pour les autres mois et les types -->

Re: page de produit php mysql

Posté : 06 déc. 2013, 15:25
par WENKz
merci de ton aide !
maintenant j'ai un soucis avec jquery ^^ j'utilise un script qui me permet de faire descendre un module en meme temps de l'utilisateut

[javascript]<script type="text/javascript">
jQuery(document).ready(function(){
$(window).scroll(function () {
var rupture = $('#filtre').outerHeight() ;
if( $(window).scrollTop() > rupture ) {
$('#navaa').addClass('fixed');

} else {
$('#navaa').removeClass('fixed');
}
});
});
</script>[/javascript]
<head>
</head>
<body>
<header>
</header>
<div id="wrapper">
<div id="filtre">
</div>
<nav id="navaa">
</nav>
</div>
</body>
mon soucis est que le script prends effet dès que je dépasse <header> et pas <div id="filtre"> pour j'ai bien renseigné la bonne balise dans le javascript