Problème de création de moteur de recherche

Signaler
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010
-
astuces_jeux
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010
-
bonjour,
j'ai utilisé le moteur de recherche ici : http://www.plb.fr/v3/ccm/php/phpmoteur.php
et j'ai ces deux erreur :

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in search/result.php on line 27
et

Parse error: syntax error, unexpected '<' in //search/admin/indexation.php on line 22

on peut me les corrigés ces codes ???

voici les codes :

page de création de la base :

<html>

<head>

<title>Creation de la table</title>

</head>

<?php

$host = "Votre serveur de base de données";

$user = "Votre nom d'utilisateur";

$password = "Votre mot de passe";

$bdd = "Votre base de données sur le serveur";

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");

$query = "CREATE TABLE search (

   lien varchar(128) NOT NULL,

   keyword text,

   titre varchar(128),

  

   id INT(11),

   PRIMARY KEY (id)

)";

mysql_query($query) or die ("Erreur de modification de  la table");

// on ferme la base

mysql_close();

?>

</html>



Page d'indexation :


<?php

echo "

\n

\n

----
\n

Indexation du site en cours
\n, \n
\n

\n";

$host = "Le serveur de base de données";

$bdd = "Votre base de données";

/* Connexion avec MySQL */

mysql_connect($host,$user,$password) or die ("Impossible de se connecter

au serveur de base de donnees");

mysql_select_db($bdd) or die ("Impossible d'accéder à la base $bdd");

$query = "DELETE FROM search";

mysql_query($query) or die ("Erreur de modification de la table");

function ScanDir($Directory){

$MyDirectory = opendir($Directory);

while($Entry = readdir($MyDirectory)) {

echo "
entry= $Entry
";

echo "repertoire= $Directory
";

echo "chemin= $Directory/$Entry
";

if(is_dir($Entry)&& $Entry != "." && $Entry != "..") {

echo " $Entry est un repertoire
";

ScanDir("$Entry/$Directory");

}

else {

if (eregi(".htm",$Entry)) {

$MetaTags = get_meta_tags($Directory."/index.php3".$Entry);

if ($MetaTags["robots"] == "all") {

$MetaKey = $MetaTags["keywords"];

$MetaKey = strtoupper($MetaKey);

echo "Meta($Directory/$Entry): $MetaKey
\n";

$MetaTitre = $MetaTags["title"];

echo "Meta($Directory/$Entry): $MetaTitre
\n";

$query = "INSERT INTO search (lien,keyword,titre)

VALUES("$Directory/$Entry","$MetaKey","$MetaTitre")";

$mysql_result = mysql_query($query) or die ("Erreur

de modification de la table par la requete "$query"");

}

}

}

}

closedir($MyDirectory);

}

$open_basedir=".";

ScanDir(".");

mysql_close();

?>

Page de formulaire :

<form method="post" action="search.php3">

Entrez un mot clé:

</form>

Page de résultats :

<?php

$host = "Votre serveur de base de données";

$user = "Votre nom d'utilisateur";

$password = "Votre mot de passe";

$bdd = "Votre base de données sur le serveur";

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>

";
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!

";

}

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 "

Aucun résultat ne correspond à votre recherche

";

}

// 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 "

Résultat: Un article trouvé

";

}

// Dans le cas contraire le message est au pluriel...

else {

echo "

Résultat: $Nombre articles trouvés

";

}

while($row = mysql_fetch_row($result))

{

echo "

\n

$row[2]\n

Visualiser l'article\n

\n

";

}

}

}

// on ferme la base

mysql_close();

?>

</html>

______________________
Astuces_jeux

11 réponses

Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

Salut,
"indexation.php" : echo "

\n

\n

----
\n

Indexation du site en cours
\n, \n
\n

\n";"
par "echo '
            ----

                           
                    Indexation du site en cours

               
           ,
       
   

';"

Sinon ton script est crade, si tu veux je peux t'aider à la nettoyer (cela me fera progresser en MySQL ) mais là j'ai pas le temps j'essayerai demain ;-)

For every choice, a consequence (Fable)
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

merci
ce serai sympa de le nettoyer
mais pour les erreurs dans la page de résultats
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

Salut jeune padawan
Créer un fichier "index.php" :
<?php
require_once('config.php');
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml">
    <head>
        <meta name="robots" content="noindex,nofollow" />
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
        <title>AmeraSearch</title>
        <style type="text/CSS">
            .error {
                color: red;
                font-size: 13px;
                font-weight: bold;
            }
        </style>
        <script type="text/Javascript">
            function verif() {
                if (document.search.search.value === "") {
                    alert("Veuillez indiquer un terme à rechercher");
                    document.search.search.focus();
                    return false;
                }
                else return true;
            }
        </script>
    </head>
    ';
    if ($connect === FALSE) echo 'Erreur lors de la connection au serveur MySQL.';
    else {
        if (empty($_POST)) {
            mysql_close();
            echo '
                <form action="?" method="post" name="search" onsubmit="javascript: return verif()">
                Rechercher :

                Rechercher dans : <select name="rows">
                    <option value="all" selected="selected">Tous les champs</option>
                    <option value="title">Seulement dans les titres</option>
                    <option value="keywords">Seulement dans les mots clés</option>
                    <option value="description">Seulement dans la description</option>
                </select>

               
            </form>';
        }
        else {
            echo '<form action="?" method="post" name="search" onsubmit="javascript: return verif();">
                Rechercher : $_POST['search'],'" />

                Rechercher dans : <select name="rows">
                    <option value="all">Tous les champs</option>
                    <option value="title">Seulement dans les titres</option>
                    <option value="keywords">Seulement dans les mots clés</option>
                    <option value="description">Seulement dans la description</option>
                </select>

               
            </form>';
           
            $query = 'SELECT `id`,`description`,`keywords`,`title` FROM `search` WHERE';
           
            $_POST['search'] = explode(' ',$_POST['search']);
            $i = 0;
            $j = count($_POST['search']);
            while ($i < $j) {
                if ($_POST['rows'] === 'all') $query .= ' `description` LIKE "%'.$_POST['search'][$i].'%" OR `keywords` LIKE "%'.$_POST['search'][$i].'%" OR `title` LIKE "%'.$_POST['search'][$i].'%"';
                elseif ($_POST['rows'] === 'title') $query .= ' `title` LIKE "%'.$_POST['search'][$i].'%"';
                elseif ($_POST['rows'] === 'keywords') $query .= ' `keywords` LIKE "%'.$_POST['search'][$i].'%"';
                elseif ($_POST['rows'] === 'description') $query .= ' `description` LIKE "%'.$_POST['search'][$i].'%"';
                $i++;
            }
            $requete = mysql_query($query);
            mysql_close();
            echo '
';
            while($resultat=mysql_fetch_row($requete)) {
                echo '----

                    ',$resultat[0],',
                    ',$resultat[1],',
                    ',$resultat[2],',
                    ',$resultat[3],',
                ';
            }
            echo '
';
        }
    }
    echo '
</html>';
?>
Puis créer un fichier " indexation.php "
<?php
require_once('config.php');

// On crée la table
mysql_query('CREATE TABLE `search` (`id` int(10) unsigned NOT NULL auto_increment,`description` VARCHAR(255) NOT NULL default "",`keywords` VARCHAR(255) NOT NULL default "",`title` VARCHAR(255) NOT NULL default "",PRIMARY KEY (`id`)) ENGINE =MyISAM PACK_KEYS= 0 AUTO_INCREMENT=1;');
// Optimisation des requêtes d'écriture
mysql_query('LOCK TABLES `search` WRITE');
// Suppression des anciennes données
mysql_query('DELETE FROM `search`');

function type($string) {
    $pos = strrpos($string, '.');
    if ($pos === FALSE) return FALSE;
    else {
        $pos++;
        $ext = substr($string,$pos);
        return $ext;
    }
}
function indexation ($dir) {
   if (is_dir($dir) AND $dh = opendir($dir)) { // On ouvre le dossier
        while (($file = readdir($dh)) !== false) { // On lit les fichiers du dossier
            if (type($file) === 'html') { // On continue seulement sur les fichiers ayant l'extension "html"
                // On ouvre et on enregistre le contenu du fichier
                $temp1 = '';
                $fp = fopen($dir.$file,'r');
                while(!feof($fp)) $temp1 .= fgets($fp,4096);
                fclose($fp);
                // On cherche les balises meta tag
                preg_match_all('`<meta name="(title|keywords|description)" content="(.+?)">`sim',$temp1,$temp2);
                // Si au moins une balise a été trouvé on continue
                if (!empty($temp2[0])) {
                    // On commence la requete
                    $query = 'INSERT INTO `search` VALUES("",';
                    // On recherche les autres balises et on les ajoutes à la requete
                    $temp3 = array_search('description', $temp2[1]);
                    if ($temp3 !== FALSE) $query .= '"'.$temp2[2][$temp3].'",';
                    else $query .= '"",';
                    $temp3 = array_search('keywords', $temp2[1]);
                    if ($temp3 !== FALSE) $query .= '"'.$temp2[2][$temp3].'",';
                    else $query .= '"",';
                    $temp3 = array_search('title', $temp2[1]);
                    if ($temp3 !== FALSE) $query .= '"'.$temp2[2][$temp3].'");';
                    else $query .= '"");';
                    // On envoie la requete
                    mysql_query($query);
                }
            }
        }
        // On ferme le dossier
        closedir($dh);
    }
}
// Debut de l'indexation
indexation('./');

// Optimisation des requêtes d'écriture
mysql_query('UNLOCK TABLES');
// On ferme la connection MySQL
mysql_close();
?>
Et enfin créer un fichier " config.php "
<?php
define('MYSQL_HOST', '');
define('MYSQL_USER', '');
define('MYSQL_PASS', '');
define('MYSQL_BASE', '');

$connect = FALSE;
if (@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) AND @mysql_select_db(MYSQL_BASE)) $connect = TRUE;

?>

For every choice, a consequence (Fable)
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

merci beaucoup mais je dois mettre ou les infos de ma base ???
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

en fait je dois mettre comment mes infos dans la base parce que je penses ne pas les avoirs mis correctement parce que je suis tombé sur erreur lors de la connexion mysql ???
et la table de données dans ma base s'appelle bien search ???
et en fait tu peux me faire le code que pour avoir une zone de texte et en dessous rechercher comme google ??? parce que je suis en trein de faire pour une recherche sur le web jors google mais sans mettre un moteur google sur mon site !!!
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

un dernier truc en ouvrant indexation.php j'ai eu :

For every choice, a consequence (Fable)
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 5

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 5

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 7

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 7

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 9

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 9

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 58

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 58

Warning: mysql_close(): no MySQL-Link resource supplied in /www/sites/1/ifrance.com/p/r/pro.cdd/site/search/indexation.php on line 60
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

je sais que je dois t'embêté mais est-ce que indexation.php est capable de trouvé tout les fichiers :

html, php, cgi, asp, aspx, pdf, etc

sinon je peux faire comment ???
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

lol Fais attention à ne pas flooder...
Alors pour mettre tes paramètres de connection c'est dans "config.php" :
define('MYSQL_HOST', 'ici l'adresse de ton serveur MySQL (souvent c'est localhost)');
define('MYSQL_USER', 'ici c'est le pseudo de connection à la base');
define('MYSQL_PASS', 'ici c'est le mot de passe de connection à la base');
define('MYSQL_BASE', 'ici c'est le nom de la base a utilisé');

Sinon pour faire l'indexation des autres types (tels que php, cgi, asp etc..) cela risque d'être plus dur puisque si tu veux indexer une page php il faut l'interprété d'abord (quoi que c'est peut être possible avec "eval" je vais regarder après) pour asp aucune idée je ne connais pas ce language (enfin si mais juste de nom) et pour les types pdf je vois pas pourquoi les indexer puisqu'ils n'ont pas de balises meta...

For every choice, a consequence (Fable)
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

oui dacord mais cgi, php, asp, aspx tu peux m'aider ???

et dans config.php je n'ai pas mis :

<?php
define('MYSQL_HOST', ''
);
define('MYSQL_USER', ''
);
define('MYSQL_PASS', ''
);
define('MYSQL_BASE', ''
);

$connect = FALSE;
if (@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) AND @mysql_select_db(MYSQL_BASE)) $connect = TRUE;

?>

mais :

<?php



$host = "ici mon serveur";      // l'adresse de votre serveur (localhost par default)
$login = "ici mon login";             // votre login de connexion à la base
$pass = "ici mon mot de passe";             // votre mot de passe
$database = "ici ma base";        // nom de la base (votre login dans 90% des cas)



$connect = FALSE;
if (@mysql_connect($host, $login, $pass) AND @mysql_select_db($database)) $connect = TRUE;



?>


Mais tu peux trouvé pour php, cgi, asp, aspx ???
parce que j'aimerai vraiment faire un moteur de recherche web comme google
et tu peux me faire une deuxième page comme index.php mais  que la zone de texte et à la ligne le bouton ???


et quand jouvre indexation.php sa crée bien la table mais l'écran reste blanc et rien ne s'affiche mais dans la bare d'état (ie 6) il met : "terminé mais il y a une erreur dans la page" tu pexu meider ???
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

encore un truc quand tu es dans index.php j'ai regarder avec bloc-note et j'ai vu sa s'affiche comme :

ici title
ici keybord
ici description

mais je me suis peut-etre trompé mais j'aimerai faire :

ici title (avec un lien vers l'adresse de la page)
ici keybord
ici description
ici adresse

comme google pour un moteur recherche web!!!
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010

bonjour,
pourquoi tu ne réponds plus sur le forum ???
en fait ce que j'aimerai faire c'est afficher les réponses comme

title avec lien vers url
keybord
description
url

et pas

title
keybord
description

tu peux m'aider ???

et pour la page de result encore quand tu n'as pas de réponses c'est possible qu'il écrive aucun résultats ???

et j'aimerai vraiment qu'il sache prendre le .php .cgi .aspx .asp

et quand je vais dans indexation.php il y a un écran blanc et dans la barre d'état (ie) il met "terminé, mais il y a des erreurs dans la page"
et je ne sais pas comment tu fais ton indexation mais in faudrait avoir plus de 3 millions de pages pour rechercher sur le web avec mon moteur comme msn search qui est devenu live search, altavista, google, yahoo etc !!
tu peux me refaire un nouveau code ???