8797 sujets

Développement web côté serveur, CMS

Voila j'ai deux combobox : theme et plateforme pour faire un tri sur la table jeux, je peux soit imposer que les deux champs soit remplis ou l'un ou l'autre mais par les deux paramètres en même temps, comment faire un mélange des deux sur le même jeu d'enregistrement ?


----si 2 combobox remplis
SELECT *
FROM jeux
WHERE theme = coltheme AND plateforme = colplateforme

OU

---si l'un des 2 combobox remplis
SELECT *
FROM jeux
WHERE theme = coltheme OR plateforme = colplateforme

De plus dans mes combobox la première ligne est "Votre choix" peut on définir que si les deux champs ne sont pas remplis alors on affiche tous les jeux sans tri spécifique ?

Merci de votre aide
Salut,

euh... pas sûr d'avoir bien compris mais au cas où :
<?php
require_once('connexion.php');
mysql_query('SET NAMES UTF8');
// Récupération des thèmes
$sql = 'SELECT DISTINCT theme FROM jeux ORDER BY theme';
$result = mysql_query($sql) or die(mysql_error());
$themes[-1] = 'Sélectionner un thème';
$nb_themes = mysql_num_rows($result);
while($row = mysql_fetch_assoc($result)) {
	$themes[] = $row['theme'];
}
// Récupération des plateformes
$sql = 'SELECT DISTINCT plateforme FROM jeux ORDER BY plateforme';
$result = mysql_query($sql) or die(mysql_error());
$plateformes[-1] = 'Sélectionner une plateforme';
$nb_plateformes = mysql_num_rows($result);
while($row = mysql_fetch_assoc($result)) {
	$plateformes[] = $row['plateforme'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Test</title>
</head>
<body>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	$select_theme = false;
	$select_plateforme = false;
	$theme = isset($_POST['theme']) ? intval($_POST['theme']) : -1;
	if($theme >= 0 && $theme <= $nb_themes) $select_theme = true;
	$plateforme = isset($_POST['plateforme']) ? intval($_POST['plateforme']) : -1;
	if($plateforme >= 0 && $plateforme <= $nb_plateformes) $select_plateforme = true;
	if(!($select_theme) && !($select_plateforme)) {	// aucune sélection
		$sql = 'SELECT nom_jeu, theme, plateforme FROM jeux ORDER BY nom_jeu';
	} elseif (($select_theme) && !($select_plateforme)) {	// theme sélectionné - plateforme non sélectionnée
		$sql = "SELECT nom_jeu, theme, plateforme FROM jeux WHERE theme = '$themes[$theme]' ORDER BY nom_jeu";
	} elseif (!($select_theme) && ($select_plateforme)) {	// theme non sélectionné - plateforme sélectionnée
		$sql = "SELECT nom_jeu, theme, plateforme FROM jeux WHERE plateforme = '$plateformes[$plateforme]' ORDER BY nom_jeu";
	} else {	// theme sélectionné - plateforme sélectionnée
		$sql = "SELECT nom_jeu, theme, plateforme FROM jeux WHERE theme = '$themes[$theme]' AND plateforme = '$plateformes[$plateforme]' ORDER BY nom_jeu";
	}
	echo "<h1>Jeux</h1>\n";
	$result = mysql_query($sql) or die(mysql_error());
	if(mysql_num_rows($result)==0) {
		echo "<p>Aucun résultat</p>\n";
	} else {
		echo "<ul>\n";
		while($row = mysql_fetch_assoc($result)) {
			echo '<li>'.$row['nom_jeu'].' ('.$row['theme'].') sur '.$row['plateforme'].".</li>\n";
		}
		echo "</ul>\n";
	}
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
	<p>
<?php if($nb_themes > 0) : ?>
	<select name="theme">
<?php
for($i = -1; $i < $nb_themes; $i++) {
	echo "\t\t<option value=\"$i\">$themes[$i]</option>\n";
}
?>
	</select>
<?php endif; ?><?php if($nb_themes > 0) : ?>
	<select name="plateforme">
<?php
for($i = -1; $i < $nb_plateformes; $i++) {
	echo "\t\t<option value=\"$i\">$plateformes[$i]</option>\n";
}
?>
	</select>
<?php endif; ?>
	<input type="submit" value="Soumettre" />
	</p>
</form>
</body>
</html>