Affichage de données
Posté : 13 oct. 2006, 00:11
Salut all ...
je me suis appercu d'une chose à l'utilisation de mon script ...
il me manque des infos à l'affichage ... je viens de tilter donc que mes astuces pouvais correspondrent à plusieurs OS ... par exemple ... astuce1 correspond à OS1, OS2, OS3; astuce2 correspond à OS2, OS3, OS5 etc ...
j'ai modifier ma table de facon à integrer les nouveaux champs nommés os2 os3 etc .. mais ma requete ne fonctionne evidament pas dans l'état ...
j'ai donc essayer de modifier :
je cale apres plusieurs essais ...
avec l'exemple suivant ,
astuce1 correspond a OS1, OS2, OS3,
en selectionnant OS1 ou OS2 ou OS3 dans la liste déroulante "os" on doit avoir la même astuce qui reviens ... mais ne pas avoir de doublon en affichant les astuces sans variable de déclarée à l'arrivée sur la page ...
En fait le but est que les visiteurs puissent faire des choix,
Les résultats decoulent bien evidament de ces choix, 4 possibilités s'offrent aux visiteurs :
1- je ne choisis pas et j'affiche toutes les astuces pour tous les OS
2- je choisis un OS et affiches toutes les astuces de toutes les catégories pour cet OS
3- je choisis une catégorie et j'affiche toutes les astuces pour tous les OS dans cette catégorie
4- je choisis une catégorie et un OS et j'affiche ce qui correspond aux 2 choix
merci d'avance
ps: je met le code le la page concernee pour les interessés
je me suis appercu d'une chose à l'utilisation de mon script ...
il me manque des infos à l'affichage ... je viens de tilter donc que mes astuces pouvais correspondrent à plusieurs OS ... par exemple ... astuce1 correspond à OS1, OS2, OS3; astuce2 correspond à OS2, OS3, OS5 etc ...
j'ai modifier ma table de facon à integrer les nouveaux champs nommés os2 os3 etc .. mais ma requete ne fonctionne evidament pas dans l'état ...
j'ai donc essayer de modifier :
$sql = creer_requete('SELECT * FROM astuces', 'categorie', $choix1, 'os', $choix2);
en :
$sql = creer_requete('SELECT * FROM astuces', 'categorie', $choix1, 'os', $choix2, 'os2', $choix2, 'os3', $choix2, 'os4', $choix2, 'os5', $choix2);
mais evidament ... ca ne fonctionne pas ...je cale apres plusieurs essais ...
avec l'exemple suivant ,
astuce1 correspond a OS1, OS2, OS3,
en selectionnant OS1 ou OS2 ou OS3 dans la liste déroulante "os" on doit avoir la même astuce qui reviens ... mais ne pas avoir de doublon en affichant les astuces sans variable de déclarée à l'arrivée sur la page ...
En fait le but est que les visiteurs puissent faire des choix,
Les résultats decoulent bien evidament de ces choix, 4 possibilités s'offrent aux visiteurs :
1- je ne choisis pas et j'affiche toutes les astuces pour tous les OS
2- je choisis un OS et affiches toutes les astuces de toutes les catégories pour cet OS
3- je choisis une catégorie et j'affiche toutes les astuces pour tous les OS dans cette catégorie
4- je choisis une catégorie et un OS et j'affiche ce qui correspond aux 2 choix
merci d'avance
ps: je met le code le la page concernee pour les interessés
<td><p align="center">
<form method="post" action="astuces-test.php">
<table width="100%" height="168" border="0" align="center">
<tr>
<td colspan="2" align="right" valign="top"><p align="center">Catégorie :
<select name="choix1">
<option value="" selected="selected">Toutes catégorie</option>
<option value="optimisation">Optimisation</option>
<option value="systeme">Système</option>
<option value="securite">Sécurité</option>
<option value="internet">Internet</option>
<option value="reseau">Réseau</option>
<option value="personalisation">Personalisation</option>
<option value="autres">Autres</option>
</select>
<br>
<br>
O.S. :
<select name="choix2">
<option value="" selected="selected">Tout OS</option>
<option value="winnt">Windows NT</option>
<option value="win2k">Windows 2000</option>
<option value="winxphome">Windows XP Familial</option>
<option value="winxppro">Windows XP Pro</option>
<option value="win2003serveur">Windows 2003 Serveur</option>
<option value="win98">Windows 98</option>
<option value="win95">Windows 95</option>
</select>
<br>
<br>
</p>
<div align="center">
<input name="submit" type="submit" value="Ok" />
</div>
<div align="left"><br />
<br />
<?php
//--------------------------------------------------------------------------------------
function creer_requete()
{
// Traitement des arguments (fonction à nombre d'arguments variable)
// arg(0) : requête initiale
// arg(1) : nom de la colonne à tester, arg(2) variable contenant la valeur de la colonne arg(1)
// etc...
// Usage : $sql = creer_requete("SELECT * FROM astuces", 'categorie', $choix1, 'os', $choix2);
$n_args = func_num_args();
if ($n_args==0) return ""; // Pas assez d'arguments
$req = func_get_arg(0);
if ($n_args==1) return ""; // Retour, aucun critère défini
if (!($n_args % 2)) return ""; // Nombre d'arguments pairs, pas bon
// On va mettre dans le tableau $choix, toutes les valeurs de colonne non vides
$choix = array();
for ($i=1; $i<$n_args; $i+=2) {
$c = func_get_arg($i); $v = func_get_arg($i+1);
if (!empty($v)) $choix[$c] = $v;
}
$n = count($choix);
if ($n==0) return ""; // Aucune valeur de colonne n'était définie
// La requête se forge ici
$req.=' WHERE ';
foreach($choix as $cle => $valeur) $req.="$cle ='$valeur' AND ";
return substr($req,0,-5); // Supprime le dernier " AND "
}
//--------------------------------------------------------------------------------------
mysql_connect("localhost", "", "");
mysql_select_db("");
$sql = creer_requete('SELECT * FROM astuces', 'categorie', $choix1, 'os', $choix2);
if (empty($sql)) {
$reponse = mysql_query("SELECT * FROM astuces LIMIT 0,20") OR die ("Impossible d'exécuter la requête : ".mysql_error());
echo '</ul>';
while ($donnees = mysql_fetch_array($reponse))
{
echo '<li style="margin: 0px;"><a href="affichage.php?id='.$donnees[id].'" class="sidelink">'.$donnees[titre].'</a></li>';
}
echo '</ul>';
} else {
$reponse = mysql_query($sql) OR die ("Impossible d'exécuter la requête : ".mysql_error());
echo '<ul>';
while ($donnees = mysql_fetch_array($reponse))
{
echo '<li style="margin: 0px;"><a href="affichage.php?id='.$donnees[id].'" class="sidelink">'.$donnees[titre].'</a></li>';
}
echo '</ul>';
}
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
</div></td>