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 :

probleme de sélection de variable [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut probleme de sélection de variable
    Bonjour,

    alors voila, je fais une requete pour sélectionner le prix d'un produit promo ou non,

    donc ca marche correctement sauf quand c'est une promotion, il n'affiche que le prix sans promo...

    Voici mon code de sélection mysql du fichier article.lib.php :

    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
    function searchArticle($idGamme,$idCategorie,$idSCategorie,$idFamille,$idSFamille,$search,$page,$order) {
     
    	/* 
    	 * MOTEUR DE RECHERCHE DE LA TABLE ARTICLE
    	 * Entrées : Identifiant de la gamme, Identifiant de la rubrique, Identifiant de la catégorie, Valeur de la recherche, Page de la liste, Type de tri
    	 * Sorties : Renvoie la requete contenant tous les champs de la table Article associé à sa taxe, sa gamme et sa catégorie,
    	 * et le nombre de résultat obtenu
    	 */
     
     
     
    	$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,PROMO_ARTICLE";
    	$sql.=", ROUND(ta.prix_vente_article * (1 + tt.valeur_taxe),2) AS prix_vente_ttc";
    	$sql.=", tt.valeur_taxe";
    	$sql.=", tg.nom_gamme";
    	$sql.=", tc.nom_categorie";
    	$sql.=", tfp.nom_famille, tf.nom_famille AS nom_sfamille";
    	$sql.=" FROM ".TABLE_ARTICLE."  ta, ".TABLE_CATEGORIE." tc, ".TABLE_GAMME." tg, ".TABLE_TAXE." tt, FAMILLE tf , FAMILLE tfp";
    	$sql.=" WHERE tg.id_gamme = ta.id_gamme";
    	$sql.=" AND tc.id_categorie = ta.id_categorie";
    	$sql.=" AND tt.id_taxe = ta.id_taxe";
    	$sql.=" AND tf.id_famille = ta.id_famille";
    	$sql.=" AND tfp.id_famille = tf.parent_id_famille";
    	// Verification que l'article est bien valide
    	$sql.=" AND ta.afficher_article = 1";
    	$sql.=" 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);
    }


    et voici ma page liste.php :

    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
    <?
    	$i=0;
    	//* AFFICHE LA LISTE DES PRODUITS *//
    	while($arrArticle=mysql_fetch_array($reqSearchArticle)) {
     
    	?>
    [...]
     
    <?
    			if($arrArticle['PROMO_ARTICLE']==0)
    				{
    				echo $arrArticle['prix_vente_ttc'];
    				echo "&euro;</strong>";
    				}
    				else
    				{
    				$timestamp = time();
    				$sqltemp='SELECT * FROM mbm_promo WHERE Produit_id='.$arrArticle["id_article"].'AND StampDebut <= '.$timestamp.' AND StampFin >= '.$timestamp.'';
    				$reptemp=mysql_query($sqltemp) or die("Erreur sql, requete : $sql<br/>Erreur: ". mysql_error());
    				$newtemp=mysql_fetch_array($reptemp,MYSQL_ASSOC);
     
    				if($reptemp == NULL)
    					{
    					echo $arrArticle['prix_vente_ttc'];
    					echo "&euro;</strong>";}
    					else
    					{				
    				echo $newtemp["prix_promo"];
    				echo '&euro;</strong> au lieu de <strike>';
    				echo $arrArticle['prix_vente_ttc'];
    				echo "&euro;</strike>";
    					}
     
    				}
     
    			?>

    Je ne vois pas pourquoi ca ne marche pas d'afficher le prix promo..

    quelqu'un a une idée ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Si tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $arrArticle['PROMO_ARTICLE'];
    avant ton if qu'obtiens tu ?

  3. #3
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    C'est bizarre que cette colonne là ne soit pas de la même casse que les autres non?

    T'as pas un soucis là dessus?

  4. #4
    Membre confirmé
    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
    Par défaut
    ben je n'obtiens rien du tout de différent... comme si je l'avais pas écris !!

    tu vois ou est le probleme dans mon code ?

    ps : et pour la casse c'est normal, je modifie un site la et j'ai l'habitude de mettre les noms des colonnes dans mysql en GRANDS et pas en petit comme le mec qui avait fait les autres colonnes

  5. #5
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par Larffas Voir le message
    ben je n'obtiens rien du tout de différent... comme si je l'avais pas écris !!

    tu vois ou est le probleme dans mon code ?

    Bah nan je cherche justement...

    Si tu mets le echo en premier juste après ton while qu'obtiens tu ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while($arrArticle=mysql_fetch_array($reqSearchArticle)) {
       echo "--> " . $arrArticle['PROMO_ARTICLE'] . " <--";
    Modifie ça aussi pour voir si la requête passe bien au moins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req=mysql_query($sql) or die(mysq_error());

  6. #6
    Membre confirmé
    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
    Par défaut
    alors la ca m'affiche bien 0 si le produit n'est pas en promo et 1 s'il l'est devant chaque produit de la liste.


    Mais le probleme c'est qu'au niveau du prix le mysql error me renvoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1Erreur sql, requete : SELECT TITRE_PAGE_FAMILLE, META_KEYWORDS_FAMILLE, META_DESCRIPTION_FAMILLE FROM FAMILLE WHERE ID_FAMILLE='0'
    Erreur: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'StampDebut <= 1192695652 AND StampFin >= 1192695652' at line 1
    donc a priori le probleme est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $timestamp = time();
    				$sqltemp='SELECT * FROM mbm_promo WHERE Produit_id='.$arrArticle["id_article"].'AND StampDebut <= '.$timestamp.' AND StampFin >= '.$timestamp.'';
    				$reptemp=mysql_query($sqltemp) or die("Erreur sql, requete : $sql<br/>Erreur: ". mysql_error());
    				$newtemp=mysql_fetch_array($reptemp,MYSQL_ASSOC);

  7. #7
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Il te manque un espace avant le premier AND.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/11/2005, 12h59
  2. petit problem de transfer de variable entre page
    Par Damarus dans le forum Langage
    Réponses: 8
    Dernier message: 11/09/2005, 12h56
  3. Réponses: 3
    Dernier message: 01/09/2005, 11h56
  4. [web] Probleme de passe de variable qd j utilise un module TK
    Par Slippers dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 19/04/2005, 17h48
  5. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37

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