Recherche croisée SQL
Résolu/Fermé
Evengeline
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
-
25 juil. 2011 à 10:06
Evengeline Messages postés 117 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 21 octobre 2016 - 20 mars 2012 à 08:39
Evengeline Messages postés 117 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 21 octobre 2016 - 20 mars 2012 à 08:39
A voir également:
- Recherche croisée SQL
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Tableau croisee dynamique - Guide
- Recherche adresse - Guide
- Recherche image - Guide
- Je recherche une chanson - Guide
4 réponses
Bruce Willix
Messages postés
11968
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2 591
25 juil. 2011 à 10:10
25 juil. 2011 à 10:10
Soyons clairs pour commencer: tu veux du SQL ou du PHP ?
Paske c'est similaire sur certains points, mais différent quand même :-)
Paske c'est similaire sur certains points, mais différent quand même :-)
Evengeline
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
4
25 juil. 2011 à 10:18
25 juil. 2011 à 10:18
Je préférerais du SQL puisque j'ai une base de données assez conséquente derrière, mais si tu connais la solution qu'en php je prend aussi volontier :)
Evengeline
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
4
26 juil. 2011 à 08:41
26 juil. 2011 à 08:41
Je relance le sujet, s'il vous plait j'en ai vraiment besoin.
Merci,
cordialement
Merci,
cordialement
Evengeline
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
4
Modifié par Evengeline le 20/03/2012 à 09:06
Modifié par Evengeline le 20/03/2012 à 09:06
Je suis retombé sur ce vieux post, je me réponds à moi-même au bout d'un an, j'ai depuis longtemps trouvé:
Voici la page de "AfficheCroiseTest.php" qui affiche les données en fonction des souhaits de l'utilisateur
J'ai trois champs que je veux croiser dans la base test: item, date_jour et concerne
Plus vous aurez de champs à croiser, plus il faudra penser aux cases qui peuvent rester vides.
L'affichage dans un tableau: ( vous pouvez très bien le faire en html )
Voici la page de "AfficheCroiseTest.php" qui affiche les données en fonction des souhaits de l'utilisateur
<?php //appel de la page de connexion à la base de données include ('conf.php');
J'ai trois champs que je veux croiser dans la base test: item, date_jour et concerne
$item = $_POST['item']; $date_jour= $_POST['date_jour']; $concerne= $_POST['concerne']; //on regarde si les cases sont vides ou remplies, (il faut toujours penser que l'utilisateur ne remplis pas obligatoirement toutes les cases) if ($item=="" AND $date_jour=="") { $select = "SELECT * FROM test WHERE concerne='$concerne' ORDER BY date_jour DESC"; } else if ($concerne=="" AND $date_jour=="") { $select = "SELECT * FROM test WHERE item='$item' ORDER BY date_jour DESC"; } else if ($concerne=="" AND $item=="") { $select = "SELECT * FROM test WHERE date_jour='$date_jour' ORDER BY date_jour DESC"; } else if ($concerne=="") { $select = "SELECT * FROM test WHERE item='$item' AND date_jour='$date_jour' ORDER BY date_jour DESC"; } else if ($item=="") { $select = "SELECT * FROM test WHERE concerne='$concerne' AND date_jour='$date_jour' ORDER BY date_jour DESC"; } else if ($date_jour=="") { $select = "SELECT * FROM test WHERE concerne='$concerne' AND item='$item' ORDER BY date_jour DESC"; } else if ($concerne=="" AND $item=="" AND $date_jour=="") { $select = "SELECT * FROM test ORDER BY date_jour DESC"; } else { $select = "SELECT * FROM test WHERE concerne='$concerne' AND item='$item' AND date_jour='$date_jour' ORDER BY date_jour DESC"; } //on récupere le résultat $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error()); $total = mysql_num_rows($result);
Plus vous aurez de champs à croiser, plus il faudra penser aux cases qui peuvent rester vides.
L'affichage dans un tableau: ( vous pouvez très bien le faire en html )
// si on a récupéré un résultat on l'affiche. if($total) { // debut du tableau echo '<table bgcolor="#FFFFFF">'."\n"; // première ligne on affiche les données dans 2 colonnes echo '<tr>'; echo '<td bgcolor="#0099aa"><b><u>date jour</u></b></td>'; echo '<td bgcolor="#0099aa"><b><u>concerne</u></b></td>'; echo '<td bgcolor="#0099aa"><b><u>item</u></b></td>'; echo '<td bgcolor="#0099aa"><b><u>libelle</u></b></td>'; echo '<td bgcolor="#0099aa"><b><u>signature</u></b></td>' ; echo '</tr>'."\n"; // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. while($row = mysql_fetch_array($result)) { echo '<tr>'; echo '<td bgcolor="#ADD8E6">'.$row["date_jour"].'</td>'; echo '<td bgcolor="#ADD8E6">'.$row["concerne"].'</td>'; echo '<td bgcolor="#ADD8E6">'.$row["item"].'</td>'; echo '<td bgcolor="#ADD8E6">'.$row["libelle"].'</td>'; echo '<td bgcolor="#ADD8E6">'.$row["signature"].'</td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; // fin du tableau. } else echo 'Pas d\'enregistrements dans cette table...'; // on libère le résultat mysql_free_result($result); ?>
Evengeline
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
4
Modifié par Evengeline le 20/03/2012 à 09:07
Modifié par Evengeline le 20/03/2012 à 09:07
Voici aussi mon formulaire où l'utilisateur choisi ses champs ( pour ma part, j'ai mis des champs select, car je voulais qu'il puisse choisir, mais vous pouvez très bien mettre de simples input )
<form method="post" name="recherche" action="AfficheCroiseTest.php">
<?php
require 'conf.php';
?>
<h1> Utilisateur:</h1>
<select name= "concerne">
<option value=""></option>
<?php
$SQL = "SELECT DISTINCT prenom, nom FROM utilisateur
WHERE groupe = 'adulte' ORDER BY prenom";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
echo "<option value=".$val["prenom"]." ".$val["nom"].">".$val["prenom"]." ".$val["nom"]."</option>\n";
}
?>
</select>
<h1> Domaine :</h1>
<select name= "item">
<option value=""></option>
<?php
$SQL = "SELECT DISTINCT * FROM item ORDER BY item";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
echo "<option value=".$val["item"].">".$val["item"]."</option>\n";
}
?>
</select>
<h1> Date : (du type jj-mm-aaaa) </h1>
<div>
<input type="text" name="date_jour" style="cursor: text" value= ""/>
</div>
<input type="submit" value="Afficher" alt="Lancer la recherche!" />
</form>
<form method="post" name="recherche" action="AfficheCroiseTest.php">
<?php
require 'conf.php';
?>
<h1> Utilisateur:</h1>
<select name= "concerne">
<option value=""></option>
<?php
$SQL = "SELECT DISTINCT prenom, nom FROM utilisateur
WHERE groupe = 'adulte' ORDER BY prenom";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
echo "<option value=".$val["prenom"]." ".$val["nom"].">".$val["prenom"]." ".$val["nom"]."</option>\n";
}
?>
</select>
<h1> Domaine :</h1>
<select name= "item">
<option value=""></option>
<?php
$SQL = "SELECT DISTINCT * FROM item ORDER BY item";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
echo "<option value=".$val["item"].">".$val["item"]."</option>\n";
}
?>
</select>
<h1> Date : (du type jj-mm-aaaa) </h1>
<div>
<input type="text" name="date_jour" style="cursor: text" value= ""/>
</div>
<input type="submit" value="Afficher" alt="Lancer la recherche!" />
</form>