Comment créer un moteur de recherche ?

Fermé
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020 - 10 mai 2017 à 19:21
forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 - 9 juin 2017 à 20:36
Bonjour,

Je suis débutant et je me suis aidé des code proposés dans comment ça marche. J'ai plusieurs code pour créer mon moteur de recherche, mais je ne sais pas comment les placer.



Code 1: Barre de recherche
<form method="post" action="search.php">

Entrez un mot clé:<br>

<input type="text" name="Mot" size="15">

<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form>

Le script php qui permet de faire naviguer l'utilisateur dans la base de données:
<?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>

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

Là il faut remplir la base de données:
<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
CELLSPACING=\"0\"
CELLPADDING=\"1\"
WIDTH="100%">\n
<tr><td>\n
<a name=\"#index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\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 "<br>entry= $Entry<br>";

echo "repertoire= $Directory<br>";

echo "chemin= $Directory/$Entry<br>";

if(is_dir($Entry)&& $Entry != "." && $Entry != "..") {
echo "<b><font color=\"red\">$Entry</font>
</b> est un repertoire<br>";

ScanDir("$Entry/$Directory");

}
else {
if (eregi(".htm",$Entry)) {
$MetaTags = get_meta_tags($Directory."/".$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();

?>


Création de la base de donnée:
<html>

<head>

<title>Creation de la table</title>

</head>

<body>

<?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();

?>

</body>

</html>

La balise qui permet d'indexé le site:
<head>
<meta name="ROBOTS" content="all">
<meta name="keywords" content="mot clé 1,mot cle 2,Mot clé 3, Mots clefs">
<meta name="title" content="titre de votre page">
<title>titre de votre page</title>
</head>

La balise qui permet de ne peut indexé une page du site:
<head>
<meta name="ROBOTS" content="none">
</head>




Merci d'avance.
A voir également:

7 réponses

forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133
10 mai 2017 à 20:34
Bonjour,

Premièrement, petit conseil: indente ton code car c'est illisible comme cela.
Je n'ai pas lu entièrement tout le code.

As- tu déjà la base de données créée? Si ce n'est pas le cas je te conseil de le faire grâce à une interface (telle que celle de PhpMyAdmin) , cela est plus facile et permet de générer le SQL automatiquement (c'est pratique lorsqu'on débute même si le SQL n'est pas un langage très dur. Et c'est surtout plus visuel).

Pour l'agencement de ton code :

Premièrement il te faut la 'barre de recherche' ( ton premier code avec le formulaire) que tu place ou tu veux sur ton site ( ou ton application), là où tu veux qu'elle apparaisse.

Ensuite vient le traitement lors d'un clic sur 'rechercher'. Celui- là tu as le choix. Tu peux le mettre sur la même page que ton formulaire ( de préférence avant) ou sur une page à part ( exemple : traitement.php). En fonction pense à changer l'attribut 'action' de ton formulaire.

Lors de ton traitement, tu vas accéder à la base de données pour 'rechercher'.

Dernière étape : l'affichage du résultat. là encore tu as le choix. Si tu as mis ton traitement dans la même page que ton formulaire, tu peux afficher le résultat sur cette page là. Sinon tu peux faire une redirection ( avec un header en php).

Voilà. En espérant avoir répondu à ta question.
1
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
11 mai 2017 à 18:34
Comment on créer une base de donnée avec SQL ou PhpMyAdmin ?


Merci
0
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
11 mai 2017 à 18:46
Barre de recherche:


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

Entrez un mot clé:<br>

<input type="text" name="Mot" size="15">

<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form>

Le script php


<?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>

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


Remplir la base de donnée

<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
CELLSPACING=\"0\"
CELLPADDING=\"1\"
WIDTH="100%">\n
<tr><td>\n
<a name=\"#index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\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 "<br>entry= $Entry<br>";

echo "repertoire= $Directory<br>";

echo "chemin= $Directory/$Entry<br>";

if(is_dir($Entry)&& $Entry != "." && $Entry != "..") {
echo "<b><font color=\"red\">$Entry</font>
</b> est un repertoire<br>";

ScanDir("$Entry/$Directory");

}
else {
if (eregi(".htm",$Entry)) {
$MetaTags = get_meta_tags($Directory."/".$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();

?>


Création de la base de donnée:


<html>

<head>

<title>Creation de la table</title>

</head>

<body>

<?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();

?>

</body>

</html>


Balise site indexé:

<head>
<meta name="ROBOTS" content="all">
<meta name="keywords" content="mot clé 1,mot cle 2,Mot clé 3, Mots clefs">
<meta name="title" content="titre de votre page">
<title>titre de votre page</title>
</head>

Balise non indexé:


<head>
<meta name="ROBOTS" content="none">
</head>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 mai 2017 à 18:54
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133
11 mai 2017 à 23:18
Bonsoir,
Pour utiliser phpmyadmin. Il faut que tu telecharge un kit tel que easyphp ou wamp .
Une fois cela fait tu y aura accès en local.
0
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
12 mai 2017 à 07:39
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
13 mai 2017 à 20:52
Et ensuite comment faire ?
0
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
13 mai 2017 à 20:56
Barre de recherche: 


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

Entrez un mot clé:<br>

<input type="text" name="Mot" size="15">

<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form>



Le script php 


<?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>

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




Remplir la base de donnée 

<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
CELLSPACING=\"0\"
CELLPADDING=\"1\"
WIDTH="100%">\n
<tr><td>\n
<a name=\"#index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\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 "<br>entry= $Entry<br>";

echo "repertoire= $Directory<br>";

echo "chemin= $Directory/$Entry<br>";

if(is_dir($Entry)&& $Entry != "." && $Entry != "..") {
echo "<b><font color=\"red\">$Entry</font>
</b> est un repertoire<br>";

ScanDir("$Entry/$Directory");

}
else {
if (eregi(".htm",$Entry)) {
$MetaTags = get_meta_tags($Directory."/".$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();

?>


Balise site indexé: 

<head>
<meta name="ROBOTS" content="all">
<meta name="keywords" content="mot clé 1,mot cle 2,Mot clé 3, Mots clefs">
<meta name="title" content="titre de votre page">
<title>titre de votre page</title>
</head>



Balise non indexé: 


<head>
<meta name="ROBOTS" content="none">
</head>
0
forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133
14 mai 2017 à 00:52
Bonjour,

Où en est -tu exactement à tu crée ta BDD??
Peux tu expliciter ou tu en est ? au lieu de remettre ton code ( qui au passage n'a ni la coloration syntaxique , et n'est toujours pas INDENTER)
0
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
14 mai 2017 à 10:36
J'ai télécharger wampserver, mais je ne sais pas qu'est-ce qu'il faut faire après, et je cherche un hébérgeur web 100% html et php.
0
Avanton66 Messages postés 44 Date d'inscription mercredi 10 mai 2017 Statut Membre Dernière intervention 14 mai 2020
14 mai 2017 à 11:38
comment faut-il faire pour remplir ma BDD
0
forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133
14 mai 2017 à 19:12
Une fois WAMP installer . il te suffit de le lancer ( un icone apparaîtra alors dans la barre des tâches à droite). et de le 'démarrer' ( en cliquant sur l'icone et sur démarrer )il faut que l'icone soit verte .
Puis tu peux lancer phpMyadmin ( tu dois avoir un 'champs' ).
Une fois que tu est dans phpmyadmin tu crée ta base de données et tes tables ...

Tu liera ensuite ta BDD avec tu code PHP dans tes pages WEB.
0
avanton66 > forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018
7 juin 2017 à 15:53
quel est le code php pour lire ma base de données dans mes pages web ?
0
forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133 > avanton66
9 juin 2017 à 20:36
<?php
// connextion à la BD : ('mysql:host=adresse_serveur;dbname=ma_BD;charset=UTF8', 'login_BD', 'mot_de_passe_BD');

$db= new PDO('mysql:host=localhost;dbname=ma_BD;charset=UTF8', 'login', 'mot_de_passe');

// requete aller chercher les donénes : condition WHERE
$résultats = $db->prepare('SELECT mon_champ FROM ma_table WHERE mon_champ2 = :valeur ;');
			$db->execute(array("valeur" =>"blabla"));
			
// requete aller chercher les donénes :  SANS condition WHERE
$résultats = $db->prepare('SELECT mon_champ FROM ma_table ;');
			$db->execute();	

// lire les résultats
foreach($résultats as $res){
	echo "mon resultat est  : ".$res;
}			
			
?>
0