Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/01/2012, 22h04   #1
Invité de passage
 
Homme Goudet Valentin
Étudiant
Inscription : mai 2010
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Goudet Valentin
Âge : 16
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 35
Points : 4
Points : 4
Par défaut Recherche par priorité

Bonjour,

J'ai fait un système qui me permet d'afficher des vidéos ainsi qu'un champs de recherche. Je voudrais avec le champ LIKE me semble t-il (j'ai encore du mal à le maîtriser) faire une recherche.

Mais par priorité c'est à dire. Si je recherche "Aaa bbb". Et que j'ai une entrée "aaa" et l'autre "aaa bbb" se soit la deuxième qui soit le mieux classé puisqu'elle est plus proche de se que l'on a entrer.

Voici mon code actuel :
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
    $messagesParPage=9;
    $retour_total=$bdd->query('SELECT COUNT(*) AS total FROM site_video WHERE pseudo = "'.$pseudoChaine.'"'); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=$retour_total->fetch();
    $total=$donnees_total['total'];
    $nombreDePages=ceil($total/$messagesParPage);
 
    if(isset($_GET['page'])){$pageActuelle=intval($_GET['page']);if($pageActuelle>$nombreDePages){$pageActuelle=$nombreDePages;}}else{$pageActuelle=1;}
    $premiereEntree=($pageActuelle-1)*$messagesParPage;
 
    $retour_messages=$bdd->query('SELECT * FROM site_video WHERE pseudo = "'.$pseudoChaine.'" ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
    while($videos=$retour_messages->fetch()){ ?>
    <div id="img_play">
        <a href="video.php?v=<?php echo $videos['id_youtube']; ?>&id=<?php echo $videos['id']; ?>"><img src="<?php echo $videos['image']; ?>" id="img_sousplay" width="256px" height="192px"/>
        <span style="color:black;font-size:13px;text-decoration:none;"><?php echo ucwords($videos['nom']); ?></span></a>
    </div>
<?php } ?>



Une idée pour faire ça ?
Merci d'avance.
Valentin.
valentin45000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 07h56   #2
Membre expérimenté
 
Avatar de redoran
 
Homme
Developpeur- Amateur
Inscription : juin 2010
Messages : 981
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40
Localisation : Algérie

Informations professionnelles :
Activité : Developpeur- Amateur
Secteur : Santé

Informations forums :
Inscription : juin 2010
Messages : 981
Points : 572
Points : 572
Envoyer un message via Skype™ à redoran
Salam ; comme ça a la volé je dirai genre :
$requete= "select * from tatable where critére LIKE ".$tavariable."%";
en delphi j’utiliserai findnearest l'equivalent en php !!!!!!

fait un tour :
http://www.supportduweb.com/scripts_...-internet.html
une bonne tasse de ca ferai du bien pour ceux qui ont eu passage difficile a 2012
redoran est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 08h36   #3
Futur Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 18
Points : 18
Regarde la fonction MATCH AGAINST
http://dev.mysql.com/doc/refman/5.0/...xt-search.html

Exemple :

Code :
1
2
3
SELECT *
FROM `user`
WHERE MATCH (`nom`) AGAINST('aaa bbb')
Ça tri les résultats par pertinence
laipreu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2012, 14h59   #4
Invité de passage
 
Homme Goudet Valentin
Étudiant
Inscription : mai 2010
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Goudet Valentin
Âge : 16
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 35
Points : 4
Points : 4
@redoran : Merci de prendre du temps pour me répondre mais je recherche à faire une recherche (sans mauvais jeux de mots) par pertinence.

@laipreu : Merci de prendre du temps également pour me répondre, j'ai donc PDO essayé ceci :
Code php :
1
2
3
4
$retour_messagesp=$bdd->query('SELECT * FROM site_video WHERE MATCH (`nom`) AGAINST("aaa bbb")');
while($videos=$retour_messagesp->fetch()){      
echo $videos['nom'];
}
Mais j'obtiens :
Citation:
Call to a member function fetch() on a non-object
D'avance, merci.

PS : L'erreur venais que mon champs n'étais pas en Full-Text dans ma BDD. Mais là il ne me renvoie aucun résultat ...
valentin45000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h19   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Je crois que la recherche FULL TEXT n'analyse les données qu'à partir de 4 caractères par défaut. Comme te recherche ne contient que deux mots de 3 lettres, peut-être que tu n'obtiens aucun résultat et que c'est ça qui provoque ensuite l'erreur PHP.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h21   #6
Invité de passage
 
Homme Goudet Valentin
Étudiant
Inscription : mai 2010
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Goudet Valentin
Âge : 16
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 35
Points : 4
Points : 4
J'ai essayé avec plus de caractère mais pareil
PS : AH oui mais non, y a t-il un moyen que les moins de caractère soit toléré, 2 par exemple ?
J'avais entendu parlais de ft_min_word_len c'est dans le php.ini ?
valentin45000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 00h21   #7
Futur Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 18
Points : 18
Yep c'est limité à 4 par défaut, je sais qu'on peut le bouger, mais je ne sais pas comment (je n'ai pas eu à m'y pencher pour le moment).

Pour ton erreur tu as bien mis le champ `nom` en FULLTEXT dans ta base de données? Et si tu as déclaré plusieurs champs en FULLTEXT dans une même table tu dois tous les inclure dans la requête. Sinon ça ne fonctionnera pas (ou alors je ne connais pas la feinte).
Je viens de découvrir cette fonction, donc je suis encore en mode découverte
laipreu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h33.


 
 
 
 
Partenaires

Hébergement Web