[PHP] Afficher selon attribut de visibiliter

Fermé
Lilie - 24 févr. 2006 à 14:04
 Lilie - 10 mars 2006 à 10:20
Bonjour!

Je suis en bonne voie pour création d'un catalogue. Les produit sont sélectionné selon un critère de visibilité : table visibilite_produit dans BdD, chiffre 1 attribué quand visible, chiffre 0 attribué quand non visible.

Le code de base (sans visibilité attribuée) qui fonctionne parfaitement, est le suivant :

<---DEBUT--->

// sélection de la table et des colonnes choisies
$marequete = "SELECT ref_produit , description_produit , categorie_produit , famille_produit , url_produit FROM produit WHERE famille_produit LIKE '%".$cat."%' ";
$result = mysql_query($marequete, $connect) or die(mysql_error());


// on détermine la catégorie traitée
$cat_traitee="";
echo ('<table width="500" border="0" cellspacing="0" cellpadding="0" align="center" valign="top">');
while ($row=mysql_fetch_array($result)) {
$etiquette=$row[2];

if ($etiquette == $cat_traitee) {
echo ('<tr valign="top" > ');
echo ('<td valign="top">');
echo ('<table border="0" valign="top" cellspacing="1" cellpadding="0" bgcolor="#FFFFFF">');
echo ('<tr valign="top" class="tableau">');
echo ('<td width="100" valign="top"><a href="'.$row[4].'" target=_blank ><span class="lienrapide">'.$row[0].'</span></a></td>');
echo ('<td height="15" valign="top">'.$row[1].'</td>');

echo ('</tr>');
echo ('</table>');
echo ('</td>');
echo ('</tr>');


$cat_traitee=$etiquette;

}

<---FIN--->

J'ai d'abord tenté de rajouter l'information visibilite_produit dans le SELECT, en spécifiant en fin de ligne qu'il fallait prendre les visibilité 1 (mais peut être ai-je mal écrit...).
Voyant que rien ne se passait, j'ai essayé
$visibilite=$row[5]
et spécifié que si $visibilite est 1 (dans le if suivant), il fallait afficher.

Mais rien n'y fait.

Je m'y prends peut être mal dans la rédaction du code.
Si quelqu'un pouvait m'aider, j'en serais ravie car je ne vois vraiment pas d'où cela peut venir et cela est horripilant car je suis sûre que c'est trois fois rien.

Merci beaucoup d'avance.
Lilie
A voir également:

2 réponses

Utilisateur anonyme
24 févr. 2006 à 17:20
Hello,
Non non, ta méthode est la bonne. :)
Tu as du faire une petite faute de frappe...
0
Utilisateur anonyme
24 févr. 2006 à 17:20
Copie/colle le code que tu as modifié, stp.
0
Merci d'avoir répondu et de m'aider!

Voilà ce que j'ai fait :

$marequete = "SELECT ref_produit , description_produit , categorie_produit , famille_produit , url_produit FROM produit WHERE famille_produit LIKE '%".$cat."%' AND visibilite_produit==1 ";

Je suis en effet persuadée qu'il s'agit d'une faute de frappe. Je suis entièrement autodidacte en code, par nécessité puisque mon domaine de prédilection, c'est l'infographie :/ donc, les erreurs sont fréquentes..
0
Utilisateur anonyme
24 févr. 2006 à 17:41
C'était pas grand chose, un petit "=" de trop... :)

// sélection de la table et des colonnes choisies 
$marequete = "SELECT ref_produit , description_produit , categorie_produit , famille_produit , url_produit 
							FROM produit 
							WHERE famille_produit LIKE '%".$cat."%' AND visibilite_produit = 1"; 
$result = mysql_query($marequete, $connect) or die(mysql_error()); 


// on détermine la catégorie traitée 
$cat_traitee=""; 
echo ('<table width="500" border="0" cellspacing="0" cellpadding="0" align="center" valign="top">'); 
while ($row=mysql_fetch_array($result)) { 
	$etiquette = $row[2]; 
	
	if ($etiquette == $cat_traitee) { 
	echo ('
	<tr valign="top" >
		<td valign="top">
			<table border="0" valign="top" cellspacing="1" cellpadding="0" bgcolor="#FFFFFF">
			<tr valign="top" class="tableau">
				<td width="100" valign="top"><a href="'.$row[4].'" target=_blank ><span class="lienrapide">'.$row[0].'</span></a></td>
				<td height="15" valign="top">'.$row[1].'</td>
			</tr>
			</table>
		</td>
	</tr>'); 
	$cat_traitee=$etiquette; 
} 


J'en ai profité pour passer un coup d'éponge dans le code... Restons propre. :)
0
Utilisateur anonyme > Utilisateur anonyme
24 févr. 2006 à 17:42
Bon, l'indentation n'apparait pas bien à l'ecran mais si tu copies/colles ça tel quel dans ton editeur, ca devrait etre OK. :)

A+, bon courage !
0
Lilie > Utilisateur anonyme
24 févr. 2006 à 17:51
Merci, je vois ce que tu veux dire, c'est vrai que c'est plus lisible ainsi, je tâcherai de travailler ainsi à l'avenir :)

Mais quant à l'exécution du code, je dois dire qu'il n'y a aucun changement :( mais au moins, grâce à toi, je sais qu'il faut que je vire des "=" un peu partout dans mon code XD

je vais bosser un peu là-dessus et tiendrai au courant de l'évolution du problème.
Merci beaucoup!!!
0
Lilie > Utilisateur anonyme
10 mars 2006 à 10:20
Bonjour,

Juste en passant : le code a finalement fonctionné après une mise à jour de MsSQL.

Encore merci!

Lilie
0