2016-05-12 3 views
0

Ich habe eine Suchfunktion in PHP für meine MySQL-Datenbank gemacht. Die Suche funktioniert, aber ich möchte das Ergebnis auf eine besondere Weise anzeigen. Ich verwende Karten, um die Tabellen zu zeigen, wo einige Informationen von der Tabelle (LessonPlans) ich suche und eine andere Information von einer anderen Tabelle (Bilder) ist. Der ursprüngliche Code war:Suche MySQL und zeige das Ergebnis von anderen Tabelle

<?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>'; 
     } 
    } 
} 
?> 

Die Tabellen ich verwenden möchte, sind:

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

und

Image 
ImageId | Name-img | Alt-img 

Wie ist es das richtige Ergebnis aus LessonPlans zeigt aber nicht die Informationen Das ist nicht suchbar. Ich weiß, dass es nicht so funktioniert, und ich habe mit UNION, JOIN und ebenso mit nur zwei SELECT Abfragen versucht. Sobald ich die Images Tabelle in die Abfrage hinzufügen erhalte ich diese Fehlermeldung:

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

Von dem, was ich verstehe, ist dies, weil $query kein Objekt ist, wenn ich einen anderen Tisch. Was ich nicht verstehe ist, wie ich das durchhalte. Es muss eine Möglichkeit geben, eine Tabelle zu durchsuchen, aber Ergebnisse aus zwei Tabellen anzuzeigen. Weiß jemand, wie man das macht?

Welche Abfrage benötige ich und wie zeige ich alles an?

+0

wo von dir bekommst du diese eine $ Zeile ["Name-img"]? – JYoThI

+0

Dies ist, was ich drucken will, das ist von 'Images'. In meiner "normalen" Anzeige verwende ich '$ sql_result = $ link-> query (" SELECT * FROM LessonPlans l, Bilder i WHERE l.ImageId = i.ImageId UND l.Language = 'English' ORDER BY l.Id DESC; ")' und 'while ($ row = mysqli_fetch_array ($ sql_result))' und dann zeige ich mit Zeile ["***"] an. Also habe ich es dort gelassen, um zu betonen, dass es vom anderen Tisch kommt. –

+0

Ich habe mit dem richtigen $ r aktualisiert -> *** überall –

Antwort

0

Versuchen Sie, wie diese

wählen table1.firstname, table2.lastname aus Tabelle 1, table2 wo table1.id = table2.id

+0

Das wird das Problem der Anzeige von beiden Tabellen nicht lösen –

0

versuchen, diese

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' 

und ouput Sie das bekommen Ausgabe von $ r = $ query-> fetch_object() also müssen Sie Objekt verwenden, um den Wert wie folgt zu erhalten $ r-> Betreff

+0

Dies hilft mir nicht, etwas aus 'Images' anzuzeigen –

Verwandte Themen