Pages 1 | 2
| 3 | 4
Avec :
$contenu = split_words($contenu);
... Nous obtenons donc un tableau de mots (dont le contenu pourrait
être optimisé mais nous nous en tiendrons à
cette version pour l'instant).
Puis :
$nb_mots = count($contenu);
... Nous renseigne sur le nombre de mots contenus dans le tableau.
Nous pouvons désormais programmer un traitement pour chacun
des mots.
Ce sera chose faite avec :
$contenu = array_count_values($contenu);
$host = "localhost";
$user = "root";
$pass = "";
$bdd = "jdn";
$idconnect= mysql_connect($host,$user,$pass)
or die("Pb de connexion");
mysql_select_db("$bdd") or die("Pb de connexion");
while (list ($key, $val) = each ($contenu))
{
echo ("$key => $val<br>");
$req="insert into moteur (mot,
poids, origine, titre_page) values ('$key', $val, 'origine',
'titre_page')";
$idreq=mysql_query($req);
if ($idreq == 0)
{
echo("Une
erreur est survenue !<br>");
mysql_close($idconnect);
exit;
}
Nous utilisons ici tout d'abord la fonction array_count_values
bien résumée ici par l'exemple donné par Php.net
:
$array = array (1, "hello", 1, "world",
"hello");
print_r(array_count_values ($array));
On obtient à l'affichage :
(
[1] => 2
[hello] => 2
[world] => 1
)
C'est exactement ce que nous recherchons pour notre "moteur
de recherche", une liste de mots suivi du nombre d'occurences.
A la suite de cette fonction on trouve un script de connexion basique
pour se connecter en local via Easyphp sur notre base de données
prenommée ici "jdn".
Le principe est ensuite d'extraire chaque couple de notre tableau
généré par la fonction array_count_values.
Nous utilisons les fonctions très puissantes each
et list
pour cette tâche. Nous ne gérons pas pour l'instant
l'origine du mot et le titre de la page, pour lesquels nous insérons
systématiquement la même chaîne de caractères.
Voici le script de création de la table "moteur"...
CREATE TABLE moteur (
id int(4) unsigned NOT NULL auto_increment,
mot varchar(100) NOT NULL default '',
poids mediumint(9) NOT NULL default '0',
origine varchar(255) NOT NULL default '',
titre_page varchar(255) NOT NULL default '',
PRIMARY KEY (id)
)
... et les quatre premiers affichages produits par notre script
(utiles à des fin de debug par exemple) :
manipuler => 1
les => 13
chaînes => 2
caractères => 11
Parallèlement à cet affichage, les valeurs en question
sont insérées dans la base. Ainsi, au mot "manipuler"
correspond un poids de "1", pour "les", celui-ci
se monte à 13 occurences.
Nous verrons entre autres dans le prochain tutoriel de cette série
comment compléter notre table avec les champs "titre_page"
et "origine".
Bien sûr d'autres approches existent sur le même thème,
afin de patienter jusqu'au prochain tutoriel vous pouvez consulter
la rubrique dédiée aux outils de recherche sur JDN
Solutions, ou décortiquer ces scripts présents
sur Phpinfo.net.
Pages 1 | 2
| 3 | 4
|