Hey liebe CB Community!
Also ich hab eine Suchfunktion gebastelt welche wie folgt aussieht:
Die "suche.php" sieht wie folgt aus:
Mein Problem bzw meine Frage ist eigentlich simpel jedoch für mich schwer zu lösen
Und zwar wird, wenn man etwas in das Suchfeld eingibt zb Rene, nur die ergebnisse aus der Spalte "vname" angezeigt. In dieser Spalte werden die Vornamen angegeben, soweit so gut.
Jedoch möchte ich eben das nicht nur die Spalte "vname" durchsucht wird sondern auch noch "nname" (Nachnahme) und auch "dj_name" (DJ Spitznamen).
Wenn ich nun den sql befehl in " WHERE vname OR nname OR dj_name " ergänze, wird jedoch immer nur in der letzten angegebenen Spalte durchsucht, in diesem Fall "dj_name".
Das ist mein erstes Problem und meine zweite Frage ist:
Als Ergebnis wird nur als row die Spalte "vname" ausgegeben, wie kann ich das Ergebnis ergänzen das die komplette Zeile bzw mehrere Spalten angegeben werden? Also wenn man zb nach DJ Dingsbums sucht, dass das Ergebnis ca so aussieht:
Rene, Mayer, DJ Dingsbums, Nordrhein-Westfalen
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken
MfG
Also ich hab eine Suchfunktion gebastelt welche wie folgt aussieht:
PHP:
<script type="text/javascript">
function searchFor(suchbegriff){
var xmlHttp = null;
// Mozilla, Opera, Safari sowie Internet Explorer 7
if (typeof XMLHttpRequest != "undefined") {
xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp) {
// Internet Explorer 6 und älter
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
xmlHttp = null;
}
}
}
// Wenn das Objekt erfolgreich erzeugt wurde
if (xmlHttp) {
var url = "suche.php";
var params = "suchbegriff="+suchbegriff;
xmlHttp.open("POST", url, true);
//Headerinformationen für den POST Request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
// Zurückgeliefertes Ergebnis wird in den DIV "ergebnis" geschrieben
document.getElementById("ergebnis").innerHTML = xmlHttp.responseText;
}
};
xmlHttp.send(params);
}
}
</script>
<body>
<input type="text" onkeyup="searchFor(this.value);"/>
<div id="ergebnis"></div>
</body>
Die "suche.php" sieht wie folgt aus:
PHP:
<?php
// Verbindung
$server = "localhost";
$benutzername = "****";
$passwort = "****";
$datenbank = "test";
// Server Verbindung herstellen
mysql_connect($server,$benutzername,$passwort) or
die ("Keine Verbindung moeglich");
// Datenbank Verbidung
mysql_select_db($datenbank) or
die ("Die Datenbank existiert nicht");
$tabelle = "members";
if ($_POST["suchbegriff"]){
// Mysql Abfrage wird gespeichert mit den Notwendigen Parameter
$sql = "SELECT * FROM ".$tabelle." WHERE vname LIKE ('%".mysql_real_escape_string(utf8_decode($_POST["suchbegriff"]))."%')";
// Mysql Abfrage wird durchgeführt
$result = mysql_query($sql);
// Suchbegriff wird ausgegeben
echo "Sie Suchten nach: ".$_POST["suchbegriff"]."<br/><br/>";
// Ergebnis wird ausgegeben mit Zeilenumbruch
while($row = mysql_fetch_object($result)){
echo utf8_encode($row->vname);
echo "<br/>";
}
}
?>
Mein Problem bzw meine Frage ist eigentlich simpel jedoch für mich schwer zu lösen
Und zwar wird, wenn man etwas in das Suchfeld eingibt zb Rene, nur die ergebnisse aus der Spalte "vname" angezeigt. In dieser Spalte werden die Vornamen angegeben, soweit so gut.
Jedoch möchte ich eben das nicht nur die Spalte "vname" durchsucht wird sondern auch noch "nname" (Nachnahme) und auch "dj_name" (DJ Spitznamen).
Wenn ich nun den sql befehl in " WHERE vname OR nname OR dj_name " ergänze, wird jedoch immer nur in der letzten angegebenen Spalte durchsucht, in diesem Fall "dj_name".
Das ist mein erstes Problem und meine zweite Frage ist:
Als Ergebnis wird nur als row die Spalte "vname" ausgegeben, wie kann ich das Ergebnis ergänzen das die komplette Zeile bzw mehrere Spalten angegeben werden? Also wenn man zb nach DJ Dingsbums sucht, dass das Ergebnis ca so aussieht:
Rene, Mayer, DJ Dingsbums, Nordrhein-Westfalen
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken
MfG