2016-05-12 12 views
0

私はMySQLデータベースのためにPHPで検索機能を作っています。検索は機能しますが、結果を特別な方法で表示したいと思います。私はいくつかの情報が私が検索するテーブル(LessonPlans)から別の情報が別のテーブル(画像)から来ているテーブルを表示するためにカードを使用しています。検索MySQLと他のテーブルの結果を表示

<?php 
require_once("db_link.inc.php"); 

if(isset($_GET['search'])) { 
    $search = $link->escape_string($_GET['search']); 
    $query = $link->query("SELECT Subject, Level, Aim FROM LessonPlans WHERE Subject LIKE '%".$search."%' OR Level LIKE '%".$search."%' OR Aim LIKE '%".$search."%' AND Language='English'"); 

if($query->num_rows){ 
    while($r = $query->fetch_object()){ 

    echo '<div class="col s6 m4 l3"> 
      <div class="card"> 
       <div class="card-image waves-effect waves-block waves-light"> 
        <img class="activator" src="../mlslp/assets/img/'. $r->Name-img .'" alt="'. $r->Alt-img .'"> 
       </div> 
       <div class="card-content"> 
        <span class="card-title activator grey-text text-darken-4 truncate tooltipped" data-position="bottom" data-delay="800" data-tooltip="'.$r->Subject.'">'.$r->Subject.'</span> 
        <p class="blue-text">'.$r->Level.'</p> 
       </div> 
       <div class="card-action"> 
        <a href="lessonplan.php?Id='. $r->Id .'">Open Lesson Plan</a> 
       </div> 
       <div class="card-reveal"> 
        <span class="card-title grey-text text-darken-4">'.$r->Subject.'<i class="material-icons right">close</i></span> 
        <p>'.$r->Aim.'</p> 
       </div> 
      </div> 
     </div>'; 
     } 
    } 
} 
?> 

私が使用するテーブルは、次のとおりです:元のコードは、このでした

LessonPlans 
Id | ImageId | Subject | Level | Aim | Language 

と、それが情報をLessonPlansから正しい結果を示したが、ないので

Image 
ImageId | Name-img | Alt-img 

それは検索可能ではありません。私はそれがこのように動作しないことを知っており、私はUNIONJOINと同様に2つのSELECTクエリで試してみました。できるだけ早く私は、クエリにImagesテーブルを追加すると、私は、このエラーメッセージが表示されます:

Notice: Trying to get property of non-object in ... 

私が理解から、私は別のテーブルを追加するとき$queryがオブジェクトではないので、これはです。私が理解していないことは、これをどのように回避するかです。 1つのテーブルを検索して2つのテーブルの結果を表示する方法が必要です。誰もこれを行う方法を知っていますか?

どのようなクエリが必要ですか、どのように表示するのですか?

+0

あなたはこの$行["Name-img"]を取得しますか? – JYoThI

+0

これは 'Images'から印刷したいものです。私の通常の表示では、$ sql_result = $ link-> query( "SELECT * FROM LessonPlans l、Images i WHERE l.ImageId = i.ImageIdとl.Language = 'English' ORDER BY l.Id DESC; ")'と 'while($ row = mysqli_fetch_array($ sql_result))'を実行し、次に行["***"]を表示します。だから私はそれを他のテーブルのものであることを強調するためにそこに残しました。 –

+0

どこでも正しい$ r - > ***を更新しました –

答えて

0

table1.id = table2.id

+0

これは両方のテーブルからの表示の問題を解決しません –

0

この

SELECT * FROM LessonPlans AS L 
JOIN Image AS I 
ON L.ImageId=I.ImageId 
WHERE L.Subject 
LIKE '%".$search."%' 
OR L.Level LIKE '%".$search."%' 
OR L.Aim LIKE '%".$search."%' 
AND L.Language='English' 

を試してみて、あなたが得るouputをtable2の 、TABLE1からtable2.lastname、この

選択table1.firstnameのように試してみてください$ r = $ query-> fetch_object()によって出力されるので、オブジェクトを使ってこのような値を取得する必要があります$ r->件名

+0

これは 'Images' –

関連する問題