2016-06-14 2 views
-3

J'ai essayé de comparer les mots de la base de données et du formulaire de saisie. Je veux compter les mêmes mots, mais le résultat n'est pas correct.Comment compter le même nombre de mots en php?

entrée: procédé ou algorithme

tb_keyword

id  key 
1  method 
2  algorithm 

résultat

res attendus ULT

codes:

include_once("kmp.php"); 
$kata = ''; 
if(isset($_GET['kata'])) 
    $kt = $_GET['kata']; 
?> 
<div style="width:600px;"> 
<form method="get" action=""> 
Cari Kata : <input type="text" name="kata" value="<?php echo $kata; ?>"/
<input type="submit" value="Cari"> 
</form> 
</div> 
<?php 
$kata = explode(' ',$kt); 
foreach($kata as $katas){ 
$total = 0; 
$KMP = new KMP(); 
$art = $db_con->prepare("select * from tb_positive_keywords"); 
$art->execute(); 
while($teks = $art->fetch(PDO::FETCH_ASSOC)){ 
if($kata!=''){ 
$hasil = $KMP->KMPSearch($katas,$teks['positive_keyword']); 
$total += count($hasil); 
echo "Kata yang dicari adalah : ".$katas."<br/>"; 
echo "Jumlah kata yang ditemukan : ".count($hasil)."<br/>"; 
echo "Yaitu pada posisi string ke : "; 
foreach($hasil as $h) echo $h." "; 
echo "<br/>"; 
} 
echo "<div style='width:600px;'>"; 
echo nl2br(str_replace($katas,"<font color='red'>".$katas."</font>",$teks['positive_keyword'])); 
echo "</div>"; 
echo $total; 
} 
+0

Vous avez besoin pour montrer votre code/requête si vous voulez une réponse. – kainaw

+0

@kainaw désolé j'ai oublié de mettre le code mais je l'ai édité .. –

+0

Vous ne pouvez pas faire 'foreach ($ kata as $ kata)'. Cela écrase votre tableau avec le premier élément du tableau. Je suggère de faire un tableau au pluriel, comme '$ katas' ou' $ katai'. Ensuite, vous pouvez utiliser 'foreach ($ katas as $ kata)'. – kainaw

Répondre

0

Malgré le manque d'information de votre part.

Vous pouvez compter les rangées de répétition en groupant alors et obtenir seulement celles qui ont plus de 1 compte au groupe.

comme celui-ci

Avoir ce schéma pauvre:

create table tb_keyword 
(id int primary key auto_increment, 
    keyword varchar(50) 
); 

insert into tb_keyword 
values(null, 'method'),(null, 'algorithm'); 

Vous pouvez:

SELECT keyword, count(1) as times 
from tb_keyword 
group by keyword having count(1) > 1 

qui renverra les mots-clés qui apparaissent plus d'une fois dans tb_keyword

+0

J'ai mis le code. –

+0

va reformuler la réponse –

+0

J'apprécie vraiment si vous voulez m'aider à résoudre le problème. –