webdesignasp
Messages postés29Date d'inscriptionjeudi 10 avril 2003StatutMembreDernière intervention19 avril 2005
-
21 oct. 2004 à 14:38
jeuxfree
Messages postés2Date d'inscriptionmardi 16 juin 2009StatutMembreDernière intervention16 juin 2009
-
16 juin 2009 à 15:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
jeuxfree
Messages postés2Date d'inscriptionmardi 16 juin 2009StatutMembreDernière intervention16 juin 2009 16 juin 2009 à 15:38
salut je suis novice et j'ai simplement copier-coller et quand je cherche un mot j'ai "Not Found
The requested URL /search.php was not found on this server" je pense que je dois configurer quelque chose mais quoi ? la page de mon site ou le logiiel doit chercher ?? creer url/search.php.
je propose des jeux et j'aimerai que l'internaute trouve la page du jeu, demandé a la recherche
a l'aid svp chui un nul
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 15 mars 2009 à 12:30
Salut, cela me semble pas mal mais serait possible d'avoir un exemple concret fichier php mis en place avec un petit exemple de slq à placer ? ce serait plus simple :)
Merci
cs_lepetitcod
Messages postés4Date d'inscriptionlundi 28 mai 2007StatutMembreDernière intervention 3 juin 2008 29 mai 2008 à 17:33
bravo pour ce travail il m'a enormement inspiré !!!
néanmoins j'aurais besoin de vos avis vis a vis d'un soucis d'affichage pour un de mes codes : il se trouve que mes resultats de recherche sont affichés 4 fois et à la suite les uns des autre comment pourrais je faire pour resoudre ce soucis
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
;
$sql "SELECT DISTINCT zone.zone_fr,zone.spot,zone.ID_spot,session.sess_type,session.niveau,session.vent_opt FROM zone,info,session WHERE zone.ID_spot info.ID_spot and zone.zone_fr like '%$zone_fr%' and session.niveau like '%$niveau%' and session.vent_opt like '%$vent_opt%'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$result="0";
//Test du résultat
while($data = mysql_fetch_assoc($req)){$result="1";}
//Affichage des données.
if ($result=="0"){
echo"<center> Aucun enregistement retourné ... </center>
";
}
else{
//affichage des données
echo'';
echo'----
';
echo'<center>zone</center>,
<center>spot</center>,
<center>niveau</center>, <center>type de session</center>, <center>Numeros</center>, <center>Détails</center>, ';
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 15 mai 2008 à 18:15
Salut!
Cette variable, statique, sert à n'effectuer une action de traitement sur les variables post envoyées que lors du premier appel de la fonction! :)
Raf
keogus
Messages postés17Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention 2 février 2010 15 mai 2008 à 15:30
Salut,
Tous d'abord merci pour la qualité de ton code!
Par contre je n'ai pas compris quoi sert la variable $fonction_requete?
il faut enlever le OR de la dernière ligne sinon ça ne fonctionne pas.
Maintenant tous fonctionne bien mis à part le probleme de l'expression entière évoqué plus haut qui sort des résultats un peu bizare parfois...
Encore merci pour cette source vraiment sympa!
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 14 févr. 2008 à 09:12
Merci, ca fait tjs plaisir! :-)
Raf
Mement
Messages postés6Date d'inscriptionmercredi 28 mars 2007StatutMembreDernière intervention18 mars 2008 13 févr. 2008 à 19:47
Salutations,
Un petit mot pour saluer la qualité et l'efficacité de ce script =)
Félicitations !
cs_Lytaspen
Messages postés2Date d'inscriptionlundi 9 avril 2007StatutMembreDernière intervention 4 décembre 2007 4 déc. 2007 à 12:50
Bonjour,
Merci pour votre réponse, je vais m'y mettre tout de suite.
Cordialement
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 3 déc. 2007 à 21:11
Salut!
Juste après le foreach, tu peux ajouter des clauses à ta convenance dans la requête pour tenir compte de champs comme tu le veux... :-)
Raf
cs_Lytaspen
Messages postés2Date d'inscriptionlundi 9 avril 2007StatutMembreDernière intervention 4 décembre 2007 2 déc. 2007 à 22:00
Bonsoir,
Bravo pour ce code, il m'a vraiment été utile.
Je travail sur votre code depuis plusieurs jours, pas sans mal vue mon niveau.
Je suis arrivé à un résultat satisfaisant (toujours par rapport à mon niveau), mais j'aimerais savoir s'il étais possible afin d'affiner la recherche, de modifier le formulaire (ça ce n'est pas dur), pour avoir plusieurs points de recherche ?
Je m'explique mieux :
Dans ma table j'ai 5 colonnes (ID, Nom, class, sousclass, qualite), et dans mon formulaire j'aimerais "ID : "zone de texte" Nom : "zone de texte" Classification : "zone de sélection" Sous classification : "zone de sélection" qualité : "zone de sélection".
Et que s'il y a un mot dans "ID" cela recherche que dans "ID", pour "non" pareil, pour classification, il faudrait des mots qui correspondent aux chiffres de ma colonne (sacs 1 dans la colonne, 2 pantalon, etc.), qui cherche dans "class", pareille pour sous class et qualité.
et qu'à la recherche cela regroupe toutes les données fournies pour générer une recherche plus précise.
Jespère que mon explication est asse net.
Merci pour votre travail et merci d'avance.
Cordialement
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 22 nov. 2007 à 08:03
Ah!
Alors ca déclenchait une erreur et pas une absence de résultats... :-D
Content que ca soit résolu!
@++
R@f
cs_cedric_g
Messages postés2Date d'inscriptionmardi 15 mars 2005StatutMembreDernière intervention21 novembre 2007 21 nov. 2007 à 10:17
Je me doutais qu'il fallait mettre quelque chose dans le genre, mais je ne savais pas où! Et dans mon cas, il faut mettre addslashes au lieu de stripslashes pour ajouter des "/" devant les apostrophes contenues dans les champs de la BDD.
Merci!
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 20 nov. 2007 à 20:11
Salut!
Essaie peut-être de remplacer:
$search = $_POST['search'];
Par
$search = stripslashes( $_POST['search'] );
@++
R@f
cs_cedric_g
Messages postés2Date d'inscriptionmardi 15 mars 2005StatutMembreDernière intervention21 novembre 2007 20 nov. 2007 à 12:03
Salut !
Bravo pour ce moteur de recherche, mais j'ai un problème avec les apostrophes dans le texte de recherche. Par exemple, "Tir à l'arc" ne renvoie aucun résultat. Le texte est rentré tel quel dans la base, comment faire pour que les apostrophes ne gênent pas la recherche ?
Merci!
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 sept. 2007 à 14:46
Salut!
Je ne comprends pas le pb: en jouant sur le paramètre $limit_start ($limiz_nb reste fixé), tu devrais pouvoir ce que tu veux...
Où est-ce que ca coince? :)
@++
R@f
sebastien247
Messages postés27Date d'inscriptionmercredi 16 mai 2007StatutMembreDernière intervention13 mars 2011 1 sept. 2007 à 14:41
Salut,
Je n'arrive pas a faire fonctionner l'affichage page par page, muisque la variable $limit_nb limit les recherche a 5 (par exemple) a donc une foit arriver a 5 resultat il ne continue pas sa recherche jusqu'au bout
Merci de bien vouloir m'éclairé
Merci par avance
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 25 juil. 2007 à 17:55
Yop!
Ne modifie pas le corps de la requête et adapte tes paramètres, genre:
table1 t1, table2 t2 : tables
array( t1.champ, t1.champ2, t2.champ ) : pour les champs de recherche
Etc...
@++
R@f
wals69
Messages postés14Date d'inscriptionvendredi 13 juillet 2007StatutMembreDernière intervention 2 mai 2008 25 juil. 2007 à 10:04
Bonjour,
Excuse moi encore une fois de te deranger mais j ai encore un petit souci
J aimerais faire une recherche dans deux tables et je crois qu'il n'accepte pas la jointure.
<?php
$id_client = $_GET['id_client'];
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')
{
// option de recherche
$option = $_POST['option'];
// texte de recherche
$search = $_POST['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option 'all' || $option 'one')
{
// liste des mots
$mots = explode(' ', $search);
if($option 'all' || $option 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option 'all' || $option 'one')
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search 'SELECT ' . $select . ' FROM ' . $table . ' WHERE (partage_media 1 OR (partage_media = 0 AND client.id_client = media.id_client AND id_client = $id_client)) AND (';
else
$req_search 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE (partage_media 1 OR (partage_media = 0 AND client.id_client = media.id_client AND id_client =$id_client)) AND (';
wals69
Messages postés14Date d'inscriptionvendredi 13 juillet 2007StatutMembreDernière intervention 2 mai 2008 16 juil. 2007 à 11:17
merci beaucoup coockiesch
ca marche nikel
et le temps de reponse est super rapide
merci.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 16 juil. 2007 à 08:10
Yop!
Remplace:
# // début de requête
# if(empty($count))
# $req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
# else
# $req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
Par
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE partage=1 AND (';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE partage=1 AND (';
Et ajoutes, avant:
# if(empty($count))
# $req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
$req_search .= ') ';
Ca devrait jouer! :)
@++
R@f
wals69
Messages postés14Date d'inscriptionvendredi 13 juillet 2007StatutMembreDernière intervention 2 mai 2008 13 juil. 2007 à 17:06
salut
deja merci bcp pour ce code
mais j aimerais ajouter une condition dans la requete
comment puis-je faire.
en fait j aimerais qu'il me prenne un de mes champs sous condition
WHERE partage = '1' au lieu de me prendre toute la colonne patage
merci d'avance
Epoc22
Messages postés198Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention14 novembre 20081 27 sept. 2006 à 09:04
En fait ce que j'aimerait que tu fasse c'est faire une MAJ de cette soruce avec la source de toutes les personnes qui ont posté des améliorations. Ca serait très sympa et pratique.
@+
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 26 sept. 2006 à 18:33
Salut!
Je n'ai pas compris de quel mise à jour tu parles... Synthèse des commentaires? Autres précisions? ...?
Sinon, ne mieux, y'a une version II (regarde ds mes sources).
@++
R@f
Epoc22
Messages postés198Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention14 novembre 20081 26 sept. 2006 à 16:59
Salut @ tous, ce code est très intéressant et fera, pour ma part, sujet à d'importantes améliorations mais
je me permet de faire une suggestion à coockiesch en particulier mais aussi aux autres personnes qui ont postés
des commentaires sur cette source : coockiesch, il faudrait vraiment que tu fasse une mise à jour générale de ton code
car là je ne comprend rien à ce qui est dit !
Enfin, ça serait sympa de le faire pour tout le monde car justement tout le monde écrit son code à l'arrache comme commentaire
et résultat je capte rien ! Je pense pas que je soit le seul à ne pas comprendre....
Merci de faire cette MAJ...
Epoc
SuperRaplapla
Messages postés8Date d'inscriptionmardi 2 mars 2004StatutMembreDernière intervention24 août 2009 20 févr. 2006 à 09:05
Désolé, erreur de ma part. Il faut juste faire attention à comment sont enregistrées les apostrophes dans la base (avec ou sans slashes etc...). Milles excuses !
++
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 20 févr. 2006 à 08:53
Je regarde ca et te tiens au courant... :)
@++
R@f
SuperRaplapla
Messages postés8Date d'inscriptionmardi 2 mars 2004StatutMembreDernière intervention24 août 2009 19 févr. 2006 à 00:09
Re !
Lors de la recherche contenant une apostrophe, il ne trouve aucun résultat, alors que dans ma table, il devrait. Comment pourrait on faire pour y rémedier ???
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 17 févr. 2006 à 07:12
Oui! J'avais vu que, des fois:
if( empty( rtrim( $mots ) ) )
Ne passe pas.
Ceci, afin de ne pas faire la recherche si aucun mot clés dans la recherche de phrase exacte :
if (trim($mots)==''){
echo "Votre recherche ne contient pas de mots clés.";
exit;
}
Qu'en pensez-vous ?
SuperRaplapla
Messages postés8Date d'inscriptionmardi 2 mars 2004StatutMembreDernière intervention24 août 2009 16 févr. 2006 à 10:10
Bon code, juste ce que je cherchai. Bravo et merci !
N'hésitez pas à rajouter des améliorations ou autre si vous en trouvez.
A + !
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 3 févr. 2006 à 15:46
Salut!
Le static a bien sa place dans le if: si c'est la première fois que la fonction est appelée, on crée la variable. Static indique simplement que la valeur sera gardée en mémoire enrte plusieurs appels de la fonction, au contraire d'une variable "normale"
$req_search = requete('titre,liens','recherche', array('titre','keywords'), 'titre,liens', 'liens', 'ASC', 1, 20);
Normalement, on appelle la fonction comme tu l'a fait. Pas besoin de faire l'affectation.
Par contre: ne pas modifier la code de la fonction... Tu as déclaré des variables au début, il faut pas. L'intérêt d'une fonction c'est justement d'avoir des paramètres.
Essaie de reprendre mon code tel qu'il est posté et d'appeler ta fonction comme tu l'a fait:
$req_search = requete('titre,liens','recherche', array('titre','keywords'), 'titre,liens', 'liens', 'ASC', 1, 20);
Ca change qqch?
On va y arriver! :)
@++
R@f
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 2 févr. 2006 à 18:24
< coockiesch
deux bugs résolus :
dans le code une variable limit_nomb au début et à la fin, limit_nb.
ce qui est une erreur.
cette portion
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
je l'ai transformé en çà
static $fonction_requete = 1;
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
çà plait davantage à zend.la variable utilisé avant d'être déclarée çà ne lui plaisait pas...et à toi? c'est correct dans le contexte?
le pb de variables non déclarés je l'ai résolu comme çà
par contre, j'ai toujours cette erreur d'expression dont le résultat n'est pas utilisé.
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 2 févr. 2006 à 14:22
salut coockiesch
alors après plusieurs tests, il y à du mieux, mais sql retourne cette erreur:
MySQL Error'
SELECT titre,liens FROM recherche WHERE ( titre,keywords LIKE '%accords%' AND titre,keywords LIKE '%gammes%' ) ORDER BY titre ASC LIMIT 1, 1
Operand should contain 1 column(s)
l'opérande devrait contenir une colonne.çà ne me parle pas.zendstudio, lui, retourne :
ligne 2:argument de fonction non utilisés pour les variables de la fonction sauf count et limit_nomb.
pour limit_nomb, la valeur de la variable n'est pas utilisée et n'apparait qu'une fois(ligne 10).
la variable fonction_requete est utilisée mais pas définie et le résultat de l'expréssion n'est jamais utilisé(ligne 91).
j'essai depuis hier plusieurs combinaisons, rien à faire.je sollicite donc, une fois de plus ton expérience.
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 21:05
merde alors !?
coockiesch --> ton message du 01/02/2006 19:06:43 tout a l'heure il s'arretait a "Oki, alors oublions tout ça et repartons d'un bon pied sur le code, :)"
j'avais pas tout le reste d'affiché !!
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 21:03
nog nog --> je suis interessé par ton post du 25/02/2005 10:41:09 mais je ne vois pas où rajouter ce bout de script peux-tu me dire la ligne d'avant et la ligne d'apres du script original si c'est une modif, ou alors faut-il le mettre a la fin du script ??
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 20:53
ok c good tout fonctionne correctement, mais dis-moi je ne vois pas l'intêret d'avoir un limit_start a 10 !?
Enfin faut vraiment en avoir l'utilité, normalement pour un moteur de recherche si l'on veux affiché tout les resultats on met un limit_start = 0
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 20:48
excusez-moi j'ai remplacé la ligne 124 :
$requete = requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
$result = mysql_query( $requete ) or die('Erreur MySQL');
ca marche a peu pres, j'ai pas tout ce que je veux
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 20:38
Fatal error: Call to undefined function: function_requete() in /home/internetk/www/nouveau/essai/search.php on line 124
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 févr. 2006 à 19:23
Salut!
Alors, comme j'ai dit à BJ33, $start=0;
Ensuite, ben tu appelles la fonction avec tes params:
$req_search = function_requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
ensuite:
$result = mysql_query( $req_search ) or die('Erreur MySQL');
// affichage & co
Ca joue comme ca?
@++
R@f
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 19:20
voila c'est tout avec <?php et parametres de connexion avant et ?> apres !!
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 19:19
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 févr. 2006 à 19:12
Alors, ca doit être la requête générée...
Ca donne quoi à l'affichage?
@++
R@f
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 19:11
mes variables sont bonnes puisque j'ai fait :
$sql100 = mysql_query("SELECT * FROM $table WHERE $champs LIKE '%$search%' ORDER BY $order $sens");
while....
et ça fonctionne
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 févr. 2006 à 19:09
Salut!
Oui!
Mais on préfère echo à print pcq c plus rapide:
echo $req_search;
@++
R@f
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 févr. 2006 à 19:06
Salut!
Oui, je comprends! Cela m'est arrivé aussi bien souvent, et m'arrive encore parfois. Oki, alors oublions tout ça et repartons d'un bon pied sur le code, :)
- l'appel de la fonction avec ses paramètres est OK, pour moi
- petite erreur: tu enregistre la requête crée par la fonction dans $req_search mais tu utilises $requete dans mysql_query
Essaie:
include_once ("fichiers/connect.php");
$req_search = requete('recherche', array('titre', 'keywords'), 'titre, liens', 'liens', 'ASC', 1, 20);
$result = mysql_query($req_search) or die('MySQL Error'); // Affichera MySQL Error et bloquera le script en cas d'erreur mysql
Ensuite:
echo $req_search . '
'; // affichera la requête
eccho 'nb: ' . mysql_num_rows($result); // affichera le nombre d'enregistrements retournés
Pour la suite:
- on met start à 0 et pas à 1 ( le premier enregistrement est l'enregistrement 0 et pas 1, comme pour les tableaux ).
- comment fais-tu l'affichage des résultats?
Voilà!
@++
R@f
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 19:04
...et je fais comment pour afficher la requete générée ??
print $req_search; ??
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 1 févr. 2006 à 19:04
...et je fais comment pour afficher la requete générée ??
print $req_search; ??
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 1 févr. 2006 à 13:34
< cookiesch
tu attendais une réponse, ok, désolé, je ne pensais pas que c'était le cas.c'est vrai, c'est un msg agréssif, çà m'à énervé de lire la réponse que tu à écrit pour joebuz, le jour même alors que le mien à deux mois tout juste.je retire.tu acceptes mes excuses?
en fait, en tant que débutants, ont se retrouvent souvent confrontés à, peut être pas du mépris, mais au moins de l'indifférence, quand l'on pose des questions qui appellent des réponses qui paraissent évidentes aux initiés.c'est particulièrement vrai sur les sites cs et prog en général.et çà, c'est diablement frustrant.d'où, parfois, des écarts de conduite élémentaire.je m'en excuse encore.
à l'époque, j'ai lù ce code et il m'à emballé, je l'ai donc testé.je ne comprenais même pas ce que je devais faire pour paramétrer la fonction, CF: le commentaire au dessus de celui de joebuzz.
aujourd'hui, j'ai coder un moteur simple, à la mesure de mes compétences php(je viens d'en finir avec les variables, les opérateurs et les boucles, j'attaque justement les fonctions), il ne recherche qu'un mot clé et marche bien.mais si tu veux m'expliquer comment le paramétrer, je prend.
ma question : est ce que je dois entrer les paramétres comme ceçi ou est ce que çà doit rester vide?
Il te suffit d'appeler la fonction avec les bons params, par exemple:
# $requete = requete('table', array('champ1', 'champ2', 'champ3'), 'id, champ4', 'id', 'DESC', 10, 25);
# $result = mysql_query($requete);
je n'obtiens rien d'autre qu'une page blanche.avec dans la source, uniquement les entètes html.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 févr. 2006 à 12:35
Pas de réponse? Bon, pas la peine d'écrire de commentaires aussi méprisants, alors...
@++
R@f
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 31 janv. 2006 à 21:13
Salut, BJ33!
Je suis désolé mais je n'avais pas vu ton deuxième commentaire... En règle générale, j'essaie de répondre le plus vite possible, ce que j'ai fait avec la question de JOEBUZ... Petit couac dans le cadre de ta question, nullement question de mépris...
@++
R@f
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 31 janv. 2006 à 20:31
bonjour
merci monsieur le programmeur Professionel pour cette réponse rapide.les débutants que nous sommes vous salut bien bas pour votre mépris...
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 31 janv. 2006 à 20:09
Salut!
Tu pourrais afficher la requête crée par ma fonction? Et si tu colle ce code dans phpmyadmin, ca renvoie qqch?
@++
R@f
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 31 janv. 2006 à 18:43
'lut j'y arrive pas ca ne m'affiche aucun resultat
j'ai mis le formulaire ds un fichier index.html
et créé un fichier search.php ou dedans j'ai mis :
$bdd_host = 'host';
$bdd_login = 'login';
$bdd_pass = '*****';
$bdd_base = 'base';
$bdd_conect = mysql_connect("$bdd_host", "$bdd_login", "$bdd_pass") or die('erreur connection sql');
mysql_select_db("$bdd_base") or die('oops pas de base de donnée');
et ca ne m'affiche qu'une page blanche pourtant je recherche des mots qui sont dans ma table !
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 30 nov. 2005 à 14:01
salut et merci pour ta réponse.
je ne comprend rien du tout à la façon de passer les paramètres.je publie le dernier essai :
<?php
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = 'recherche,("titre","keywords"),(titre,liens),titre,asc,1,20')
{
// option de recherche
$option = $_POST['option'];
// texte de recherche
$search = $_POST['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option 'all' || $option 'one')
{
// liste des mots
$mots = explode(' ', $search);
// sépararateur
if($option == 'all')
$sep = ' AND ';
else
$sep = ' OR ';
} // if($option 'all' || $option 'one')
// "Rechercher l'expression exacte"
else
{
$mots = $search;
$sep = '';
}
} // if(!isset($fonction_requete))
if(!is_array($champs))
$champs = array($champs);
if($option 'all' || $option 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option 'all' || $option 'one')
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
// ajout des champs
foreach($champs as $champ)
{
if(!$i)
{
$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
}
if(empty($count))
$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
return $req_search;
}
include_once ("fichiers/connect.php");
$req_search = requete('recherche', array('titre', 'keywords'), 'titre, liens', 'liens', 'ASC', 1, 20);
$result = mysql_query($requete);
?>
ma table est structurée ainsi :
id (uniquement pour la maintenance)
keywords
titre
liens
j'ai tenter de comprendre la structure de la requête...c'est plus fort que moi!je débute en php/mysql.avec un seul mot à rechercher pas de soucis mais plusieurs...ce code est exactement ce que je cherche à utiliser pour la nouvelle version de mon site, j'en ai essayer un bon nombre, c'est celui là qu'il me faut, même si je n'arrive pas à le faire fonctionner.un exemple parlant serait le bienvenue.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 29 nov. 2005 à 20:36
Salut!
SELECT $champs FROM $table WHERE ... ORDER BY $order $sens LIMIT $limit_start, $limit_nb
>> Ce n'est que pour indiquer à des personnes connaissant le SQL quelle tête la requête va avoir.
Il te suffit d'appeler la fonction avec les bons params, par exemple:
# $requete = requete('table', array('champ1', 'champ2', 'champ3'), 'id, champ4', 'id', 'DESC', 10, 25);
# $result = mysql_query($requete);
@++
R@f
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 26 nov. 2005 à 18:19
salut
très intéréssant, mais à part le formulaire, je suis perdu.
en effet, je n'obtient qu'une page blanche et dans la source le code html que j'ai rentré, rien d'autre.
c'est surement dû au fait que je ne comprends pas les champs(leurs noms).
SELECT $champs FROM $table WHERE ... ORDER BY $order $sens LIMIT $limit_start, $limit_nb
la variable champs et table, c'est ok.mais order, çà correspond à quoi? et pourquoi le where est suivi de ..., le limit_start, je ne vois pas non plus.
comment j'éffectue ma requête?
et les arguments de la fonction, je les passe comme çà?
dico : table
définition : champs de recherche
"definition,notes,signature" : le select
asc : order by
20 : limit
j'ai supprimer les variables order et $limit_start
si quelqu'un peux m'éclairer.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 14 sept. 2005 à 16:45
Salut!
Contacte moi par MP:
On se croise sur MSN ou par mail afin que tu m'explique...
@++
R@f
frenchconexion
Messages postés2Date d'inscriptionjeudi 12 mai 2005StatutMembreDernière intervention14 septembre 2005 14 sept. 2005 à 16:37
bonjour merci d'avoir repondu!!
donc voila j'explique ma situation donc je vais partit d'un staff de jeu online je cherchait a faire pour les joueur un site en php et integrer une recherche dur la database du jeux
exemple:le joueur tape toto et hop il vois que tot c le nom d'1 item qu'il est vendu a tel endroit et le prix etc....
ensuite pour le script (je sais que l'erreur viens de moi)
j'utilise Easy php pour le faire en local pour tester pour pouvoir le metre on line plus tard,donc je me suis scripter un site basic en php bouton etc donc g mis mon bouton item ensuite g crée un item.php et incorporer le script dedans
g aussi fait un dbconnect voila
desoler si j'ecrit trop et merci d'avance
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 14 sept. 2005 à 12:47
Salut!
Tu peux nous expliquer comment tu as mis en place le script? Ce que contiennent les différents fichiers?
@++
R@f
frenchconexion
Messages postés2Date d'inscriptionjeudi 12 mai 2005StatutMembreDernière intervention14 septembre 2005 14 sept. 2005 à 03:51
Bonjour a tous voila j'ai un petit soucis avec le script il me fait des erreurs esce normale ou me suis-je tromper?
exemple:j me co dessus je voit le cadre avec recher etc..
mais en dessous ca me fait ca : 13. 14. ************************* 15. fonction de création de requête 16. ************************* 17. function requete($table, $champs, a partir de la il liste tous
voila merci pour tout
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 14 juin 2005 à 21:37
Salut!
Cette fonction te retourne une requête mais ne l'exécute pas. A toi de te connecter avant l'exécution de celle ci...
En fait, on insère ~#^!|!^#~à la place des mots à chercher et on y remplace par les bons mots après... Ca fait gagner du temps, :)
@++
R@f
cs_frippons
Messages postés18Date d'inscriptionlundi 28 mars 2005StatutMembreDernière intervention29 juillet 2009 14 juin 2005 à 10:38
bonjour
je ne comprend pas cette ligne
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
Peut on me l'expliquer, et quand doit on se connecter à la BDD
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 2 juin 2005 à 15:26
Hello!
Il faudrait que tu regarder des tutos sur les bases de données, ca prend un peu de temps à assimilier et à apprendre comment bosser avec...
cs_the_leech
Messages postés12Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention23 septembre 2006 2 juin 2005 à 09:22
Bonjours,
Je suis très nul au niveau base de donner, j'aimerait savoir comment en créer une est après mettre les liens qui pouront êtres rechercher pas le moteur de rechercher ( votre code ).
Merci de méclèrsir !
cs_nognog
Messages postés4Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention25 février 2005 25 févr. 2005 à 10:45
j'ai oublié un truc ;)
si vous appliquez ces modifs ne pas oublier de passer $stripmots2 a foreach
foreach($mots as $mot)
par
foreach($stripmots2 as $mot)
++
cs_nognog
Messages postés4Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention25 février 2005 25 févr. 2005 à 10:41
salut
j'ai fait qques modifs pour affiner encore les recherches
if($option 'all' || $option 'one')
{
//creer un tableau d'articles/verbe a comparer et a supprimer de $search
$strip = array('le','la','les','de','des','est','a','à','un','une');
if($option == 'all'){
$sep = ' and ';
// liste des mots
$mots = explode(' ', $search);
// retire les articles
$stripmots = array_diff($mots,$strip); //print_r ($stripmots);
//retire les array vide
$stripmots2 = array_filter($stripmots); //print_r ($stripmots2);
// message erreur si le tableau est vide
if (empty($stripmots2)){echo "les articles ayant été retirés (ex: le, la, un), votre requete n'a pas de mots clefs";include('footer.php');exit;}
}
else{
$sep = ' or ';
$mots = explode(' ', $search);
$stripmots = array_diff($mots,$strip);
//print_r ($stripmots);
$stripmots2 = array_filter($stripmots);
//print_r ($stripmots2);
if (empty($stripmots2)){echo "les articles ayant été retirés (ex: le, la, un), votre requete n'a pas de mots clefs";include('footer.php');exit;}
}
} // if($option 'all' || $option 'one')
// "Rechercher l'expression exacte"
else
{
// on retire les espaces
$search = trim($search);
$mots = $search;
$sep = '';
}
petit bout de code qui evite d'avoir un array[x]=vide lorsque l'on rentre plusieurs espaces dans la string $search pour option 'all' 'one' , et retire les articles lors de la recherche
voila j'esperes que j'ai pas fait ou dit de betises
$nognog == 'debutant';
++
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 24 févr. 2005 à 11:45
Salut!
Merci pour l'idée...
Donc, je retirerai quels mots dans les recherches en AND et OR:
le, la, les, un, une, des, l'
Autres idées?
@++
R@f
cs_nognog
Messages postés4Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention25 février 2005 24 févr. 2005 à 10:44
salut cookiesch !
j'ai trouvé un ptit truc tout bete pour affiner la recherche sur l'expression exacte.
dans la fonction tu encodes un espace, ce qui a pour effet de couper le mot (donc extrait ne peu contenir extra+1space ) et ainsi avoir une expression qui est exacte dans la recherche
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
a remplacer par :
$search = '~#^!|!^#~ LIKE \'%' . $mots ." ". '%\'';
sinon j'ai une ptite remarque il serait sympa de faire une petite fonction qui retire tous les articles pour les recherches autre que exacte sinon ca renvoit trop de references
merci bcp pour ton script il est super :)
++
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 23 févr. 2005 à 16:06
Salut!
Je sais pas, je pense pas...
Pcq si tu enlève les %, tu auras d'autres pbs...
@++
R@f
cs_nognog
Messages postés4Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention25 février 2005 23 févr. 2005 à 15:23
salut
je suis debutant et j'ai un souci avec ton script
j'ai reussi a le faire fonctionner et faire mes affichage , mais par exemple qd je cherche l'expression exacte sur 'extra' je me retrouve avec des resultats incluant 'extrait' .
ce qui est juste vu que texte LIKE '%extra%' : 'extrait contient bien extra' mais cependant ce n'est pas l'expression exacte d'ou une recherche legerement faussée .
ya til une solution simple a ce probleme ? sinon je peux vivre avec :)
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 21 oct. 2004 à 16:52
Salut!
Non, car l'expression excate peut être encadrée par un texte autre...
Si on cherche "cette phrase" dans un champ qui contient "je me demande si ctte phrase est juste", la requête doit retourner ce résultat....
@++
R@f
webdesignasp
Messages postés29Date d'inscriptionjeudi 10 avril 2003StatutMembreDernière intervention19 avril 2005 21 oct. 2004 à 14:38
Je pense qu'il y a une erreur à la ligne 70 :
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
devrait plutôt s'écrire sans '% %' pour l'option "l'expression exacte" :
16 juin 2009 à 15:38
The requested URL /search.php was not found on this server" je pense que je dois configurer quelque chose mais quoi ? la page de mon site ou le logiiel doit chercher ?? creer url/search.php.
je propose des jeux et j'aimerai que l'internaute trouve la page du jeu, demandé a la recherche
a l'aid svp chui un nul
15 mars 2009 à 12:30
Merci
29 mai 2008 à 17:33
néanmoins j'aurais besoin de vos avis vis a vis d'un soucis d'affichage pour un de mes codes : il se trouve que mes resultats de recherche sont affichés 4 fois et à la suite les uns des autre comment pourrais je faire pour resoudre ce soucis
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Résultats de la recherche</title>
<style TYPE= "text/css">
<!--
A:hover {text-decoration:none; background: #FFFFCC}
A:hover {color:#FF0000;}
-->
</style>
<style TYPE="text/css">
BODY {
scrollbar-face-color: #bfcfff;
scrollbar-shadow-color: #000000;
scrollbar-highlight-color: #FFFFFF;
scrollbar-3dlight-color: #000000;
scrollbar-darkshadow-color: #000000;
scrollbar-track-color: #e6cff;
scrollbar-arrow-color: #6078bf;
}
</style>
</head>
<center>
Résultats de la recherche</center>
<?php
$zone_fr=$_POST['zone_fr'];
$niveau=$_POST['niveau'];
$vent_opt=$_POST['vent_opt'];
$envoyer=$_POST['envoyer'];
if(isset($_POST['envoyer'])) $envoyer=$_POST['envoyer'];
else $envoyer="";
if ($zone_fr=="" && $niveau=="" && $vent_opt=="")
{echo "<center> Veuillez remplir au moins un champ!! </center>";}
elseif($envoyer == 'Recherche ')
{
echo' ' ;
echo'
';
echo'
';
if(isset($_POST['zone_fr'])) $zone_fr =$_POST['zone_fr'];
else $zone_fr= "";
if(isset($_POST['niveau'])) $niveau=$_POST['niveau'];
else $niveau="";
if(isset($_POST['vent_opt'])) $cms=$_POST['vent_opt'];
else $vent_opt="";
include("connectionkite.php");
$connect = connectToBasec();
;
$sql "SELECT DISTINCT zone.zone_fr,zone.spot,zone.ID_spot,session.sess_type,session.niveau,session.vent_opt FROM zone,info,session WHERE zone.ID_spot info.ID_spot and zone.zone_fr like '%$zone_fr%' and session.niveau like '%$niveau%' and session.vent_opt like '%$vent_opt%'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$result="0";
//Test du résultat
while($data = mysql_fetch_assoc($req)){$result="1";}
//Affichage des données.
if ($result=="0"){
echo"<center> Aucun enregistement retourné ... </center>
";
}
else{
//affichage des données
echo'';
echo'----
';
echo'<center>zone</center>,
<center>spot</center>,
<center>niveau</center>, <center>type de session</center>, <center>Numeros</center>, <center>Détails</center>, ';
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data=mysql_fetch_assoc($req))
{
$zone_fr=$data['zone_fr'];
$niveau=$data['niveau'];
$vent_opt=$data['vent_opt'];
$ID_spot=$data['ID_spot'];
echo'----
';
echo'<center>'.$data['zone_fr'].', </center>
<center>'.$data['spot'].', </center>
<center>'.$data['niveau'].', </center><center>'.$data['sess_type'].', </center><center>'.$data['ID_spot'].', </center>';
echo'';
echo" <center></center>";
echo', ';
}}
echo'
';
echo'
';
echo'
';
}
?>
</html>
15 mai 2008 à 18:15
Cette variable, statique, sert à n'effectuer une action de traitement sur les variables post envoyées que lors du premier appel de la fonction! :)
Raf
15 mai 2008 à 15:30
Tous d'abord merci pour la qualité de ton code!
Par contre je n'ai pas compris quoi sert la variable $fonction_requete?
Sinon chez moi dans ce bout de code la :
if(!$i)
{
$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
il faut enlever le OR de la dernière ligne sinon ça ne fonctionne pas.
Maintenant tous fonctionne bien mis à part le probleme de l'expression entière évoqué plus haut qui sort des résultats un peu bizare parfois...
Encore merci pour cette source vraiment sympa!
14 févr. 2008 à 09:12
Raf
13 févr. 2008 à 19:47
Un petit mot pour saluer la qualité et l'efficacité de ce script =)
Félicitations !
4 déc. 2007 à 12:50
Merci pour votre réponse, je vais m'y mettre tout de suite.
Cordialement
3 déc. 2007 à 21:11
Juste après le foreach, tu peux ajouter des clauses à ta convenance dans la requête pour tenir compte de champs comme tu le veux... :-)
Raf
2 déc. 2007 à 22:00
Bravo pour ce code, il m'a vraiment été utile.
Je travail sur votre code depuis plusieurs jours, pas sans mal vue mon niveau.
Je suis arrivé à un résultat satisfaisant (toujours par rapport à mon niveau), mais j'aimerais savoir s'il étais possible afin d'affiner la recherche, de modifier le formulaire (ça ce n'est pas dur), pour avoir plusieurs points de recherche ?
Je m'explique mieux :
Dans ma table j'ai 5 colonnes (ID, Nom, class, sousclass, qualite), et dans mon formulaire j'aimerais "ID : "zone de texte" Nom : "zone de texte" Classification : "zone de sélection" Sous classification : "zone de sélection" qualité : "zone de sélection".
Et que s'il y a un mot dans "ID" cela recherche que dans "ID", pour "non" pareil, pour classification, il faudrait des mots qui correspondent aux chiffres de ma colonne (sacs 1 dans la colonne, 2 pantalon, etc.), qui cherche dans "class", pareille pour sous class et qualité.
et qu'à la recherche cela regroupe toutes les données fournies pour générer une recherche plus précise.
Jespère que mon explication est asse net.
Merci pour votre travail et merci d'avance.
Cordialement
22 nov. 2007 à 08:03
Alors ca déclenchait une erreur et pas une absence de résultats... :-D
Content que ca soit résolu!
@++
R@f
21 nov. 2007 à 10:17
Merci!
20 nov. 2007 à 20:11
Essaie peut-être de remplacer:
$search = $_POST['search'];
Par
$search = stripslashes( $_POST['search'] );
@++
R@f
20 nov. 2007 à 12:03
Bravo pour ce moteur de recherche, mais j'ai un problème avec les apostrophes dans le texte de recherche. Par exemple, "Tir à l'arc" ne renvoie aucun résultat. Le texte est rentré tel quel dans la base, comment faire pour que les apostrophes ne gênent pas la recherche ?
Merci!
1 sept. 2007 à 14:46
Je ne comprends pas le pb: en jouant sur le paramètre $limit_start ($limiz_nb reste fixé), tu devrais pouvoir ce que tu veux...
Où est-ce que ca coince? :)
@++
R@f
1 sept. 2007 à 14:41
Je n'arrive pas a faire fonctionner l'affichage page par page, muisque la variable $limit_nb limit les recherche a 5 (par exemple) a donc une foit arriver a 5 resultat il ne continue pas sa recherche jusqu'au bout
Merci de bien vouloir m'éclairé
Merci par avance
25 juil. 2007 à 17:55
Ne modifie pas le corps de la requête et adapte tes paramètres, genre:
table1 t1, table2 t2 : tables
array( t1.champ, t1.champ2, t2.champ ) : pour les champs de recherche
Etc...
@++
R@f
25 juil. 2007 à 10:04
Excuse moi encore une fois de te deranger mais j ai encore un petit souci
J aimerais faire une recherche dans deux tables et je crois qu'il n'accepte pas la jointure.
<?php
$id_client = $_GET['id_client'];
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')
{
// option de recherche
$option = $_POST['option'];
// texte de recherche
$search = $_POST['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option 'all' || $option 'one')
{
// liste des mots
$mots = explode(' ', $search);
// sépararateur
if($option == 'all')
$sep = ' AND ';
else
$sep = ' OR ';
} // if($option 'all' || $option 'one')
// "Rechercher l'expression exacte"
else
{
$mots = $search;
$sep = '';
}
} // if(!isset($fonction_requete))
if(!is_array($champs))
$champs = array($champs);
if($option 'all' || $option 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option 'all' || $option 'one')
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search 'SELECT ' . $select . ' FROM ' . $table . ' WHERE (partage_media 1 OR (partage_media = 0 AND client.id_client = media.id_client AND id_client = $id_client)) AND (';
else
$req_search 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE (partage_media 1 OR (partage_media = 0 AND client.id_client = media.id_client AND id_client =$id_client)) AND (';
// ajout des champs
foreach($champs as $champ)
{
if(!$i)
{
$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
}
$req_search .= ') ';
if(empty($count))
$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
return $req_search;
}
?>
<?php
if(isset($_POST['operation']) && $_POST['operation']=='Rechercher'){
?>
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td>nom du fichier</td>
</tr>
<?php
$requete = requete('client,media', array('nom_media', 'description_media', 'partage_media, nom_client'), '*', 'nom_media', 'ASC', 0, 25) ;
$result = mysql_query($requete);...etc
Tu en penses quoi?
Merci d'avance
16 juil. 2007 à 11:17
ca marche nikel
et le temps de reponse est super rapide
merci.
16 juil. 2007 à 08:10
Remplace:
# // début de requête
# if(empty($count))
# $req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
# else
# $req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
Par
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE partage=1 AND (';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE partage=1 AND (';
Et ajoutes, avant:
# if(empty($count))
# $req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
$req_search .= ') ';
Ca devrait jouer! :)
@++
R@f
13 juil. 2007 à 17:06
deja merci bcp pour ce code
mais j aimerais ajouter une condition dans la requete
comment puis-je faire.
en fait j aimerais qu'il me prenne un de mes champs sous condition
WHERE partage = '1' au lieu de me prendre toute la colonne patage
merci d'avance
27 sept. 2006 à 09:04
@+
26 sept. 2006 à 18:33
Je n'ai pas compris de quel mise à jour tu parles... Synthèse des commentaires? Autres précisions? ...?
Sinon, ne mieux, y'a une version II (regarde ds mes sources).
@++
R@f
26 sept. 2006 à 16:59
je me permet de faire une suggestion à coockiesch en particulier mais aussi aux autres personnes qui ont postés
des commentaires sur cette source : coockiesch, il faudrait vraiment que tu fasse une mise à jour générale de ton code
car là je ne comprend rien à ce qui est dit !
Enfin, ça serait sympa de le faire pour tout le monde car justement tout le monde écrit son code à l'arrache comme commentaire
et résultat je capte rien ! Je pense pas que je soit le seul à ne pas comprendre....
Merci de faire cette MAJ...
Epoc
20 févr. 2006 à 09:05
++
20 févr. 2006 à 08:53
@++
R@f
19 févr. 2006 à 00:09
Lors de la recherche contenant une apostrophe, il ne trouve aucun résultat, alors que dans ma table, il devrait. Comment pourrait on faire pour y rémedier ???
17 févr. 2006 à 07:12
if( empty( rtrim( $mots ) ) )
Ne passe pas.
Mais:
$mots = rtrim( $mots );
if( empty( $mots ) )
Est ok... :D
@++
R@f
16 févr. 2006 à 20:36
if ($mots==''){
echo "Votre recherche ne contient pas de mots clés.";
exit;
}
A+
16 févr. 2006 à 20:00
@++
R@f
16 févr. 2006 à 10:31
else if($option 'sentence') $search '~#^!|!^#~ LIKE \'%' . $mots ." ". '%\'';
Ceci, afin de ne pas faire la recherche si aucun mot clés dans la recherche de phrase exacte :
if (trim($mots)==''){
echo "Votre recherche ne contient pas de mots clés.";
exit;
}
Qu'en pensez-vous ?
16 févr. 2006 à 10:10
N'hésitez pas à rajouter des améliorations ou autre si vous en trouvez.
A + !
3 févr. 2006 à 15:46
Le static a bien sa place dans le if: si c'est la première fois que la fonction est appelée, on crée la variable. Static indique simplement que la valeur sera gardée en mémoire enrte plusieurs appels de la fonction, au contraire d'une variable "normale"
$req_search = requete('titre,liens','recherche', array('titre','keywords'), 'titre,liens', 'liens', 'ASC', 1, 20);
Normalement, on appelle la fonction comme tu l'a fait. Pas besoin de faire l'affectation.
Par contre: ne pas modifier la code de la fonction... Tu as déclaré des variables au début, il faut pas. L'intérêt d'une fonction c'est justement d'avoir des paramètres.
Essaie de reprendre mon code tel qu'il est posté et d'appeler ta fonction comme tu l'a fait:
$req_search = requete('titre,liens','recherche', array('titre','keywords'), 'titre,liens', 'liens', 'ASC', 1, 20);
Ca change qqch?
On va y arriver! :)
@++
R@f
2 févr. 2006 à 18:24
deux bugs résolus :
dans le code une variable limit_nomb au début et à la fin, limit_nb.
ce qui est une erreur.
cette portion
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
je l'ai transformé en çà
static $fonction_requete = 1;
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
çà plait davantage à zend.la variable utilisé avant d'être déclarée çà ne lui plaisait pas...et à toi? c'est correct dans le contexte?
le pb de variables non déclarés je l'ai résolu comme çà
function requete($select ='titre,liens',$table ='recherche',$champs ='titre,keywords',$order ='titre',$sens ='ASC',$limit_start='0',$limit_nomb='10', $count = '')
{
par contre, j'ai toujours cette erreur d'expression dont le résultat n'est pas utilisé.
2 févr. 2006 à 14:22
alors après plusieurs tests, il y à du mieux, mais sql retourne cette erreur:
MySQL Error'
SELECT titre,liens FROM recherche WHERE ( titre,keywords LIKE '%accords%' AND titre,keywords LIKE '%gammes%' ) ORDER BY titre ASC LIMIT 1, 1
Operand should contain 1 column(s)
l'opérande devrait contenir une colonne.çà ne me parle pas.zendstudio, lui, retourne :
ligne 2:argument de fonction non utilisés pour les variables de la fonction sauf count et limit_nomb.
pour limit_nomb, la valeur de la variable n'est pas utilisée et n'apparait qu'une fois(ligne 10).
la variable fonction_requete est utilisée mais pas définie et le résultat de l'expréssion n'est jamais utilisé(ligne 91).
j'essai depuis hier plusieurs combinaisons, rien à faire.je sollicite donc, une fois de plus ton expérience.
voilà les codes
<?php
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')
{
$table ='recherche';
$champs ='titre,keywords';
$select ='titre,liens';
$order ='titre';
$sens ='ASC';
$limit_start='1';
$limit_nomb='10';
$count ='';
$option = $_POST['option'];
$search = $_POST['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option 'all' || $option 'one')
{
// liste des mots
$mots = explode(' ', $search);
// sépararateur
if($option == 'all')
$sep = ' AND ';
else
$sep = ' OR ';
} // if($option 'all' || $option 'one')
// "Rechercher l'expression exacte"
else
{
$mots = $search;
$sep = '';
}
} // if(!isset($fonction_requete))
if(!is_array($champs))
$champs = array($champs);
if($option 'all' || $option 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option 'all' || $option 'one')
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
// ajout des champs
foreach($champs as $champ)
{
if(!$i)
{
$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
}
if(empty($count))
$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
return $req_search;
}
include_once ("fichiers/connect.php");
$req_search = requete('titre,liens','recherche', array('titre','keywords'), 'titre,liens', 'liens', 'ASC', 1, 20);
$result = mysql_query($req_search) or die("MySQL Error'
".$req_search.'
'.mysql_error());
echo 'nombre de résultats pour votre requête : ' . mysql_num_rows($result); // affichera le nombre d'enregistrements retournés"
echo 'pages de résultats : ' . mysql_fetch_array($req_search);
?>
2 févr. 2006 à 08:12
C'est tout bon, pour toi? :)
@++
R@f
1 févr. 2006 à 21:56
En ce qui me concerne c'est une recherche pour des sites (annuaire), on recherche les mots dans les champs nom, mini_desc, description
ca donne ceci :
$requete = requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
$result = mysql_query( $requete ) or die('Erreur MySQL');
while($data100 = mysql_fetch_array($result)){
$nom_site = $data100['nom'];
$mini_desc_site = $data100['mini_desc'];
$description_site = $data100['description'];
if($option 'all' || $option 'one') {
$mots = explode(' ', $search);
foreach($mots as $mot) {
$replace=''.$mot.'';
$mini_desc2 = str_replace($mot,$replace,$mini_desc_site);
$nom2 = str_replace($mot,$replace,$nom_site);
$description2 = str_replace($mot,$replace,$description_site);
$nom_site = $nom2;
$mini_desc_site = $mini_desc2;
$description_site = $description2;
}
}
else{
$mots = $search;
$replace=''.$mots.'';
$mini_desc2 = str_replace($mots,$replace,$mini_desc_site);
$nom2 = str_replace($mots,$replace,$nom_site);
$description2 = str_replace($mot,$replace,$description_site);
}
echo "Nom : ".$nom2."
".$mini_desc2."Description :
".$description2."";
}
1 févr. 2006 à 21:05
coockiesch --> ton message du 01/02/2006 19:06:43 tout a l'heure il s'arretait a "Oki, alors oublions tout ça et repartons d'un bon pied sur le code, :)"
j'avais pas tout le reste d'affiché !!
1 févr. 2006 à 21:03
1 févr. 2006 à 20:53
Enfin faut vraiment en avoir l'utilité, normalement pour un moteur de recherche si l'on veux affiché tout les resultats on met un limit_start = 0
1 févr. 2006 à 20:48
$requete = requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
$result = mysql_query( $requete ) or die('Erreur MySQL');
ca marche a peu pres, j'ai pas tout ce que je veux
1 févr. 2006 à 20:38
ligne 124 :
$req_search = function_requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
1 févr. 2006 à 19:23
Alors, comme j'ai dit à BJ33, $start=0;
Ensuite, ben tu appelles la fonction avec tes params:
$req_search = function_requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
ensuite:
$result = mysql_query( $req_search ) or die('Erreur MySQL');
// affichage & co
Ca joue comme ca?
@++
R@f
1 févr. 2006 à 19:20
1 févr. 2006 à 19:19
$champs = 'mini_desc';
$select = 'mini_desc';
$order= 'nom';
$sens = 'ASC';
$limit_start= '1';
$limit_nb = '10';
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')
{
// option de recherche
$option = $_POST['option'];
// texte de recherche
$search = $_POST['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option 'all' || $option 'one')
{
// liste des mots
$mots = explode(' ', $search);
// sépararateur
if($option == 'all')
$sep = ' AND ';
else
$sep = ' OR ';
} // if($option 'all' || $option 'one')
// "Rechercher l'expression exacte"
else
{
$mots = $search;
$sep = '';
}
} // if(!isset($fonction_requete))
if(!is_array($champs))
$champs = array($champs);
if($option 'all' || $option 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option 'all' || $option 'one')
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
// ajout des champs
foreach($champs as $champ)
{
if(!$i)
{
$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
}
if(empty($count))
$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
return $req_search;
}
1 févr. 2006 à 19:17
je t'envoi mon script
1 févr. 2006 à 19:16
@++
R@f
1 févr. 2006 à 19:14
echo "requete : ".$req_search."
";
print "requete : ".$req_search."
";
ca ne m'affiche rien
1 févr. 2006 à 19:12
Ca donne quoi à l'affichage?
@++
R@f
1 févr. 2006 à 19:11
$sql100 = mysql_query("SELECT * FROM $table WHERE $champs LIKE '%$search%' ORDER BY $order $sens");
while....
et ça fonctionne
1 févr. 2006 à 19:09
Oui!
Mais on préfère echo à print pcq c plus rapide:
echo $req_search;
@++
R@f
1 févr. 2006 à 19:06
Oui, je comprends! Cela m'est arrivé aussi bien souvent, et m'arrive encore parfois. Oki, alors oublions tout ça et repartons d'un bon pied sur le code, :)
include_once ("fichiers/connect.php");
$req_search = requete('recherche', array('titre', 'keywords'), 'titre, liens', 'liens', 'ASC', 1, 20);
$result = mysql_query($requete);
- l'appel de la fonction avec ses paramètres est OK, pour moi
- petite erreur: tu enregistre la requête crée par la fonction dans $req_search mais tu utilises $requete dans mysql_query
Essaie:
include_once ("fichiers/connect.php");
$req_search = requete('recherche', array('titre', 'keywords'), 'titre, liens', 'liens', 'ASC', 1, 20);
$result = mysql_query($req_search) or die('MySQL Error'); // Affichera MySQL Error et bloquera le script en cas d'erreur mysql
Ensuite:
echo $req_search . '
'; // affichera la requête
eccho 'nb: ' . mysql_num_rows($result); // affichera le nombre d'enregistrements retournés
Pour la suite:
- on met start à 0 et pas à 1 ( le premier enregistrement est l'enregistrement 0 et pas 1, comme pour les tableaux ).
- comment fais-tu l'affichage des résultats?
Voilà!
@++
R@f
1 févr. 2006 à 19:04
print $req_search; ??
1 févr. 2006 à 19:04
print $req_search; ??
1 févr. 2006 à 13:34
tu attendais une réponse, ok, désolé, je ne pensais pas que c'était le cas.c'est vrai, c'est un msg agréssif, çà m'à énervé de lire la réponse que tu à écrit pour joebuz, le jour même alors que le mien à deux mois tout juste.je retire.tu acceptes mes excuses?
en fait, en tant que débutants, ont se retrouvent souvent confrontés à, peut être pas du mépris, mais au moins de l'indifférence, quand l'on pose des questions qui appellent des réponses qui paraissent évidentes aux initiés.c'est particulièrement vrai sur les sites cs et prog en général.et çà, c'est diablement frustrant.d'où, parfois, des écarts de conduite élémentaire.je m'en excuse encore.
à l'époque, j'ai lù ce code et il m'à emballé, je l'ai donc testé.je ne comprenais même pas ce que je devais faire pour paramétrer la fonction, CF: le commentaire au dessus de celui de joebuzz.
aujourd'hui, j'ai coder un moteur simple, à la mesure de mes compétences php(je viens d'en finir avec les variables, les opérateurs et les boucles, j'attaque justement les fonctions), il ne recherche qu'un mot clé et marche bien.mais si tu veux m'expliquer comment le paramétrer, je prend.
ma question : est ce que je dois entrer les paramétres comme ceçi ou est ce que çà doit rester vide?
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = 'recherche,("titre","keywords"),(titre,liens),titre,asc,1,20')
{
sinon, est ce correct?
pour la requête, j'avais tenter çà :
include_once ("fichiers/connect.php");
$req_search = requete('recherche', array('titre', 'keywords'), 'titre, liens', 'liens', 'ASC', 1, 20);
$result = mysql_query($requete);
et aussi ce que tu suggérais, à savoir :
Il te suffit d'appeler la fonction avec les bons params, par exemple:
# $requete = requete('table', array('champ1', 'champ2', 'champ3'), 'id, champ4', 'id', 'DESC', 10, 25);
# $result = mysql_query($requete);
je n'obtiens rien d'autre qu'une page blanche.avec dans la source, uniquement les entètes html.
1 févr. 2006 à 12:35
@++
R@f
31 janv. 2006 à 21:13
Je suis désolé mais je n'avais pas vu ton deuxième commentaire... En règle générale, j'essaie de répondre le plus vite possible, ce que j'ai fait avec la question de JOEBUZ... Petit couac dans le cadre de ta question, nullement question de mépris...
@++
R@f
31 janv. 2006 à 20:31
merci monsieur le programmeur Professionel pour cette réponse rapide.les débutants que nous sommes vous salut bien bas pour votre mépris...
31 janv. 2006 à 20:09
Tu pourrais afficher la requête crée par ma fonction? Et si tu colle ce code dans phpmyadmin, ca renvoie qqch?
@++
R@f
31 janv. 2006 à 18:43
j'ai mis le formulaire ds un fichier index.html
et créé un fichier search.php ou dedans j'ai mis :
$bdd_host = 'host';
$bdd_login = 'login';
$bdd_pass = '*****';
$bdd_base = 'base';
$bdd_conect = mysql_connect("$bdd_host", "$bdd_login", "$bdd_pass") or die('erreur connection sql');
mysql_select_db("$bdd_base") or die('oops pas de base de donnée');
$table = 'NV_sites';
$champs = array('nom', 'mini_desc', 'description');
$select = 'mini_desc';
$order= 'description';
$sens = 'ASC';
$limit_start = '1';
$limit_nb = '25';
[Ton code]
et ca ne m'affiche qu'une page blanche pourtant je recherche des mots qui sont dans ma table !
30 nov. 2005 à 14:01
je ne comprend rien du tout à la façon de passer les paramètres.je publie le dernier essai :
ma table est structurée ainsi :
id (uniquement pour la maintenance)
keywords
titre
liens
j'ai tenter de comprendre la structure de la requête...c'est plus fort que moi!je débute en php/mysql.avec un seul mot à rechercher pas de soucis mais plusieurs...ce code est exactement ce que je cherche à utiliser pour la nouvelle version de mon site, j'en ai essayer un bon nombre, c'est celui là qu'il me faut, même si je n'arrive pas à le faire fonctionner.un exemple parlant serait le bienvenue.
29 nov. 2005 à 20:36
SELECT $champs FROM $table WHERE ... ORDER BY $order $sens LIMIT $limit_start, $limit_nb
>> Ce n'est que pour indiquer à des personnes connaissant le SQL quelle tête la requête va avoir.
Il te suffit d'appeler la fonction avec les bons params, par exemple:
# $requete = requete('table', array('champ1', 'champ2', 'champ3'), 'id, champ4', 'id', 'DESC', 10, 25);
# $result = mysql_query($requete);
@++
R@f
26 nov. 2005 à 18:19
très intéréssant, mais à part le formulaire, je suis perdu.
en effet, je n'obtient qu'une page blanche et dans la source le code html que j'ai rentré, rien d'autre.
c'est surement dû au fait que je ne comprends pas les champs(leurs noms).
la variable champs et table, c'est ok.mais order, çà correspond à quoi? et pourquoi le where est suivi de ..., le limit_start, je ne vois pas non plus.
comment j'éffectue ma requête?
et les arguments de la fonction, je les passe comme çà?
dico : table
définition : champs de recherche
"definition,notes,signature" : le select
asc : order by
20 : limit
j'ai supprimer les variables order et $limit_start
si quelqu'un peux m'éclairer.
14 sept. 2005 à 16:45
Contacte moi par MP:
On se croise sur MSN ou par mail afin que tu m'explique...
@++
R@f
14 sept. 2005 à 16:37
donc voila j'explique ma situation donc je vais partit d'un staff de jeu online je cherchait a faire pour les joueur un site en php et integrer une recherche dur la database du jeux
exemple:le joueur tape toto et hop il vois que tot c le nom d'1 item qu'il est vendu a tel endroit et le prix etc....
ensuite pour le script (je sais que l'erreur viens de moi)
j'utilise Easy php pour le faire en local pour tester pour pouvoir le metre on line plus tard,donc je me suis scripter un site basic en php bouton etc donc g mis mon bouton item ensuite g crée un item.php et incorporer le script dedans
g aussi fait un dbconnect voila
desoler si j'ecrit trop et merci d'avance
14 sept. 2005 à 12:47
Tu peux nous expliquer comment tu as mis en place le script? Ce que contiennent les différents fichiers?
@++
R@f
14 sept. 2005 à 03:51
exemple:j me co dessus je voit le cadre avec recher etc..
mais en dessous ca me fait ca : 13. 14. ************************* 15. fonction de création de requête 16. ************************* 17. function requete($table, $champs, a partir de la il liste tous
voila merci pour tout
14 juin 2005 à 21:37
Cette fonction te retourne une requête mais ne l'exécute pas. A toi de te connecter avant l'exécution de celle ci...
En fait, on insère ~#^!|!^#~à la place des mots à chercher et on y remplace par les bons mots après... Ca fait gagner du temps, :)
@++
R@f
14 juin 2005 à 10:38
je ne comprend pas cette ligne
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
Peut on me l'expliquer, et quand doit on se connecter à la BDD
2 juin 2005 à 15:26
Il faudrait que tu regarder des tutos sur les bases de données, ca prend un peu de temps à assimilier et à apprendre comment bosser avec...
Par exemple: http://cyberzoide.developpez.com/php4/mysql/
@++
R@f
2 juin 2005 à 09:22
Je suis très nul au niveau base de donner, j'aimerait savoir comment en créer une est après mettre les liens qui pouront êtres rechercher pas le moteur de rechercher ( votre code ).
Merci de méclèrsir !
25 févr. 2005 à 10:45
si vous appliquez ces modifs ne pas oublier de passer $stripmots2 a foreach
++
25 févr. 2005 à 10:41
j'ai fait qques modifs pour affiner encore les recherches
petit bout de code qui evite d'avoir un array[x]=vide lorsque l'on rentre plusieurs espaces dans la string $search pour option 'all' 'one' , et retire les articles lors de la recherche
voila j'esperes que j'ai pas fait ou dit de betises
$nognog == 'debutant';
++
24 févr. 2005 à 11:45
Merci pour l'idée...
Donc, je retirerai quels mots dans les recherches en AND et OR:
le, la, les, un, une, des, l'
Autres idées?
@++
R@f
24 févr. 2005 à 10:44
j'ai trouvé un ptit truc tout bete pour affiner la recherche sur l'expression exacte.
dans la fonction tu encodes un espace, ce qui a pour effet de couper le mot (donc extrait ne peu contenir extra+1space ) et ainsi avoir une expression qui est exacte dans la recherche
sinon j'ai une ptite remarque il serait sympa de faire une petite fonction qui retire tous les articles pour les recherches autre que exacte sinon ca renvoit trop de references
merci bcp pour ton script il est super :)
++
23 févr. 2005 à 16:06
Je sais pas, je pense pas...
Pcq si tu enlève les %, tu auras d'autres pbs...
@++
R@f
23 févr. 2005 à 15:23
je suis debutant et j'ai un souci avec ton script
j'ai reussi a le faire fonctionner et faire mes affichage , mais par exemple qd je cherche l'expression exacte sur 'extra' je me retrouve avec des resultats incluant 'extrait' .
ce qui est juste vu que texte LIKE '%extra%' : 'extrait contient bien extra' mais cependant ce n'est pas l'expression exacte d'ou une recherche legerement faussée .
ya til une solution simple a ce probleme ? sinon je peux vivre avec :)
21 oct. 2004 à 16:52
Non, car l'expression excate peut être encadrée par un texte autre...
Si on cherche "cette phrase" dans un champ qui contient "je me demande si ctte phrase est juste", la requête doit retourner ce résultat....
@++
R@f
21 oct. 2004 à 14:38
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
devrait plutôt s'écrire sans '% %' pour l'option "l'expression exacte" :
$search = '~#^!|!^#~ LIKE \'' . $mots . '\'';