Bonjour chers amis,
Je ne sais pas trop par où commencer donc je vais essayer d'être le plus bref possible.
J'ai une page PHP avec un champ texte et un bouton Submit. Je tape le mot "test" et appuie sur le bouton. La variable $KeyW prend la valeur "test" et grâce à une requête SQL que voici :
1 2 3 4 5 6 7 8 9 10 11 12
| $GetIssue = 'SELECT *
FROM ISSUETASK
WHERE ((title like "%'.$KeyW.'%")
OR (iduser IN (select distinct iduser from user where name like "%'.$KeyW.'%"))
OR (idproject IN (select distinct idproject from project where idclient IN (select distinct idclient from client where clientname like "%'.$KeyW.'%")))
OR (datetimestart like "%'.$KeyW.'%")
OR (duedate like "%'.$KeyW.'%")
OR (priority like "%'.$KeyW.'%")
OR (description like "%'.$KeyW.'%")
OR (idissue IN (select idissue from followupcomplete where thingsdone LIKE "%'.$KeyW.'%")))
AND close != "'.$Close.'"
AND idtype like "%'.$Type.'%"'; |
Le résultat s'affiche dans un tableau plus bas.
Sur mon formulaire, j'ai ajouté une checkbox :
1 2 3 4 5 6
| <tr>
<td>
<label for="Fulled">Expression complete :</label>
<input type="checkbox" id="Fulled" <?PHP if($_GET["Fulled"] == "on"){echo "checked='checked'";} ?> name="Fulled"/>
</td>
</tr> |
Jusque ici tout fonctionne parfaitement !
Ce que je voudrais faire c'est que lorsque j'appuie sur le bouton submit et que la case est cochée, la requête change un petit peu, pour m'afficher seulement les résultats qui répondent à ma condition REGEXP. Exemple : avant j'avais les résultats "Jean-Test", "Test2", "Test Lol", "Le test" et je voudrais que les résultats avec la case cochée soient : "Test Lol" et "Le test", que la condition soit : "rien ou un espace" AVANT le mot clé, et "rien ou un espace" APRÈS le mot clé (et sans casse). En PCRE ça donne : #$KeyW#i ($KeyW étant le mot clef, donc c'est une variable PHP).
Maintenant je voudrais ajouter cela à ma requête SQL (donc en POSIX), voici ce que j'ai fait :
1 2 3 4 5 6 7 8 9 10
| if($_GET["Fulled"] == "on")
{
$GetIssue .= "AND idcategory = 1 AND $KeyW REGEXP '^$KeyW$'";
}
else
{
$GetIssue .= 'and idcategory = 1';
}
$ResultGetIssue = mysql_query($GetIssue); |
Ici, Fulled est ma checkbox, donc si j'ai coché la checkbox cela s'ajoute à la fin de ma requête (ne prenez pas en compte le idcategory il est indépendant du REGEXP) sinon il s'agit d'une recherche normale.
OR tout ceci ne fonctionne pas et j'aimerais bien savoir pourquoi ... L'erreur :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\sasCopy\search.php on line 489
Ligne 489 :
while($ResultIssue = mysql_fetch_array($ResultGetIssue))
Voila j’espère que vous m'aurez compris, si vous avez besoin de plus d'infos je suis là
Merci d'avance
Partager