Compare commits

...

2 Commits

Author SHA1 Message Date
Gregory Trolliet 39d4be9eb3 Add words similarity test
Should put the almost same words in the same counter
2020-11-23 22:17:30 +01:00
Gregory Trolliet ce1f76a96c Avoid multiple insertion
Avoid multiple insertion of the same word on the same vote
2020-11-23 22:00:02 +01:00
2 changed files with 25 additions and 1 deletions

22
db.php
View File

@ -85,6 +85,19 @@ class DataBase
} else { } else {
return false; return false;
} }
$stmt = $this->db->prepare("
SELECT *
FROM words
WHERE cloud_id = :cid;
");
$stmt->bindValue(':cid', $cloudId, PDO::PARAM_INT);
$stmt->execute();
while($data = $stmt->fetch()) {
if ($this->areWordsSimilar($data['word'], $word)) {
$word = $data['word'];
break;
}
}
$stmt = $this->db->prepare(" $stmt = $this->db->prepare("
SELECT * SELECT *
FROM words FROM words
@ -275,4 +288,13 @@ class DataBase
return false; return false;
} }
function areWordsSimilar(string $word1, string $word2)
{
$sim = similar_text($word1, $word2, $perc);
$sim_meta = similar_text(metaphone($word1), metaphone($word2), $perc_meta);
if ($perc >= 80 && $perc_meta >= 80) {
return true;
}
return false;
}
} }

View File

@ -9,13 +9,15 @@ include 'templates/header.php';
$id = null; $id = null;
$cpt = 0; $cpt = 0;
$already_used = array();
foreach ($_POST as $name => $value) { foreach ($_POST as $name => $value) {
$cpt; $cpt;
if ($name == 'fid') { if ($name == 'fid') {
$id = $value; $id = $value;
continue; continue;
} }
if (isset($id)) { if (isset($id) && !in_array($value, $already_used)) {
$already_used[] = $value;
$value = trim(strtolower($value)); $value = trim(strtolower($value));
$db->addWord($id, $value); $db->addWord($id, $value);
} }