begin process at 2010 02 10 07:17:02
  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 recherche sur un serveur ldap : probleme [ par bullrot1985 ] Bonjour a tous.J'ai un soucis au niveau de ma requete php sur mon serveur ldap.Je vous poste une photo de mon active directory et de mon script...j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,452 sec (4)

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