[PHP] Fonction Match Qui Ne Fonctionne Pas
                    
        
     
             
                    max1395
    
        
    
                    Messages postés
            
                
     
             
            95
        
            
                                    Statut
            Membre
                    
                -
                                     
max1395 Messages postés 95 Statut Membre -
        max1395 Messages postés 95 Statut Membre -
        Bonjour,    
Je voudrais créer un site web qui fait des recherches sur des vidéos, pour chaque vidéos que j'ajoute je rentre ces informations :
-ID : L'ID de la vidéos
-Titre : Son titre
-Lien : Le lien vers la vidéos
-Image : Une image pour représenter la vidéos sur la page de recherche
-Keyword1 : Un mot clé pour la recherche
-Keyword2 : Un deuxième mot clé pour la recherche
-Keyword3 : Un troisième mot clé pour la recherche
Pour que mon moteur de recherche soit pertinent, j'utilise la fonction MATCH, mais pour l'instant mes essais non rien donnée, la fonction ne marche pas, ça n'affiche rien même quand un mot clé est entré. Voilà le code du formulaire :
Et la page de recherche qui affiche les résultats :
Bien sûre rien n'est afficher, donc ce qui montre que la requête n'est pas vide vu que je n'ai pas le message d'erreur, mais rien ne s'affiche, pourquoi ?
Merci de vos réponses
            
            
                
            
                
    
    
    
        Je voudrais créer un site web qui fait des recherches sur des vidéos, pour chaque vidéos que j'ajoute je rentre ces informations :
-ID : L'ID de la vidéos
-Titre : Son titre
-Lien : Le lien vers la vidéos
-Image : Une image pour représenter la vidéos sur la page de recherche
-Keyword1 : Un mot clé pour la recherche
-Keyword2 : Un deuxième mot clé pour la recherche
-Keyword3 : Un troisième mot clé pour la recherche
Pour que mon moteur de recherche soit pertinent, j'utilise la fonction MATCH, mais pour l'instant mes essais non rien donnée, la fonction ne marche pas, ça n'affiche rien même quand un mot clé est entré. Voilà le code du formulaire :
<FORM method=post action="search.php"> <INPUT type=text name="search" size="50"> <INPUT type="submit" value="Search"> </FORM>
Et la page de recherche qui affiche les résultats :
<?php   
// Déclaration des paramètres de connexion   
$host ="localhost";   
$user ="root";   
$bdd ="******";   
$passwd  ="*********";   
$fulltext = $_POST['search'];   
// Connexion au serveur   
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");   
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");   
// Creation et envoi de la requete   
$query = "SELECT * FROM Video WHERE MATCH (Keyword1,Keyword2) AGAINST ('$fulltext')";   
$result = mysql_query($query);   
//Test si la requête est vide    
if(!$result)   
{   
echo "No result..."   
}   
else   
// Recuperation des resultats   
while($row = mysql_fetch_row($result))   
{   
?>   
<a href="<?php echo $row['Lien']; ?>">   
<?php echo $row['Image']; ?>   
<p style="width: 40px;">   
<?php echo $row['Titre']; ?>   
</a>   
<?php   
}   
}   
?>   
Bien sûre rien n'est afficher, donc ce qui montre que la requête n'est pas vide vu que je n'ai pas le message d'erreur, mais rien ne s'affiche, pourquoi ?
Merci de vos réponses
        A voir également:         
- [PHP] Fonction Match Qui Ne Fonctionne Pas
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Expert php pinterest - Télécharger - Langages
3 réponses
                        
                    à la place de mettre !$result, essaye de mettre isset($result) , peut être que c'est sa mais je ne suis pas sur
                
                
    
                
                        
                    Salut,    
