begin process at 2012 02 13 01:17:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Autre

 > 

moteur de recherche


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

moteur de recherche

lundi 29 juin 2009 à 11:30:58 | moteur de recherche

ERDOGANAK

Bonjour dans le cadre de mon stage d'étè je développe un outil de collaboration en xhtml/php/css couplé a une base de donné où des fichiers seront mis a disposition pour collaborer, entre les utilisateurs qui ont droit d'acceder sur la "g.e.d".

je rencontre un problème au niveau du moteur de recherche, quoi que je tape dans la barre de recherche j'obtiens article trouvé :

<html>
<?php
$host = "localhost";
$user = "erdoganak";
$password = "0000";
$bdd = "base";

$Mot = $_POST['Mot'];

mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");

// on choisit la bonne base
mysql_select_db($bdd) or die ("Connexion a la base impossible");

echo "
<html>

<head>

<title>Résultat de la recherche</title>

</head>

<body>";

if (($Mot == "")||($Mot == "%")) {
// Si aucun mot clé n'a été saisi,le script demande à l'utilisateur de bien vouloir préciser un mot clé

    echo "
    Veuillez entrer un mot clé s'il vous plaît!
    <p>";
}

else {
// On selectionne les enregistrements contenant le mot clé
// dans les keywords ou le titre
    $query = "SELECT distinct count(lien) FROM search
    WHERE keyword LIKE \"%$Mot%\"
    OR titre LIKE \"%$Mot%\"
    ";

    $result = mysql_query($query);

    $row = mysql_fetch_row($result);

    $Nombre = $row[0];

// Si aucun enregistrement n'est retourné, on affiche un message adéquat
if ($Nombre == "0") {
    echo "
    <h2>Aucun résultat ne correspond à votre recherche</h2>

    <p>

    ";
}

// Sinon, on affiche le nombre d'enregistrements correspondant et les résultats eux-mêmes
else {
    $query = "SELECT distinct lien,keyword,titre FROM search
    WHERE keyword LIKE \"%$Mot%\"
    OR titre LIKE \"%$Mot%\" ORDER by titre ASC";

    $result = mysql_query($query);

    // Si un seul enregistrement est trouvé, on affiche un message au singulier
    if ($Nombre == "1") {
    echo "
    <a name=\"#resultat\"><h2>Résultat: Un article trouvé</h2></a>

    <p>";

    }
    // Dans le cas contraire le message est au pluriel...
    else {
    echo "
    <a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a>

    <p>";

    }
    while($row = mysql_fetch_row($result))
    {
        echo "
        <p>\n
        <b>$row[2]</b>\n
        <br><a href=\"../$row[0]\">Visualiser l'article</a>\n
        <p>\n
        ";

    }
}

}

// on ferme la base
mysql_close();

?>
</body>
</html>

merci d'avance
lundi 29 juin 2009 à 15:47:19 | Re : moteur de recherche

kankrelune

Membre Club
Réponse acceptée !
$Mot = $_POST['Mot'];

LIKE \"%$Mot%\"

Raaaaaah comme c'est pas beau... tu fais quoi si je fais une recherche à

"; DROP TABLE search; #

ta requete devenant...

SELECT distinct count(lien) FROM search WHERE keyword LIKE "%"; DROP TABLE search; #%" OR titre LIKE "%"; DROP TABLE search; #%"

je te laisse imaginer la suite... bon cet exemple ne marcherait pas car maintenant mysql_query n'accepte qu'un requête a la fois mais le principe est là et d'autre injection sont possible avec ta requête... donc déjà...

if(isset($_POST['Mot'])) {
    $mot = mysql_real_escape_string($_POST['Mot']);
}
else {
    $mot = '';
}

http://fr2.php.net/mysql_real_escape_string

ensuite... ta requête semble bien formée... as tu essayer de la tester dans phpmyadmin... tu fais une recherche avec un mot ou avec une phrase... si c'est avec une phrase split là et construit ta requête avec chaques mots indépendamment... fais un truc dans le genre... .. .

$Mots = explode(' ', $Mots);
$first = array_shift($Mots);
$req1 = ' keywords LIKE "%'.$first.'%"';
$req2 = ' OR title LIKE "%'.$first.'%"';
if(!empty($Mots)) {
    $i= -1;
    while(isset($Mots[++$i])) {
        $req1 .= ' OR keyword LIKE "%'.$Mots[$i].'%"';
        $req2 .= ' OR title LIKE "%'.$Mots[$i].'%"';
    }
}
$query = 'SELECT distinct lien, keyword, titre FROM search WHERE '.req1.req2.' ORDER by titre ASC';

Par contre

$Nombre == "0"

>>

$Nombre === 0

--

if(($Mot == "")

>>

if(empty($Mot))

Je vois pas l'intérêt de faire 2 requêtes... c'est inutile de faire un count() sur ta table d'abord... tu fais ta requête pour récupérer tes enregistrements et ensuite tu regarde si tu as un retour avec mysql_num_rows()

http://fr3.php.net/mysql_num_rows

@ tchaOo°
lundi 29 juin 2009 à 15:57:09 | Re : moteur de recherche

kankrelune

Membre Club
Réponse acceptée !
Ah j'oubliais tu peux mettre des parenthèses dans tes like pour filtrer un peu le bousin

WHERE field LIKE "%test%" OR title LIKE "%test%" OR field LIKE "%pwet%" OR title LIKE "%pwet%"

ne retournera pas la même chose que...

WHERE (field LIKE "%test%" OR title LIKE "%test%") OR (field LIKE "%pwet%" OR title LIKE "%pwet%")

Mais ça c'est à toi de voir... .. .

@ tchaOo°


Cette discussion est classée dans : mot, recherche, query, echo, row


Répondre à ce message

Sujets en rapport avec ce message

recuperer une variable d'un switch [ par ASPerix ] Bonjour,Je n'arrive pas a transmettre une variable hors de mon switchj'utiliseune base MySQLswitch ($page) { case "1" : $query="select * from toto whe moteur de recherche [ par cobrachris ] bonjour à tous,J'ai un petit problème sur un moteur de recherche que j'ai trouvé sur le site. J'ai modifier les champs dans lesquels faire la recherch Problème avec un soit disant moteur de recherche lol [ par gssk ] Au fait j'ai fait un "moteur de recherche" (code pourrave je le sais merci !!), et je n'ai que d erreur de variables indéfini! tels que Mot,idM,nomM e bleme de logique sans doute [ par le_virus ] Salut! Je suis débutant en PHP! Ce code s'exécute mais ce qui ménerve, ya pas de bug mais ca marche pas! il n'arrive pas a récuperer la le contenu du insertion et sortie de smiley [ par speedylol ] Bonjour j'ai crée un petit script de messagerie life entre membre connecter , mais les images de smiley ne sorte pas dans la deuxieme partie de mon sc problème de création de moteur de recherche [ par astuces_jeux ] bonjour,j'ai utilisé le moteur de recherche ici : http://www.plb.fr/v3/ccm/php/phpmoteur.phpet j'ai ces deux erreur :Parse error: syntax error, unexpe transfert de données d'un page aa l'autre [ par cobra176 ] bonjour a tous j'ai un probleme de transfert de donnéesj'ai fait un moteur de recherche sur un base sqlil m'affiche certains que lui indique puis je v SQL [ par dudu134 ] Dudu134Bonjour à tous le forum,Voici mon code :$query = mysql_query('SHOW COLUMNS FROM nom_logiciels') or die(mysql_error());while ($row = mysql_fetch php+calcul+nbre heure [ par pandouta08 ] bonjour,je voudrais savoir comment je peux calculer le nombre d'heures entre 2 dates de la meme journée .j'ai une date sortie et une date entrée de ty crée un moteur de recherche [ par minoula2006 ] bonjour à tous mon pb c que je veut crée un moteur de recherche mais j'ai pas réussi 1- j'ai crée ma table : recherche les champs: clé , lien et ti


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,872 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales