Commit 848ce1ad authored by Charles DORMEVAL's avatar Charles DORMEVAL
Browse files

commit puis push

parent b6a578fe
-- phpMyAdmin SQL Dump
-- version 4.7.4
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1:3306
-- Généré le : ven. 10 nov. 2017 à 17:52
-- 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_citations`
--
-- --------------------------------------------------------
--
-- Structure de la table `auteur`
--
DROP TABLE IF EXISTS `auteur`;
CREATE TABLE IF NOT EXISTS `auteur` (
`nom_auteur` varchar(255) NOT NULL,
`nom_oeuvre` varchar(255) NOT NULL,
PRIMARY KEY (`nom_auteur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `citations`
--
DROP TABLE IF EXISTS `citations`;
CREATE TABLE IF NOT EXISTS `citations` (
`id_citations` int(11) NOT NULL,
`contenu` text NOT NULL,
`nom_oeuvre` varchar(255) NOT NULL,
PRIMARY KEY (`id_citations`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `oeuvre`
--
DROP TABLE IF EXISTS `oeuvre`;
CREATE TABLE IF NOT EXISTS `oeuvre` (
`nom_oeuvre` varchar(255) NOT NULL,
`id_citation` int(11) NOT NULL,
`nom_auteur` varchar(255) NOT NULL,
`date` varchar(255) NOT NULL,
PRIMARY KEY (`nom_oeuvre`)
) 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 */;
......@@ -7,140 +7,25 @@ class ModeleBd
public function __construct(){
try{
$this->connexion=new PDO("mysql:host=localhost; dbname=projet", "root", "");
$this->connexion->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
$exception=new PDOException($e->getMessage());
throw $exception;
}
}
public function deconnexion(){
$this->connexion=null;
}
//renvoie l'id de l'auteur quand on connait son nom.
public function getIdAuteur($auteur){
try{
$request=$this->connexion->prepare("select id_auteur from auteurs where nom_auteur=?");
$request->bindParam(1, $auteur);
$request->execute();
/* return $request->fetch();*/
$resultat=$statement->fetchAll(PDO::FETCH_COLUMN, 0);
return $resultat;
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table auteurs");
}
}
//renvoie true si l'auteur existe et false sinon.
public function auteurExiste($auteur){
try{
$exist=false;
$requete="select id_auteur from auteurs where nom_auteur=?";
$statement=$this->connexion->prepare($requete);
$statement->execute(array($pseudo));
if($statement->fetch()){
$exist=true;
}
return $exist;
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table auteurs");
}
$request=$this->connexion->prepare("select id_auteur from auteurs where nom_auteur=?");
$request->bindParam(1, $auteur);
$request->execute();
return $request->fetch();
}
//renvoie l'id de l'oeuvre quand on connait son nom.
public function getIdOeuvre($oeuvre){
try{
$request=$this->connexion->prepare("select id_oeuvre from oeuvres where nom_oeuvre=?");
$request->bindParam(1, $oeuvre);
$request->execute();
return $request->fetch();
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table oeuvres");
}
}
//renvoie true si l'oeuvre existe et false sinon.
public function oeuvreExiste($oeuvre){
try{
$exist=false;
$requete="select id_oeuvre from oeuvres where nom_oeuvre=?";
$statement=$this->connexion->prepare($requete);
$statement->execute(array($oeuvre));
if($statement->fetch()){
$exist=true;
}
return $exist;
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table oeuvres");
}
$request=$this->connexion->prepare("select id_oeuvre from oeuvres where nom_oeuvre=?");
$request->bindParam(1, $oeuvre);
$request->execute();
return $request->fetch();
}
//inserer un auteur
public function insererAuteur($auteur){
try{
$requete="insert into auteurs (nom_auteur) VALUES (?);";
$statement=$this->connexion->prepare($requete);
$statement->execute(array($auteur));
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table auteurs");
}
}
}
public function insererOeuvre($oeuvre, $date, $idAuteur){
try{
$requete="insert into oeuvres (nom_oeuvre, date, id_auteur) VALUES(?,?,?);"
$statement=$this->connexion->prepare($requete);
$statement->execute(array($oeuvre,$date,$idAuteur));
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table oeuvres");
}
}
public function insererCitation($laCitation, $idOeuvre){
try{
$requete="insert into citations(contenu, id_oeuvre) VALUES(?,?);";
$statement=$this->connexion->prepare($requete);
$statement->execute(array($laCitation, $idOeuvre));
}
catch(PDOException $e){
$this->deconnexion();
throw new TableAccesException("problème avec la table citations");
}
}
}
}
?>
?>
\ No newline at end of file
<html lang="fr">
<head>
<meta charset="utf-8"/>
<title>Test</title>
</head>
<body>
</body>
</html>
<?php
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;
}
/*----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));
$fichier="../../data/Toutes.txt";
$handle=fopen($fichier,"r");
$content=fread($handle,filesize($fichier));
$split=explode("\n",$content); //on separe pour chaque saut de ligne
$i=0;
$citation=""; //string pour récupérer la citation
/*------FONCTIONS------*/
/*--------AUTEUR+OEUVRE+DATE--------*/
/*---------BDD-PARTIE1-PRE--------*/
/*------CITATIONS------*/
$pre_citations=array();
$matrice = array(); //matrice qui pour chaque ligne va contenir le nom de l'auteur - la source - la date - la citation
$colonneMatrice=0;
$ligneMatrice=0;
//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;
}
}
foreach ($split as $motCourant){
$citationtableau=array();
$index=0;
if(stristr($split[$i],'—')){ //on sait que cest la ligne de l'auteur
//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++;
}
}
$colonneMatrice=0;
$string1 = stristr($split[$i], '—'); //ne recupere que la ligne ou il y a —
/*------BDD-PARTIE2-PRE-------------*/
try{
$bdd = new PDO('mysql:host=localhost;dbname=projet;charset=utf8', 'root', '');
}catch(Exception $e){
die('Erreur : '.$e->getMessage());
}
$split1= explode(",",$string1); //separe la ligne au niveau des virgules
$j=0;
foreach($split1 as $motCourant){ //affichage avec la séparation au niveau des virgules.
if($j==0){ // si cest l'auteur alors on enleve les accents et on met en majuscules
$split1[$j] = strtoupper(suppr_accents($split1[$j])); //enleve accents et met en MAJ
$matrice[$ligneMatrice][$colonneMatrice] = $split1[$j];
//echo $matrice[$ligneMatrice][$colonneMatrice];
$colonneMatrice++;
}
else{ // sinon affichage normal
if($j==1){
if((preg_match("#^[\" \"][^p]#",$split1[$j])))
$matrice[$ligneMatrice][$colonneMatrice] = $split1[$j];
}
else{
$split1[$j] = suppr_accents($split1[$j]);
//echo $split1[$j];
//"#^[^p][(]?[\" \"]?[1|2|3]?[1-9]?[\" \"]?[JAN|FEV|MAR|AVR|MAI|JUI|AOU|SEP|OCT|NOV|DEC]{0,1}[a-zA-Z]*[^p]?[\" \"]?[1|2]?[0-9]{3}[)]?#i"
if(preg_match("#^[\" \"|\"\"][^p][(]?[\" \"]?[1|2|3]?[1-9]?[\" \"]?[JAN|FEV|MAR|AVR|MAI|JUI|AOU|SEP|OCT|NOV|DEC]{0,1}[a-zA-Z]*[^p]?[\" \"]?[1|2]?[0-9]{3}[)]?#i", $split1[$j])){
$matrice[$ligneMatrice][$colonneMatrice] = $split1[$j];
} //fin regex
else{
$matrice[$ligneMatrice][$colonneMatrice] = null;
}
}
//echo $matrice[$ligneMatrice][$colonneMatrice];
$colonneMatrice++;
}
$j++;
}//fin foreach
$ligneMatrice++;
}
/* ?>
</br>
<?php
*/
$i++;
}
for($k=0; $k<$ligneMatrice;$k++){
for($j=0; $j<10; $j++){
if(isset($matrice[$k][$j]) && ($matrice[$k][$j]!=null)){
echo $matrice[$k][$j];
}
}
?>
</br>
<?php
}
for($i=0;$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>
......@@ -8,9 +8,29 @@ $fichier="../../data/Toutes.txt";
$handle=fopen($fichier,"r");
$content=fread($handle,filesize($fichier));
/*------FONCTIONS------*/
/*--------AUTEUR+OEUVRE+DATE--------*/
/*---------BDD-PARTIE1-PRE--------*/
/*------CITATIONS------*/
$pre_citations=array();
......@@ -41,24 +61,6 @@ foreach ($pre_citations as $courant){
}
}
/*------BDD-PARTIE2-PRE-------------*/
try{
$bdd = new PDO('mysql:host=localhost;dbname=projet;charset=utf8', 'root', '');
}catch(Exception $e){
die('Erreur : '.$e->getMessage());
}
for($i=0;$i<=200000;$i++){
if($citationtableau[$i]!=""){
$req=$bdd->prepare("insert into citations(id_citation, contenu, id_oeuvre) values(:id_citation, :contenu, :id_oeuvre)");
$req->execute(array(
'id_citation'=>$i,
'contenu'=>$citationtableau[$i],
'id_oeuvre'=>$i
));
}
}
/*------BDD-INSERTION-------------*/
?>
<p>Requete exécutée, vérifier la BDD</p>
<?php
try{
$bdd=new PDO("mysql:host=localhost;dbname=projet;charset=utf8","root","");
}catch(Exception $e){
die("Erreur :".$e->getMessage());
}
$res=array();
/*-----Auteur-----*/
if($_POST['choix_type_recherche']=='auteur'){
if($_POST['date']!=-1){
$req=$bdd->prepare("select a.nom_auteur, o.date, o.nom_oeuvre, c.contenu
from citations c, oeuvres o, auteurs a
where c.id_oeuvre=o.id_oeuvre and o.id_auteur=a.id_auteur
and a.nom_auteur like ? and o.date like ?");
$req->execute(array("%".$_POST['barre_recherche']."%", "%".$_POST['date']."%"));
$res=$req->fetchAll();
}else{
$req=$bdd->prepare("select a.nom_auteur, o.date, o.nom_oeuvre, c.contenu
from citations c, oeuvres o, auteurs a
where c.id_oeuvre=o.id_oeuvre and o.id_auteur=a.id_auteur
and a.nom_auteur like ?");
$req->execute(array("%".$_POST['barre_recherche']."%"));
$res=$req->fetchAll();
}
}
/*-----Citation----*/
else{
if($_POST['date']!=-1) {
$req = $bdd->prepare("select a.nom_auteur, o.date, o.nom_oeuvre, c.contenu
from citations c, oeuvres o, auteurs a
where c.id_oeuvre=o.id_oeuvre and o.id_auteur=a.id_auteur
and c.contenu like ? and o.date like ?");
$req->execute(array("%".$_POST['barre_recherche']."%", "%".$_POST['date']."%"));
$res = $req->fetchAll();
}
else{
$req = $bdd->prepare("select a.nom_auteur, o.date, o.nom_oeuvre, c.contenu
from citations c, oeuvres o, auteurs a
where c.id_oeuvre=o.id_oeuvre and o.id_auteur=a.id_auteur
and c.contenu like ?");
$req->execute(array("%".$_POST['barre_recherche']."%"));
$res = $req->fetchAll();
}
}
/*----Résultat----*/
if(count($res)>0){
for($i=0; $i<count($res); $i++){
?>
<p><?php echo $res[$i][0] ;?> a écrit : <i><?php echo $res[$i][3];?></i>; dans <u><?php echo $res[$i][2] ;?></u> en <?php echo $res[$i][1];?></p>
<?php
}
}else{
?><p>Il semblerait que Dave n'ait rien trouvé pour vous, méchant Dave.</p>
<?php
}
?>
\ No newline at end of file
......@@ -17,7 +17,7 @@
<label for="ctr2">Citation</label>
</p>
<input type="search" name="barre_recherche" placeholder="Element recherché ..."/>
<input type="search" name="barre_recherche" placeholder="Element recherché ..." required/>
<p>
<label for="select_date">Date :</label>
<select name="date" id="select_date">
......
<?php
require_once "./searchEngine/MoteurDeRecherche.php";
$searchEngine=new MoteurDeRecherche();
$type=$_POST['choix_type_recherche'];
$element=$_POST['barre_recherche'];
$date=$_POST['date'];
$result=array();
if($type=='auteur'){
if($date!=-1){
$searchEngine->rechercheAvecAuteurDate($element,$date);
}else{
$searchEngine->rechercheAvecAuteur($element);
}
}else{
if($date!=-1){
$searchEngine->rechercheAvecMotsClesDate($element,$date);
}else{
$searchEngine->RechercheAvecMotsCles($element);
}
}
?>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment