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?
wo von dir bekommst du diese eine $ Zeile ["Name-img"]? – JYoThI
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. –
Ich habe mit dem richtigen $ r aktualisiert -> *** überall –