2017-01-05 6 views
0

私は、ユーザーのキー入力に応じて病気のユーザーを診断できるシステムを設計しようとしています。ユーザーがキー入力する動的テキストボックスを作成するためにjqueryを使用しました。これは配列に格納され、結果のクエリを実行するためにphpファイルに渡されます。ループ内のSELECT文の結果をグループ化する

<?php 
$symp=$_POST['fields']; 
foreach ($symp as $Values) { 
$qry= "SELECT D.name, group_concat(symp SEPARATOR ',') as conca, count(*) as SymptomsMatching from linkds DS JOIN symptoms S on DS.symptomId = S.id JOIN disease D on DS.diseaseId = D.id WHERE S.symp IN ('$Values') GROUP BY D.name ORDER BY count(*) DESC, D.name "; 
$rep=mysqli_query($con,$qry); 
    foreach ($rep as $row) { 
    echo"<tr> 
    <td class='text-left'>".$row['name']."</td> 
    <td id='title'class='text-left'>".$row['conca']."</td> 
    <td class='text-left'>".$row['SymptomsMatching']."</td> 
    </tr>"; 
    } 
} 

これはPHPスクリプトのコードです。私は結果が得られますが、その病気の名前でグループ化されていない瞬間です。

Disease  |  Symptoms  | No of Symptoms 
Malaria |  fever    | 1 
Diarrhea |  fever    | 1 
Malaria  |  nausea   | 1 
Diarrhea |  nausea   | 1 
Malaria  |  headache   | 1 

この結果は...現時点では取得しています。しかし、以下の表では、私が期待するものである:

Disease  |   Symptoms     | No of Symptoms 
Malaria |  fever,nausea,headache    | 3 
Diarrhea |  fever,nausea      | 2 

私はphpMyAdminの中で同じクエリを実行すると、私は右のテーブルを取得...私phpスクリプトのループがそれを引き起こしているかどうかは分かりません..誰かが私を助けてくれますか?

+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/132481/discussion-on-question-by-mcprilla79-grouping-results-of-select-statement-that-i)。 –

答えて

1

array_walk関数は$値を正しくフォーマットするのに役立ちます。したがって、各値は "一重引用符"で囲まれ、MYSQL WHERE IN()は正しく処理されます。

<?php 
$symp=$_POST['fields']; 

array_walk($symp, function(&$v,$k){ 
     $v = "'$v'"; 
}); 

$values=implode(",",$symp); 

$qry = "SELECT D.name, group_concat(symp SEPARATOR ',') as conca, count(*) as SymptomsMatching from linkds DS 
    JOIN symptoms S on DS.symptomId = S.id 
    JOIN disease D on DS.diseaseId = D.id 
    WHERE S.symp IN ($values) 
    GROUP BY D.name 
    ORDER BY SymptomsMatching DESC, D.name ASC"; 

$rep=mysqli_query($con,$qry); 
if($rep){ 
    foreach ($rep as $row) { 
     echo"<tr> 
      <td class='text-left'>".$row['name']."</td> 
      <td id='title'class='text-left'>".$row['conca']."</td> 
      <td class='text-left'>".$row['SymptomsMatching']."</td> 
      </tr>"; 
    } 
} 
?> 
+0

素晴らしいそれは素晴らしい仕事..高松 – mcprilla79

関連する問題