PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 22-10-2011 00:20:42

msi79
Membre
Inscription : 11-08-2011
Messages : 25

moteur de recherche php

salut je cherche un moteur de recherche pour ma base de donnée .
je suis tombé sur un exemple sur le net que je veux exploité mais j'y arrive pas .
je savoir comment nommer chaque fichier . je me dis que cela à une importance dans la conception de ce moteur
ensuite aider moi pas a pas à arriver a concevoir mon moteur
voici les differents code :

1 fichier search


<html>

<head>

<title>Creation de la table</title>

</head>

<body

<?php
$host = "localhost";

$user = "root";

$password = " ";

$bdd = "nosvictimes";

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>
 

2. fichier

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

?>

fichier 3

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


edit modo : trop de code, nous ne somme pas des correcteurs
la prochaine fois, je coupe

Dernière modification par msi79 (22-10-2011 10:32:39)

Hors ligne

#2 22-10-2011 00:35:02

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : moteur de recherche php

Bonsoir,

Sans vouloir faire de vilains jeux de mots, tu ne trouveras pas de moteur de recherche comme ça par hasard en soulevant une table.
Tout ceci pour te dire, que ce n'est pas quelque chose qui s'improvise mais c'est un gros travail en amont a effectuer, fonctionnalités, CDC complet et détaillé, optimisations inclues, un vrai travail de professionnel. Dans ton exemple tu utilises des champs text, qui ont des particularités nombreuses notamment au niveau stockage en fonction de la collation choisie et des comportements / limitations particuliers lors de recherches en mode fulltext et également lorsqu'ils sont indexés, etc, etc..., sans parler de l'obligation d'utilisation intensive d'expressions régulières complexes.
Bref, ta démarche est louable, mais le seul conseil avisé que je puisse te donner sur un forum de débutant, c'est d'acquérir d'autres compétences, celles de ceux qui sont les plus éloignées et opposées à celles d'un débutant.

Bonne continuation.

Jc

EDIT: Si tu veux qu'on t'aide pas à pas commence par faire ce que j'ai cité au début de mon post, en sachant que le codage de ton moteur de recherche ne pourra prendre place qu'en dernier lieu.

Dernière modification par Jc (22-10-2011 00:41:11)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 22-10-2011 01:06:12

msi79
Membre
Inscription : 11-08-2011
Messages : 25

Re : moteur de recherche php

mais aide moi a corriger ca

Hors ligne

#4 22-10-2011 08:08:23

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : moteur de recherche php

Je ne voudrais que tu penses que je suis .... mais si tu pouvais coloriser ton code, ca m'éviterais de passer trop de temps à le déchiffrer, temps que je n'ai pas en ce moment. merci wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 22-10-2011 10:34:26

msi79
Membre
Inscription : 11-08-2011
Messages : 25

Re : moteur de recherche php

coloriser ton code . ça ve dire quoi
je comprend pas

Hors ligne

#6 22-10-2011 13:47:11

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : moteur de recherche php

Ca fait partie de la charte du forum


print phpinfo();
 

Comme ceci wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 22-10-2011 18:30:22

msi79
Membre
Inscription : 11-08-2011
Messages : 25

Re : moteur de recherche php

j'arrive pas à coloriser ( je ne comprend pas ce terme).
mais s'il te plait lit mon code et aide moi

edit modo : trop de code, nous ne somme pas des correcteurs
la prochaine fois, je coupe

Dernière modification par msi79 (22-10-2011 18:30:54)

Hors ligne

#8 22-10-2011 20:03:26

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : moteur de recherche php

Bonsoir,

Ton premier fichier crée la table dans la base de données
Ton deuxième efface le contenu de ta table, Lit le contenu d'un site (la racine), récupère le contenu titre et les mots clés contenus dans les balises META correspondantes et les stocke dans la table.
Ton troisième recherche les mots clés demandés dans la table (parmis les mots clés et les titres) et les affiche lorsque des enregistrements sont trouvés.
Ton dernier n'est toujours pas un moteur de recherche wink

En fait il te manque le fichier formulaire de recherche de mots clés sur un site. Il faut savoir que ton code ne recherche pas dans le contenu des pages mais scanne uniquement les entêtes de fichier.

Bonne continuation wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 22-10-2011 20:28:04

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : moteur de recherche php

Bon, je sens que je commence à m'escagacer grave, là !
Alors faudrait voir à respecter les consignes.
Si tu ne sais pas coloriser le code, utilise au moins le wall !


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#10 22-10-2011 22:24:47

msi79
Membre
Inscription : 11-08-2011
Messages : 25

Re : moteur de recherche php

j'ai coloré maintenant

<?php
$host = "localhost";
 
$user = "root";
 
$password = "";
 
$bdd = "nosvictimes";
 
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>
 
<form method="post" action="search.php3">
 
Entrez un mot clé:<br>
 
<input type="text" name="Mot" size="15">
 
<input type="submit" value="Rechercher" alt="Lancer la recherche!">
 
</form>

Dernière modification par msi79 (22-10-2011 22:26:32)

Hors ligne

#11 23-10-2011 12:21:17

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : moteur de recherche php

tu utilise une méthode d'utilisation des formulaires qui n'est plus utilisable par défaut avec php. Je te conseil donc de revoir la validation des formulaires
http://www.phpdebutant.org/article56.php

ligne 40 à 100 (ou par la) pourquoi deux requetes sql ? tu fait directement la dexième et utilise mysql_num_rows pour la condition ce sera plus simple.

je te conseil de reprendre ton code morceau par morceau de les valider un par un puis de les assembler.

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

Pied de page des forums