Suchergebnisse in Modal anzeigen lassen


#1
Hi,

Ich habe mir mit PHP und eine MYSQL Datenbank eine Suchfunktion gebaut. Bisher stand im <form> teil nur action="search.php" drin und somit werden die Suchergebnisse auf einer extra seite angezeigt. Ich möchte die suchergebnisse allerdings in einem Modal anzeigen lassen. Daher habe ich den action tag jetzt gegen folgendes ausgetauscht: data-toggle="modal" data-target="#smodal"
Dadurch popt mein model, in das ich jetzt den Inhalt der seite "search.php" reinkopiert habe für einen Bruchteil einer sekunde auf und verschwindet sofort wieder.
Wie kann ich das fixen?

Mein code für die Search Bar sieht so aus:
<form data-toggle="modal" data-target="#smodal" method="get">
<input type="text" name="q" id="searchBar" placeholder="" value="Suchen..." maxlength="50" autocomplete="on" onmousedown="active();" onblur="inactive();"><button class="btn buttondefinition button" type="submit" id="searchBtn" role="button"><i class="fa fa-search"></i></button>
</form>

Und das modal so:
<div class="modal" id="smodal">
<div class="modal-dialog">
<div class="modal-content mittig">
<div class="modal-header">
<h2 class="modal-title"> Suchergebnisse</h2>
<button class="close" type="button" data-dismiss="modal">x</button>
</div>
<div class="modal-body">

<?PHP
$conn = mysqli_connect("localhost","root","","search");

if(mysqli_connect_errno()) {
echo "failed to connect: " . mysqli_connect_error();
}
?>
<?PHP
$output = "";

if (isset($_GET["q"]) && $_GET["q"] !=="") {
$searchq = $_GET["q"];

$q = mysqli_query($conn, "SELECT * FROM search WHERE keywords LIKE '%$searchq%' OR title LIKE '%$searchq%' OR description LIKE '%$searchq%'") or die(mysqli_error());
$c = mysqli_num_rows($q);
if($c == 0) {
$output = "Kein Suchergebnis für <b>" .$searchq. "</b>.";
} else {
while ($row = mysqli_fetch_array($q)) {
$id = $row["id"];
$title = $row["title"];
$desc = $row["description"];
$link = $row["link"];

$output .= "<a href=" . $link . ">
<h3>" . $title . "</h3>
<p>" . $desc . "</p>
</a>";
}
}
} else {
header("location: ./");
}
print("$output");
mysqli_close($conn);
?>


</div>
</div>
</div>
</div>

Vielen Dank im Vorraus!
VG Jan
 
#3
Hi,
Ich werde mich zur Not mit Ajax befassen, aber gibt es keine Möglichkeit das Problem so zu lösen?
Kann man das neu laden irgendwie verhindern, bzw. nur das modal hinzufügen lassen?

VG und vielen Dank
Jan
 

Sempervivum

Erfahrenes Mitglied
#4
Nur das Modal hinzu fügen ist möglich, aber Du brauchst ja auch die Suchergebnisse darin. Und um die zu bekommen, brauchst Du das PHP-Skript und das kannst Du nur aufrufen, indem Du die betr. Seite search.php direkt aufrufst mit den Problemen, die Du hast oder über Ajax.
 

Sempervivum

Erfahrenes Mitglied
#6
Im Prinzip schon, aber dann musst Du beim Laden der Seite das Modal öffnen, denn der Klick ist ja vorbei. Wie ich sehe, verwendest Du Bootstrap und damit habe ich leider keine Kenntnisse und kann dich nicht beraten. Eine Möglichkeit wäre, einen Klick auf den Öffnen-Button zu simulieren, ist mit jQuery kein Problem. Aber wahrscheinlich wird das unübersichtlicher als wenn Du es mit Ajax machst.
 

Neue Beiträge