Je pense que ton erreur vient de la requête.
Doit s'écrire :
les " et les ' sont complétements différents, il ne faut en choisir qu'un pour délimiter.
En effet, si on veut ajouter le contenu d'une variable dans une autre, on doit mettre un . qui veut dire ET.
Exemple :
C'est une première chose.
Maintenant, parlons Sécurité.
Tu vas finalement te retrouver avec un site entièrement piratable. Tu ne vérifies même pas le contenu de $_POST['search'], qui peut être bien autre chose qu'un simple mot clef au bon vouloir de l'utilisateur, qui n'est pas toujours gentil.
IL FAUT UTILISER LES REQUÊTES PRÉPARÉES !!
C'est plus simple, et ça t'empêchera de voir ton site se faire pirater.
Un excellent tutoriel A LIRE EN ENTIER.
http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html
Donc tu vas devoir recoder tout ça, enfin je te le conseille vivement après c'est toi qui voit ...
Musicalement,
DJ Fire-Bl@ck.
    
                Je pense que ton erreur vient de la requête.
$query = "SELECT * FROM Video WHERE MATCH (Keyword1,Keyword2) AGAINST ('$fulltext')";
Doit s'écrire :
$query = "SELECT * FROM Video WHERE MATCH (Keyword1,Keyword2) AGAINST (".$fulltext.")";
les " et les ' sont complétements différents, il ne faut en choisir qu'un pour délimiter.
En effet, si on veut ajouter le contenu d'une variable dans une autre, on doit mettre un . qui veut dire ET.
Exemple :
$texte_variant = "UN AUTRE"; $texte_final = "UN TEXTE ET ".$texte_variant;
C'est une première chose.
Maintenant, parlons Sécurité.
Tu vas finalement te retrouver avec un site entièrement piratable. Tu ne vérifies même pas le contenu de $_POST['search'], qui peut être bien autre chose qu'un simple mot clef au bon vouloir de l'utilisateur, qui n'est pas toujours gentil.
IL FAUT UTILISER LES REQUÊTES PRÉPARÉES !!
C'est plus simple, et ça t'empêchera de voir ton site se faire pirater.
Un excellent tutoriel A LIRE EN ENTIER.
http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html
Donc tu vas devoir recoder tout ça, enfin je te le conseille vivement après c'est toi qui voit ...
Musicalement,
DJ Fire-Bl@ck.
                        
                    Non enfaîte le problème ne vient pas de là, j'ai tester la requête dans Phpmyadmin, et ça ne renvoi rien, alors que ça devrait, je ne sais pas du tout où peut être le problème, voilà ma table Video :    
Avec une requête du type :
SELECT * FROM Video WHERE MATCH(keyword1,keyword2,keyword3) AGAINST('COMIQUE');
Rien n'est renvoyé :s
    
                -- phpMyAdmin SQL Dump -- version 3.4.10.1deb1 -- https://www.phpmyadmin.net/ -- Client: localhost -- Généré le : Sam 07 Juillet 2012 à 13:26 -- Version du serveur: 5.5.24 -- Version de PHP: 5.3.10-1ubuntu3.2 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Base de données: '*********' -- -- -------------------------------------------------------- -- -- Structure de la table 'Video' -- CREATE TABLE IF NOT EXISTS 'Video' ( 'ID' int(11) NOT NULL AUTO_INCREMENT, 'titre' text NOT NULL, 'lien' text NOT NULL, 'image' text NOT NULL, 'keyword1' text NOT NULL, 'keyword2' text NOT NULL, 'keyword3' text NOT NULL, PRIMARY KEY ('ID'), FULLTEXT KEY 'Keyword1' ('keyword1','keyword2'), FULLTEXT KEY 'Keyword1_2' ('keyword1') ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Contenu de la table 'Video' -- INSERT INTO 'Video' ('ID', 'titre', 'lien', 'image', 'keyword1', 'keyword2', 'keyword3') VALUES (1, 'KDSNFODSNFOSDFNSON', 'www.google.fr', 'jnononono', 'HORREUR', 'SANG', 'MEURTRE'), (2, 'ONONONO', 'ww.google.fr', 'ONONON', 'COMIQUE', 'DROLE', 'ACTION'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Avec une requête du type :
SELECT * FROM Video WHERE MATCH(keyword1,keyword2,keyword3) AGAINST('COMIQUE');
Rien n'est renvoyé :s
