par
Cyrano » 21 sept. 2006, 08:20
Je ne suis pas sûr de comprendre pourquoi tu veux remplacer cette partie, mais on peut commencer par nettoyer un peu le code et ranger ça plus convenablement en séparant correctement le PHP du HTML. Première proposition:
<?php
$db = mysql_connect('localhost', '*****', '******');
mysql_select_db('*****',$db);
// Combien d'entrées dans la table ?
$sql1 = "SELECT COUNT(*) AS categorie ".
"FROM item ".
"WHERE categorie = 'carte mère'";
$retour = mysql_query($sql);
$donnees = mysql_fetch_array($retour);
?>
<h2>Il y a présentement <?php echo($donnees['categorie']); ?> items affichés sur cette page</h2>
<h5>Cliquez sur une image pour plus de détails</h5>
<?php
$sql = "SELECT web, photo, brand, model, type, description_FR, Price, special, commentaire ".
"FROM item";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
// affichage du début de la table
?>
<table border="1" align="left" >
<tr>
<th bgcolor='#CFFEFE'> Image </th>
<th bgcolor='#CFFEFE'> Compagnie </th>
<th bgcolor='#CFFEFE'> Modèle </th>
<th bgcolor='#CFFEFE'> type </th>
<th bgcolor='#CFFEFE'> Description </th>
<th bgcolor='#CFFEFE'> Prix </th>
<th bgcolor='#CFFEFE'> En spécial </th>
<th bgcolor='#CFFEFE'> Commentaire </th>
</tr>
<?php
while(false != ($data = mysql_fetch_array($req)))
{
// affichage des lignes de la table
?>
<tr>
<td align="left" valign="middle" width="17">
<a target="_blank" href= "<?php echo($data['web']); ?>"> <img src="cartes_mere/<?php echo($data['photo']); ?>" alt=""></a>
</td>
<td align="left" valign="middle" width="50"><?php echo($data['brand']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['model']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['type']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['description_FR']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['Price']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['special']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['commentaire']); ?></td>
</tr>
<?php
}
// affichage de la fin de la table
?>
</table>
<?php
mysql_close();
?>
Ce que je ne comprends pas c'est qu'au départ, tu compte seulement selon une clause "
WHERE categorie LIKE 'carte mère'" mais ensuite tu récupères tout sans clause de tri.
Un détail : évite systématiquement le "
SELECT * " : ne récupère QUE les champs dont tu as besoin, tu gagneras en performances.
D'autre part, dans ta première requête de comptage, le LIKE ne sert à rien si tu n'utilises pas de joker : dans ce cas, le "=" est plus approprié. Sinon, ce sera "LIKE 'carte mère%' et là ce sera logique si tu as des catégories comme par exemple "carte mère ASUS" ou "carte mère autre chose". Mais si la colone pour cette catégorie ne contient pas autre chose que "carte mère", alors le "=" s'impose.
Je ne suis pas sûr de comprendre pourquoi tu veux remplacer cette partie, mais on peut commencer par nettoyer un peu le code et ranger ça plus convenablement en séparant correctement le PHP du HTML. Première proposition:
[php]<?php
$db = mysql_connect('localhost', '*****', '******');
mysql_select_db('*****',$db);
// Combien d'entrées dans la table ?
$sql1 = "SELECT COUNT(*) AS categorie ".
"FROM item ".
"WHERE categorie = 'carte mère'";
$retour = mysql_query($sql);
$donnees = mysql_fetch_array($retour);
?>
<h2>Il y a présentement <?php echo($donnees['categorie']); ?> items affichés sur cette page</h2>
<h5>Cliquez sur une image pour plus de détails</h5>
<?php
$sql = "SELECT web, photo, brand, model, type, description_FR, Price, special, commentaire ".
"FROM item";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
// affichage du début de la table
?>
<table border="1" align="left" >
<tr>
<th bgcolor='#CFFEFE'> Image </th>
<th bgcolor='#CFFEFE'> Compagnie </th>
<th bgcolor='#CFFEFE'> Modèle </th>
<th bgcolor='#CFFEFE'> type </th>
<th bgcolor='#CFFEFE'> Description </th>
<th bgcolor='#CFFEFE'> Prix </th>
<th bgcolor='#CFFEFE'> En spécial </th>
<th bgcolor='#CFFEFE'> Commentaire </th>
</tr>
<?php
while(false != ($data = mysql_fetch_array($req)))
{
// affichage des lignes de la table
?>
<tr>
<td align="left" valign="middle" width="17">
<a target="_blank" href= "<?php echo($data['web']); ?>"> <img src="cartes_mere/<?php echo($data['photo']); ?>" alt=""></a>
</td>
<td align="left" valign="middle" width="50"><?php echo($data['brand']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['model']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['type']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['description_FR']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['Price']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['special']); ?></td>
<td align="left" valign="middle" width="50"><?php echo($data['commentaire']); ?></td>
</tr>
<?php
}
// affichage de la fin de la table
?>
</table>
<?php
mysql_close();
?>[/php]
Ce que je ne comprends pas c'est qu'au départ, tu compte seulement selon une clause "[i]WHERE categorie LIKE 'carte mère'[/i]" mais ensuite tu récupères tout sans clause de tri. :-k
Un détail : évite systématiquement le "[i]SELECT * [/i]" : ne récupère QUE les champs dont tu as besoin, tu gagneras en performances.
D'autre part, dans ta première requête de comptage, le LIKE ne sert à rien si tu n'utilises pas de joker : dans ce cas, le "=" est plus approprié. Sinon, ce sera "LIKE 'carte mère%' et là ce sera logique si tu as des catégories comme par exemple "carte mère ASUS" ou "carte mère autre chose". Mais si la colone pour cette catégorie ne contient pas autre chose que "carte mère", alors le "=" s'impose.