2016-04-23 14 views
0

に存在しているかどうか確認する方法:結果配列の要素は、私は私のプログラムでこのコードを持っている別の結果配列

<?php 

session_start(); 
$_SESSION['user_id']=201102887; 
$con = mysqli_connect('localhost', 'root', ''); 
if(!$con) 
{ 
    die("not ok"); 
} 
mysqli_select_db($con,"uoh"); 
$q = "SELECT * FROM courses 
     INNER JOIN transfer_student_courses 
     ON   transfer_student_courses.course_number = courses.course_number 
     INNER JOIN transfered_courses 
     ON   transfer_student_courses.sn = transfered_courses.sn 
     AND   transfer_student_courses.student_ID = " . $_SESSION['user_id']; 
$result = mysqli_query($con , $q); 
if($result){ 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<th>equivalent</th>"; 
    echo "</tr>"; 
    while($row = mysqli_fetch_array($result)) 
    { 
     echo "<tr>"; 
     echo "<td>" . $row["equivalent"]. "</td>"; 
     echo "</tr>"; 
    } 
    echo "</table>"; 
} 

mysqli_select_db($con,"uoh"); 
$q = "SELECT * FROM courses 
     LEFT JOIN degree_plan 
     ON   degree_plan.course_number = courses.course_number 
     LEFT JOIN student_record 
     ON   courses.course_number = student_record.course_number 
     AND  student_record.id = ". $_SESSION['user_id']." 
     WHERE  degree_plan.major = 'COE' 
     ORDER BY term_no"; 

$result = mysqli_query($con , $q); 
if($result){ 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<th>course</th>"; 
    echo "</tr>"; 

    while($row = mysqli_fetch_array($result)) 
    { 
     echo "<tr>"; 
     echo "<td>" . $row["code"]. "</td>"; 
     echo "</tr>"; 
    } 
} 
echo "</table>"; 

?> 

私は私のコースのリストを与え、それぞれが、このコードでは2つのクエリを、持っています。 コースが最初のリストに表示されている場合、私はそれを2番目のリストに表示したくありません。

このコードの出力が表示された場合、最初のクエリではMATH 101、2番目のクエリでもMATH 101と表示されます。

MATH 101は、最初のリストにも表示されるので、2番目のコースリストに表示しないようにします。

これを行うにはどうすればPHP言語で関数を書くことができますか?

出力:

equivalent 
MATH 101 

course 
PHYS 101 
CHEM 101 
PE 101 
IAS 101 
MATH 101 
ENGL 101 
+0

最初のリストにあるものが2番目のリストに表示されないようにします。あなたが持っている他のクエリは何ですか? –

+0

2つのクエリ – joseph

+0

コーステーブルプライマリキーの名前は何ですか? –

答えて

0

まず、アレイ内のすべてのequivalentコースを保存するには、$equivalent配列を言います。そして、2番目のwhileループでin_array()を使用すると、コースが既に最初のテーブルに印刷されているかどうかを確認することができます。

<?php 
    session_start(); 
    $_SESSION['user_id']=201102887; 
    $con = mysqli_connect('localhost', 'root', ''); 
    if(!$con){ 
     die("not ok"); 
    } 
    mysqli_select_db($con,"uoh"); 
    $q = "SELECT * FROM courses INNER JOIN transfer_student_courses ON 
    transfer_student_courses.course_number=courses.course_number INNER 
    JOIN transfered_courses ON transfer_student_courses.sn=transfered_courses.sn 
    AND transfer_student_courses.student_ID = " . $_SESSION['user_id']; 
    $result = mysqli_query($con , $q) ; 

    $equivalent = array(); 
    if($result){ 
     echo "<table>"; 
     echo "<tr>"; 
     echo "<th>equivalent</th>"; 
     echo "</tr>"; 
     while($row = mysqli_fetch_array($result)){ 
      $equivalent[] = $row["equivalent"]; 
      echo "<tr>"; 
      echo "<td>" . $row["equivalent"]. "</td>"; 
      echo "</tr>"; 
     } 
     echo "</table>"; 
    } 

    mysqli_select_db($con,"uoh"); 
    $q = "SELECT * FROM courses 
    LEFT JOIN degree_plan ON degree_plan.course_number= courses.course_number 
    LEFT JOIN student_record ON courses.course_number= student_record.course_number 
    AND student_record.id= ". $_SESSION['user_id']." 
    WHERE degree_plan.major='COE' ORDER BY term_no"; 

    $result = mysqli_query($con , $q) ; 
    if($result){ 
     echo "<table>"; 
     echo "<tr>"; 
     echo "<th>course</th>"; 
     echo "</tr>"; 

     while($row = mysqli_fetch_array($result)){ 
      if(in_array($row["code"], $equivalent)){ 
       continue; 
      } 
      echo "<tr>"; 
      echo "<td>" . $row["code"]. "</td>"; 
      echo "</tr>"; 
     } 
    } 
    echo "</table>"; 
?> 
0

結果はあなたの配列に存在する場合は、何もチェックを表示する前にあなたは、あなたが2番目のクエリの結果を表示しているとき、配列に最初のクエリの結果を読み込むことができます、もしそうなら、それをスキップしてください。

は、だからあなたの最初のクエリの後:あなたのコースコードの部分で次に

$equivalent = array(); // Setup a blank array to store the results 
while($row = mysqli_fetch_array($result)) 
{ 
    echo "<tr>"; 
    echo "<td>" . $row["equivalent"]. "</td>"; 
    echo "</tr>"; 
    $equivalent[] = $row['equivalent']; // Add the result into your array 
} 

:これは、両方の結果セットにある任意のエントリの表示を停止する必要があります

while($row = mysqli_fetch_array($result)) 
{ 
    if (! in_array($row['code'], $equivalent)) 
    { 
     echo "<tr>"; 
     echo "<td>" . $row["code"]. "</td>"; 
     echo "</tr>"; 
    } 
} 

に表示されています秒。

HTH

0

ソリューション::in_array( "言葉"、$配列)

だからあなたのコードは次のようにする必要があります

ここに参照です

クエリを実行すると、以下のようにreultsを追加する2番目のクエリについて

while($row = mysqli_fetch_array($result)) 
{ 
    arr1[]=$row["code"]; 
} 

クエリを実行し、配列に結果を得る

while($row = mysqli_fetch_array($result)){ 
    if (in_array($row[code], $arr1)) 
    { 
     //don't add to array2 
    } 
    else 
    { 
     arr2[] = $row["code"]; 
    } 
} 

必要に応じて、次にあなたが要素をechoことがあります。

関連する問題