Commit 90997f86 authored by Charles DORMEVAL's avatar Charles DORMEVAL
Browse files

changement structure + modifs traitement de la citation ou de l'auteur

parent 95972af0
This diff is collapsed.
wanted
story
georgia
cohn
merely
inflexible
remainder
knowing
forbids
husbands
-- phpMyAdmin SQL Dump
-- version 4.7.4
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1:3306
-- Généré le : lun. 22 jan. 2018 à 10:07
-- Version du serveur : 5.7.19
-- Version de PHP : 5.6.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de données : `projet`
--
-- --------------------------------------------------------
--
-- Structure de la table `auteurs`
--
DROP TABLE IF EXISTS `auteurs`;
CREATE TABLE IF NOT EXISTS `auteurs` (
`id_auteur` int(255) NOT NULL AUTO_INCREMENT,
`nom_auteur` varchar(255) NOT NULL,
PRIMARY KEY (`id_auteur`),
UNIQUE KEY `id_auteur` (`id_auteur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
This diff is collapsed.
<?php
require_once "ModeleBd.php";
class RemplirBd{
private $modeleBD;
function __construct(){
$this->modeleBD=new ModeleBd();
}
function remplirLaBd(){
}
}
?>
<?php
/*----INITIALISATION-------*/
//on empeche la limite d'execution de 30 secondes car il faut inserer bcp de citations
ini_set('max_execution_time', 300);//5min
$fichier="../../data/Toutes.txt";
$handle=fopen($fichier,"r");
$content=fread($handle,filesize($fichier));
/*------FONCTIONS------*/
/*--------AUTEUR+OEUVRE+DATE--------*/
/*---------BDD-PARTIE1-PRE--------*/
/*------CITATIONS------*/
$pre_citations=array();
//si ma ligne est une information autre qu'une citation je rempli mon tableau avec null pour séparer
foreach(file($fichier) as $ligne){
if(!stristr($ligne,"—")){
$pre_citations[]=$ligne;
}
else{
$pre_citations[]=null;
}
}
$citationtableau=array();
$index=0;
//init tableau
for($i=0;$i<=200000;$i++){
$citationtableau[$i]="";
}
foreach ($pre_citations as $courant){
if($courant!=null){
$citationtableau[$index]=$citationtableau[$index].$courant;
}
else{
$index++;
}
}
/*------BDD-PARTIE2-PRE-------------*/
try{
$bdd = new PDO('mysql:host=localhost;dbname=projet;charset=utf8', 'root', '');
}catch(Exception $e){
die('Erreur : '.$e->getMessage());
}
for($i=1;$i<=200000;$i++){
if($citationtableau[$i]!=""){
$req=$bdd->prepare("insert into citations(id_citation, contenu, id_oeuvre) values(?, ?, ?)");
$req->bindParam(1, $i);
$req->bindParam(2, $citationtableau[$i]);
$req->bindParam(3, $i);
$req->execute();
}
}
?>
<p>Requete exécutée, vérifier la BDD</p>
<!--<html lan="fr">
<head>
<meta charset="utf-8"/>
<title>Levenstein</title>
</head>
<body>
<form method="POST" action="levenshtein.php">
<p>
<label for="login">quel mot cherchez vous ?</label>
<input type="text" id="login" name="motCher"/>
</p>
<p>
<input type="submit" value="Envoyer" />
</p>
<p>
<input type="reset" value="annuler" />
</p>
</body>
</html>
-->
<?php
/*
if(isset($_POST["motCher"])){// mot mal orthographié
$input = $_POST["motCher"];
// tableau de mots à vérifier
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato','bananas',);
$filename = "dico-en_10.txt";
$handle = fopen($filename,"r");
$content = fread($handle, filesize($filename));
fclose($handle);
$split = explode("\n",$content);
// aucune distance de trouvée pour le moment
$shortest = -1;
// boucle sur les mots pour trouver le plus près
foreach ($split as $word) {
// calcule la distance avec le mot mis en entrée,
// et le mot courant
$lev = levenshtein($input, $word);
// cherche une correspondance exacte
if ($lev == 0) {
// le mot le plus près est celui-ci (correspondance exacte)
$closest = $word;
$shortest = 0;
// on sort de la boucle ; nous avons trouvé une correspondance exacte
break;
}
// Si la distance est plus petite que la prochaine distance trouvée
// OU, si le prochain mot le plus près n'a pas encore été trouvé
if ($lev <= $shortest || $shortest < 0) {
// définition du mot le plus près ainsi que la distance
$closest = $word;
$shortest = $lev;
}
}
echo "Mot entré : $input";
if ($shortest == 0) {
echo "Correspondance exacte trouvée : $closest\n";
}
else {
if($closest!=""){
echo "</br>"."Voulez-vous dire : $closest ?\n";
}
}
}
else {
echo "Vous navez pas entré de mot !";
}
*/
?>
<html lang="fr">
<head>
<meta charset="utf-8"/>
<title>Test</title>
</head>
<body>
<form method="POST" action="test.php">
<p>
<label for="login">quel mot cherchez vous ?</label>
<input type="text" id="login" name="recherche"/>
</p>
<p>
<input type="submit" value="Envoyer" />
</p>
<p>
<input type="reset" value="Annuler" />
</p>
</form>
</body>
</html>
<?php
$fichier="../data/dico-en_10.txt";
$handle=fopen($fichier,"r");
$content=fread($handle,filesize($fichier));
$split=explode("\n",$content);
$distancemin=PHP_INT_MAX;
$motsPossibles="";
if(isset($_POST['recherche'])){
$input=$_POST['recherche'];
foreach ($split as $motCourant){
//on calcul la distance entre l'input et le mot courant
$lev=levenshtein($input, $motCourant);
if($lev==$distancemin){
$motsPossibles=$motsPossibles.$motCourant."\n";
}
else{
if($lev<$distancemin){
$motsPossibles="";
$motsPossibles=$motsPossibles.$motCourant."\n";
$distancemin=$lev;
}
}
}
echo "Vouliez-vous dire : ".$motsPossibles;
}
?>
......@@ -31,6 +31,25 @@ class MoteurDeRecherche
$this->authors=""; //changer avec une méthode qui permet de récupérer les autheurs de la bd
}
function suppr_accents($str, $encoding='utf-8')
{
// transformer les caractères accentués en entités HTML
$str = htmlentities($str, ENT_NOQUOTES, $encoding);
// remplacer les entités HTML pour avoir juste le premier caractères non accentués
// Exemple : "&ecute;" => "e", "&Ecute;" => "E", "à" => "a" ...
$str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);
// Remplacer les ligatures
// Exemple "œ" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Supprimer tout le reste
$str = preg_replace('#&[^;]+;#', '', $str);
return $str;
}
//fonctionnel
public function rechercheAvecAuteurDate($auteur,$date){
$requestComplement = "and date_oeuvre like ? and nom_auteur like ?";
......@@ -42,7 +61,10 @@ class MoteurDeRecherche
$fullRequest->execute();
$_SESSION['resRecherche']=$fullRequest->fetchAll();
if(empty($_SESSION['resRecherche'])){
$this->leveinsteinAuteur($auteur);
$this->leveinsteinCitation($auteur);
return 0;
}else{
return 1;
}
}
......@@ -54,7 +76,10 @@ class MoteurDeRecherche
$fullRequest->execute();
$_SESSION['resRecherche']=$fullRequest->fetchAll();
if(empty($_SESSION['resRecherche'])){
$this->leveinsteinAuteur($auteur);
$this->leveinsteinCitation($auteur);
return 0;
}else{
return 1;
}
}
......@@ -65,6 +90,7 @@ class MoteurDeRecherche
$keyWords=explode(" ",$recherche);
$requestComplement="and date_oeuvre like ?";
foreach($keyWords as $keyWord){
$keyWord=$this->suppr_accents($keyWord);
$requestComplement=$requestComplement." and c.contenu like % $keyWord %";
}
......@@ -72,10 +98,12 @@ class MoteurDeRecherche
$param="'%$date%'";
$fullRequest->bindParam(1, $param);
$fullRequest->execute();
if(empty($fullRequest->fetchAll())){
$_SESSION['resRecherche']=$fullRequest->fetchAll();
if(empty($_SESSION['resRecherche'])){
$this->leveinsteinCitation($recherche);
return 0;
}else{
return $fullRequest->fetchAll();
return 1;
}
}
......@@ -83,16 +111,18 @@ class MoteurDeRecherche
public function RechercheAvecMotsCles($recherche){
$keyWords=explode(" ", $recherche);
$requestComplement="";
foreach($keyWords as $keyWord) {
$requestComplement = $requestComplement . " and c.contenu like % $keyWord %";
foreach($keyWords as $keyWord){
$keyWord=$this->suppr_accents($keyWord);
$requestComplement=$requestComplement." and c.contenu like '%$keyWord%'";
}
$fullRequest=$this->connexion->prepare($this->requestPattern.$requestComplement);
$fullRequest->execute();
print_r($fullRequest->fetchAll());
if(empty($fullRequest->fetchAll())){
$_SESSION['resRecherche']=$fullRequest->fetchAll();
if(empty($_SESSION['resRecherche'])){
$this->leveinsteinCitation($recherche);
return 0;
}else{
return $fullRequest->fetchAll();
return 1;
}
}
......
......@@ -12,18 +12,23 @@
$_SESSION['resRecherche']=NULL;
$res=0;
if($type=='auteur'){
if($date!=-1){
$searchEngine->rechercheAvecAuteurDate(strtoupper($element),$date);
$res=$searchEngine->rechercheAvecAuteurDate(strtoupper($element),$date);
}else{
$res=$searchEngine->rechercheAvecAuteur(strtoupper($element));
}
}else{
if($date!=-1){
$searchEngine->rechercheAvecMotsClesDate($element,$date);
$res=$searchEngine->rechercheAvecMotsClesDate($element,$date);
}else{
$searchEngine->RechercheAvecMotsCles($element);
$res=$searchEngine->RechercheAvecMotsCles($element);
}
}
echo $res;
//header("Location : ../site/recherche.php")
?>
\ No newline at end of file
<?php $resultat_BD=0;?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Probleme ...</title>
</head>
<body>
<?php if($resultat_BD==0){?>
<p>La recherche n'a pas aboutie, nous pouvons vous proposer les mots :</p>
<?php $mot_remplacement="mot1"?>
<a href="remplacement.php?mot_remplace=<?php echo $mot_remplacement?>"><?php echo $mot_remplacement ?></a>
<?php }?>
</body>
</html>
\ No newline at end of file
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<title>Remplacement</title>
</head>
<body>
<form method="post" action="recherche_non_aboutie.php">
<input type="search" name="barre_recherche" id="barre_recherche_principale" value="<?php if(isset($_GET['mot_remplace'])){ echo $_GET['mot_remplace'];}?>">
<input type="submit">
</form>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>VeniVidiVici.com</title>
<link rel="stylesheet" media="screen" type="text/css" href="reset.css"/>
<link rel="stylesheet" media="screen" type="text/css" href="style_recherche.css"/>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Muli" />
<link href='http://fonts.googleapis.com/css?family=Cookie' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/css?family=Julius+Sans+One" rel="stylesheet">
</head>
<body class="containerTout">
<header style="background-image:url(img/ecriture.jpg)">
<h1><a href=site.php>veni vidi vici</a></h1>
</header>
<div id="div1">
<form method="post" action="traitement_recherche.php">
<p>
Que recherchez vous ?
</p>
<p>
<input type="radio" value="auteur" name="choix_type_recherche" id="ctr1"/>
<label for="ctr1">Auteur</label>
<input type="radio" value="citation" name="choix_type_recherche" id="ctr2" checked="checked"/>
<label for="ctr2">Citation</label>
</p>
<input type="search" name="barre_recherche" placeholder="Element recherché ..." required/>
<p>
<label for="select_date">Date :</label>
<select name="date" id="select_date">
<option value="-1" name="date">Peu importe</option>
<?php
for($i=2017; $i>=0; $i--){
?><option value="<?php echo $i; ?>" name="date"><?php echo $i; ?></option>
<?php
}
?>
</select>
</p>
<p>
<input type="submit" value="Lancer la recherche !"/>
</p>
</form>
</br>
</div>
<div id="div2">
<ul>
<?php for($i=1;$i<=20;$i++) { ?>
<li class="citation_recherchee">
<div id="stat">
<div class="titre">Citation <?php echo $i ?></div>
<div class="infos"><?php echo $_POST['auteur'];?> <?php if ($_POST['date']!=null){ echo $_POST['date_id'];}?></div>
</div>
<div class="texte">"<?php echo $_POST['citation']?>"</div>
</li>
<?php } ?>
</ul>
</div>
<div id="chg_page">
<p>page X sur N<p></br></br>
<ul>
<?php for($i=1;$i<=20;$i++) { ?>
<li><a href="#"> <?php echo $i ?> </a></li>
<?php } ?>
</ul>
</div>
<footer>
<p>Posted by: Medjo Johann, Dormeval Charles, Clément Gauducheau and Bosshardt Arthur</p></br>
<p>Contact information: <a href="mailto:arthur.bosshardt@gmail.com">
arthur.bosshardt@gmail.com</a>.</p>
</footer>
</body>
</html>
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
text-decoration: none;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>VeniVidiVici.com</title>
<link rel="stylesheet" media="screen" type="text/css" href="reset.css"/>
<link rel="stylesheet" media="screen" type="text/css" href="style_accueil.css"/>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Muli" />
<link href='http://fonts.googleapis.com/css?family=Cookie' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/css?family=Julius+Sans+One" rel="stylesheet">
</head>
<body class="containerTout">
<header style="background-image:url(img/ecriture.jpg)">
<h1><a href=site.php>veni vidi vici</a></h1>
</header>
<div id="div1">
<div id="recherche_div1">
<img src="img/logo_search.png">
<h1>Recherche<h1>
</div>
<div id="recherche_div2">
<form method="post" action="../recherche/traitement_recherche.php">