Ich habe eine Reihe von Namen von Instituten in jeder Zeile in meiner Schule Tabelle gespeichert. Die gleiche Tabelle enthält vier verschiedene Kategoriespalten, in denen die Namen der von ihnen angebotenen Themen gespeichert sind. Ich möchte eine Funktionalität ermöglichen, bei der der Benutzer eine Suche auf dem Tisch durchführt, um alle Namen der Institute herauszufinden, die ein bestimmtes Fach unterrichten (zB: Physik). Der Name des bestimmten Subjekts könnte in jeder der vier Spalten category
gespeichert werden. Bitte schlagen Sie eine mysqli_/mysql_ Abfrage vor, um eine solche Suche durchzuführen, oder schlagen Sie, falls Sie es wünschen, ein PHP-Skript vor, das die oben genannten Funktionen erfüllt.
EDIT: Ich erwähne die Tabellenstruktur unter:
Table showing column values
Table structureSuche nach einem Schlüsselwort über mehrere Spalten
alle verschiedenen Abfragen Hinzufügen i ohne Ergebnis versucht:
$query = mysql_query("SELECT name FROM institutes WHERE MATCH(category1, category2, category3, category4) AGAINST('$searchq' IN BOOLEAN MODE)") or die(" No records found.");
$query = mysql_query("SELECT name FROM institutes WHERE $searchq IN(category1, category2, category3, category4)") or die(" No records found.");
$query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%$searchq%' OR category2 LIKE '%$searchq%' OR category3 LIKE '%$searchq%' OR category4 LIKE '%$searchq%' OR category5 LIKE '%$searchq%'") or die(" No records found.");
Das Suchformular:
<div class="row col-md-6 col-md-offset-2">
<div class="col-lg-6">
<div class="input-group">
<form action="search_results.php" method = "post">
<input type="text" name="search" class="form-control" placeholder="Search by subjects...">
<span class="input-group-btn">
<button class="btn btn-default" type="button submit">Go!</button>
</span>
</form>
</div><!-- /input-group -->
</div>
</div>
Der gesamte PHP-Code:
<?php
mysql_connect("localhost", "root", "secretpassword") or die("could not connect.");
mysql_select_db("edhoc") or die("could not find database.");
$result = "";
//collect info from database
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
//echo $searchq;
//SQL query
$query = mysql_query("SELECT name FROM institutes WHERE category1 = '$searchq' OR category2 = '$searchq' OR category3 = '$searchq' OR category4 = '$searchq' OR category5 = '$searchq'") or die(" No records found.");
$count = mysql_num_rows($query);
if($count == 0) {
$output = "There's no search result";
} else {
while($array = mysql_fetch_assoc($query)) {
?>
<li><?php echo $array['name'];?></li>
<?php
}
}
}
?>
Keiner von ihnen die gewünschte Ausgabe erzeugen. Wenn physics
ist die Zeichenkette der Stromausgang:
Physik Keine Datensätze gefunden.
Wenn physics
die Suchzeichenfolge ist, die gewünschte Ausgabe ist:
- Bansal Klassen Studienzentrum
- Resonance EduVentures Pvt Ltd
Mögliche Duplikate von [Suche über mehrere Spalten] (http://stackoverflow.com/questions/36371155/searching-across-multiple-columns) – NineBerry
Dies ist das dritte Mal innerhalb von 24 Stunden, dass Sie die gleiche Frage stellen. Dies (die gleiche Frage mehrmals zu stellen) wird hier auf Stack Overflow als sehr unhöflich angesehen. – NineBerry
@NineBerry ich entschuldige mich. Ich hatte nicht die Absicht, unhöflich zu sein. Wenn überhaupt, bin ich verzweifelt. – Mickey