Bonjour,
Voici mon problème :
J'ai une table "item" avec
- id
- code
- title
- time
- album
- composer
- etc….
• Ce que j'arrive à faire :
Dans un formulaire je mets un champ de saisie pour "composer".
Et je le renvoie sur la page contenant en requête :
La pas de soucis, il m'affiche bien les résultats.
Par ex, si je tape "BLEU" il me sort à la fois les résultats "BLEU" et "Mer BLEU".
Il recherche bien tous les éléments qui "contiennent" le terme placé dans le formulaire.
• Ce qui pose problème :
Je veux faire une recherche croisée à partir d'un formulaire contenant plusieurs champs.
mon formulaire :
Ma page de résultats :
Et là, soucis.
Car il affiche bien les réponses. Il retient uniquement les éléments qui sont exactement identiques à ce qui a été entré dans le formulaire.
Par exemple, en titre je tape "BLEU", il me sort l'élément "BLEU" mais pas "Mer BLEU"
J'ai essayé avec la même formule que la version du haut (composer) mais cela ne fonctionne pas.
Je me mélange complètement et ne sais plus quoi indiquer en fait...
Quelqu'un aurait-il une idée ?
PS je ne suis vraiment pas un pro de sql et m'en excuse…
Merci d'avance à vous
Voici mon problème :
J'ai une table "item" avec
- id
- code
- title
- time
- album
- composer
- etc….
• Ce que j'arrive à faire :
Dans un formulaire je mets un champ de saisie pour "composer".
<form id="form" name="form" method="get" action="resultats-composer.php">
<input name="recherche" type="text" id="recherche" />
<input type="submit" name="Submit2" value="Search" class="bouton" />
</form>
Et je le renvoie sur la page contenant en requête :
$query_Resultats = sprintf("SELECT code, title, `time`, album, style, tempo, moods, master, publishing, composer, destination, territories, audio FROM item WHERE composer LIKE CONCAT('%%', %s, '%%') ORDER BY title ASC", GetSQLValueString($colname_Resultats, "text"));
La pas de soucis, il m'affiche bien les résultats.
Par ex, si je tape "BLEU" il me sort à la fois les résultats "BLEU" et "Mer BLEU".
Il recherche bien tous les éléments qui "contiennent" le terme placé dans le formulaire.
• Ce qui pose problème :
Je veux faire une recherche croisée à partir d'un formulaire contenant plusieurs champs.
mon formulaire :
<form method="get" action="resultats.php">
<label>
<select name="style" value="Choisissez">
<option value="" selected="selected"></option>
<option>Atmospheric</option>
<option>Song</option>
<option>Choir</option>
<option>Classical</option>
<option>Dark</option>
<option>Electro</option>
<option>Flute</option>
<option>Glassharmonica</option>
<option>Jazz</option>
<option>Oriental</option>
<option>Piano</option>
<option>PPop</option>
<option>Silent movie style</option>
<option>String quartet</option>
<option value="Symphonic">Symphonic</option>
<option>Traditional</option>
<option>Violin</option>
<option>Pop India</option>
</select>
</label>
<label>
<select name="tempo" value="Choisissez">
<option value="" selected="selected"></option>
<option>Slow (60-80)</option>
<option>Medium Slow (80-100)</option>
<option>Medium (100-112)</option>
<option>Medium fast (112-120)</option>
<option>Fast (+120)</option>
</select>
</label>
<label>
<select name="moods">
<option value="" selected="selected"></option>
<option>Fun</option>
<option>Love</option>
<option>Bright</option>
<option>Magical</option>
<option>Building</option>
<option>Tension/Suspens</option>
<option>Dramatic</option>
</select>
</label>
<label>
<input name="title" type="text" id="title" />
</label>
<input type="submit" value="Valider"/>
</form>
Ma page de résultats :
extract($_GET);
$i = 0;
if(!empty($title)) { $choix[$i++] = "title = '$title'"; }
if(!empty($style)) { $choix[$i++] = "style = '$style'"; }
if(!empty($tempo)) { $choix[$i++] = "tempo = '$tempo'"; }
if(!empty($moods)) { $choix[$i++] = "moods = '$moods'"; }
if(!empty($artist)) { $choix[$i++] = "artist = '$artist'"; }
$critere = $choix[0]." ";
for($j=1;$j<$i;$j++)
{
$critere .= " AND ".$choix[$j]." ";
}
$colname_Resultats = "-1";
if (isset($_GET['recherche'])) {
$colname_Resultats = (get_magic_quotes_gpc()) ? $_GET['recherche'] : addslashes($_GET['recherche']);
}
mysql_select_db($database_contenu, $contenu);
$query_Resultats = sprintf("SELECT * FROM item WHERE $critere ORDER BY code ASC", GetSQLValueString($colname_Resultats, "text"));
Et là, soucis.
Car il affiche bien les réponses. Il retient uniquement les éléments qui sont exactement identiques à ce qui a été entré dans le formulaire.
Par exemple, en titre je tape "BLEU", il me sort l'élément "BLEU" mais pas "Mer BLEU"
J'ai essayé avec la même formule que la version du haut (composer) mais cela ne fonctionne pas.
Je me mélange complètement et ne sais plus quoi indiquer en fait...
Quelqu'un aurait-il une idée ?
PS je ne suis vraiment pas un pro de sql et m'en excuse…
Merci d'avance à vous