Comment créer un moteur de recherche ? [Fermé]

Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
- - Dernière réponse : forum92
Messages postés
223
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.
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
223
Date d'inscription
lundi 6 juillet 2015
Statut
Membre
Dernière intervention
14 août 2018
24
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60191 internautes nous ont dit merci ce mois-ci

Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
Comment on créer une base de donnée avec SQL ou PhpMyAdmin ?


Merci
Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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>
jordane45
Messages postés
26302
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2019
1784 -
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).Explications disponibles ici : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Messages postés
223
Date d'inscription
lundi 6 juillet 2015
Statut
Membre
Dernière intervention
14 août 2018
24
0
Merci
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.
Avanton66
Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
-
Merci
Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
Et ensuite comment faire ?
Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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>
Messages postés
223
Date d'inscription
lundi 6 juillet 2015
Statut
Membre
Dernière intervention
14 août 2018
24
0
Merci
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)
Avanton66
Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
-
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.
Avanton66
Messages postés
39
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
17 septembre 2019
-
comment faut-il faire pour remplir ma BDD
forum92
Messages postés
223
Date d'inscription
lundi 6 juillet 2015
Statut
Membre
Dernière intervention
14 août 2018
24 -
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.
> forum92
Messages postés
223
Date d'inscription
lundi 6 juillet 2015
Statut
Membre
Dernière intervention
14 août 2018
-
quel est le code php pour lire ma base de données dans mes pages web ?
forum92
Messages postés
223
Date d'inscription
lundi 6 juillet 2015
Statut
Membre
Dernière intervention
14 août 2018
24 > avanton66 -
<?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;
}			
			
?>