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 :

affichage liste : pas de sortie [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Points : 73
    Points
    73
    Par défaut affichage liste : pas de sortie
    Bonjour,

    Voila donc j'ai créé une page de promotion pour une boutique en ligne, le probleme est que je souhaiterait afficher les promotions sur les articles dans une page qui liste les articles d'une catégorie donnée.

    Voici plus en détails le probleme :


    premierement sur ma page liste.php j'ai cette requete de recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($reqSearchArticle,$statSearchArticle) = searchArticle($_GET['gamme'],$_GET['categorie'],$_GET['scategorie'],$_GET['famille'],$_GET['sfamille'],$_GET['search'],$_GET['page'],$_GET['order']);
    Cela appel la fonction searchArticle() qui se trouve dans une page inclus dans la page liste.php

    cette page est article.lib.php et voici la requete de cette fonction :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    function searchArticle($idGamme,$idCategorie,$idSCategorie,$idFamille,$idSFamille,$search,$page,$order) {
     
     
    $sql="SELECT id_article, ta.id_taxe, ref_article, nom_article, description_article, prix_achat_article, bienfaits_article, conseils_article, ROUND(prix_vente_article,2) AS prix_vente_ht, afficher_article, gerer_stock_article, stock_max_article, stock_min_article, quantite_article, unite_gestion_article, conditionnement_article, conditionnement_vente_article, composition_article, poids_article, image1_article, image2_article, doc_article, date_ajout_article, date_modif_article, date_valid_article, statut_article, zoom_article, ta.id_gamme, ta.id_categorie, hit_article, port_offert
    , ROUND(ta.prix_vente_article * (1 + tt.valeur_taxe),2) AS prix_vente_ttc, mbm_promo.prix_promo
    , tt.valeur_taxe
    , tg.nom_gamme
    , tc.nom_categorie
    , tfp.nom_famille, tf.nom_famille AS nom_sfamille
     FROM ".TABLE_ARTICLE."  ta, ".TABLE_CATEGORIE." tc, ".TABLE_GAMME." tg, ".TABLE_TAXE." tt, FAMILLE tf , FAMILLE tfp
     LEFT JOIN mbm_promo ON A.id_ARTICLE = mbm_promo.produit_id
     WHERE mbm_promo.produit_id IS NULL 
     AND tg.id_gamme = ta.id_gamme
     AND tc.id_categorie = ta.id_categorie
     AND tt.id_taxe = ta.id_taxe
     AND tf.id_famille = ta.id_famille
     AND tfp.id_famille = tf.parent_id_famille
     AND ta.afficher_article = 1
     AND (ta.date_valid_article='0000-00-00 00:00:00' OR ta.date_valid_article > NOW())
    UNION SELECT id_article, ta.id_taxe, ref_article, nom_article, description_article, prix_achat_article, bienfaits_article, conseils_article, ROUND(prix_vente_article,2) AS prix_vente_ht, afficher_article, gerer_stock_article, stock_max_article, stock_min_article, quantite_article, unite_gestion_article, conditionnement_article, conditionnement_vente_article, composition_article, poids_article, image1_article, image2_article, doc_article, date_ajout_article, date_modif_article, date_valid_article, statut_article, zoom_article, ta.id_gamme, ta.id_categorie, hit_article, port_offert
    , ROUND(ta.prix_vente_article * (1 + tt.valeur_taxe),2) AS prix_vente_ttc
    , tt.valeur_taxe
    , tg.nom_gamme
    , tc.nom_categorie
    , tfp.nom_famille, tf.nom_famille AS nom_sfamille, mbm_promo.prix_promo
     FROM ".TABLE_ARTICLE."  ta, ".TABLE_CATEGORIE." tc, ".TABLE_GAMME." tg, ".TABLE_TAXE." tt, FAMILLE tf , FAMILLE tfp, mbm_promo
     INNER JOIN mbm_promo p ON ARTICLE.id_ARTICLE = mbm_promo.produit_id
     WHERE tg.id_gamme = ta.id_gamme
     AND tc.id_categorie = ta.id_categorie
     AND tt.id_taxe = ta.id_taxe
     AND tf.id_famille = ta.id_famille
     AND tfp.id_famille = tf.parent_id_famille
     AND ta.afficher_article = 1
     AND (ta.date_valid_article='0000-00-00 00:00:00' OR ta.date_valid_article > NOW())";
     
     
    	// Critères de recherche
    	if($idGamme>0) $sql.=" AND ta.id_gamme = '".$idGamme."'";
    	if($idCategorie!=0) $sql.=" AND tc.id_categorie = '".$idCategorie."'";
    	if($idFamille!=0) $sql.=" AND tf.parent_id_famille = '".$idFamille."'";
    	if($idSFamille!=0) $sql.=" AND tf.id_famille = '".$idSFamille."'";
    	if(!empty($search)) $sql.=" AND (ta.nom_article LIKE '%".$search."%' OR ta.bienfaits_article LIKE '%".$search."%' OR ta.conseils_article LIKE '%".$search."%' OR ta.composition_article LIKE '%".$search."%')";
     
    	// Calcul du nombre de résultats
    	$req=mysql_query($sql);
    	$nbResultat = mysql_num_rows($req);
     
    	// Critères de tri
    	switch($order) {
    		case 1: // Nom
    			$sql.=" ORDER BY ta.nom_article";
    			break;
    		case 2: // Gamme
    			$sql.=" ORDER BY tg.nom_gamme, ta.nom_article";
    			break;
    		case 3: // Rubrique
    			$sql.=" ORDER BY tfp.nom_famille, ta.nom_article";
    			break;
    		case 4: // Catégorie
    			$sql.=" ORDER BY tc.nom_categorie, ta.nom_article";
    			break;
    		case 5: // Prix
    			$sql.=" ORDER BY prix_vente_ttc, ta.nom_article";
    			break;
    		default:
    			$sql.=" ORDER BY rang_article, ta.nom_article";
    			break;
    	}
     
    	// Critères de limit
    	$limit = $GLOBALS['resultatParPage'] * ($page-1);
    	$sql.=" LIMIT ".$limit.", ".$GLOBALS['resultatParPage'];
    	//echo $sql;
    	// Calcul les stats relatifs ç la recherche
    	$debutArticle = $limit+1;
    	$finArticle = $GLOBALS['resultatParPage'];
    	if($finArticle>$nbResultat) $finArticle=$nbResultat;
    	$statResultat = array('debut_article' => $debutArticle,'fin_article' => $finArticle,'nb_article' => $nbResultat);
     
    	return array(mysql_query($sql),$statResultat);
    }

    ensuite dans ma page liste.php, j'attribue ce que j'ai renvoyé à une variable pour l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($arrArticle=mysql_fetch_array($reqSearchArticle)) {

    Et quand je utilise cette variable pour afficher le prix de l'article normal ou en promotion dans liste.php toujours :

    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
    <td height="25" valign="bottom">PrixTTC : <strong>
     
    <?php
    			if(empty($arrArticle['prix_promo']))
    				{
    				echo $arrArticle['prix_vente_ttc'];
    				echo "&euro;</strong>";
    				}
    				else
    				{
    				echo $arrArticle['prix_promo'];
    				echo "&euro;</strong> au lieu de <strike>";
    				echo $arrArticle['prix_vente_ttc'];
    				echo "&euro;</strike>";
    				}
     
     
    			 ?>
    </td>

    Le probleme est que quand je fais cela, la liste des produits ne s'affiche pas.
    Seuls les pages 1 2 3 4 ... s'affiche avec la bonne quantité pour le nombre de produits....

    Comment cela se fait ?

    Merci d'avance

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Ça semble évidemment provenir de $limit, mais je ne vois pas d'erreurs..
    tu devrai peut être faire un select count ? ça peut te servir à afficher le nombre de pages de résultats

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Points : 73
    Points
    73
    Par défaut
    comme je l'ai dit la quantité de page s'affiche ...

    Vous croyez vraiment que ca peut provenir de $limit qui permet de définir la quantité de page alors que c'est l'affichage de la selection qui ne marche pas ?

    Mais si vous pensez toujours que c'est à cause de $limit sachant cela, je veux bien essayé de me servir de COUNT() mais je ne vois pas ce que COUNT pourra changer dans cet affichage ...


    Merci en tout cas pour l'aide

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

Discussions similaires

  1. Affichage d'un nombre pas encore sorti en vb6 pour loto associatif
    Par montity54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/02/2015, 23h01
  2. Package Listings : Pas d'affichage !
    Par GatH7614 dans le forum Mise en forme
    Réponses: 1
    Dernier message: 04/12/2009, 18h28
  3. [VB6] Bug d'affichage liste déroulante
    Par yttrium dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/05/2006, 08h45
  4. [Forms 6i] Update -> Pas de sortie en Exception
    Par macben dans le forum Oracle
    Réponses: 14
    Dernier message: 27/12/2005, 12h17
  5. [xsl]affichage liste de 2 couleurs
    Par megane dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 28/06/2004, 09h30

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