nach 5h vergeblicher suche im netz bin ich nahe drann aus dem fenster zu springen. aber keine angst, ich wohne im erdgeschoss.
nun, worum gehts...?
ein freundlicher nachbar war so nett und hat mir, bekannt als php-noob, ne kleine datenbank für ein browsergame gemacht.
da es sich um ein sonnensystem handelt welches pro sternensystem 16 koordinaten und allerlei informationen enthält, war eine copy/past lösung angebracht.
es wird also das komplette sternensystem als text gespeichert und bei der suche auch wieder so ausgegeben.
und nun zum problem:
die suche nach einem einzelnen spielernamen ( z.b. Arcturus ) liefert mit folgendes ergebniss:
1 • ¤ LS ¤ ZU VERMIETEN Arcturus
2 • ¤ LS ¤ Vivatown Vivajohn
3 # ¤ LS ¤ :::: BC-MM-02 Arcturus
4 # ¤ LS ¤ :::: BC-MM-01 Arcturus
5 • =|BC|= Tenacious G user-197 user-135
6 # ¤ LS ¤ NOX Outpost user-135Sheep
7 # =|BC|= Tenacious D user-197 user-135
8 • QinShi Tanus -John-
9 • ¤ LS ¤ Exodus user-135Sheep
10 • =|BC|= Atlantus Cynred (u)
11 • =|BC|= Jesiri Cynred (u)
12 • =|BC|= Manes Cynred (u)
13 • ¤ LS ¤ DWX Outpost user-135Sheep
14 # =|BC|= HAL9005 HAL9000
15 # ¤ LS ¤ °|!|° user-135Sheep
16 • ¤ LS ¤ Vivacity Vivajohn
was ich nun suche ist eine möglichkeit nur DIE ZEILEN anzeigen zu lassen in der auch der SUCHBEGRIFF vorkommt.
das sollte dann in etwa so aussehen ( suchbegriff "BlackSheep" ):
6 # ¤ LS ¤ NOX Outpost user-135Sheep
7 # =|BC|= Tenacious D user-197 user-135
9 • ¤ LS ¤ Exodus user-135Sheep
13 • ¤ LS ¤ DWX Outpost user-135Sheep
15 # ¤ LS ¤ °|!|° user-135Sheep
wer gerne mal einen blick auf den bisherigen code werfen will, bitte:
<?php
session_start();
include("config.inc.php"
include("auth.php"
// $rang = $_SESSION['rang'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title><? print $area ?></title></head>
<script type="text/javascript">
var stripe = function() {
var tables = document.getElementsByTagName("table"
for(var x=0;x!=tables.length;x++){
var table = tables[x];
if (! table) { return; }
var tbodies = table.getElementsByTagName("tbody"
for (var h = 0; h < tbodies.length; h++) {
var even = true;
var trs = tbodies[h].getElementsByTagName("tr"
for (var i = 0; i < trs.length; i++) {
trs[i].onmouseover=function(){
this.className += " ruled"; return false
}
trs[i].onmouseout=function(){
this.className = this.className.replace("ruled", "" return false
}
if(even)
trs[i].className += " even";
even = !even;
}
}
}
}
window.onload = stripe;
</script>
<link rel="stylesheet" href="style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?
echo "<div class='menueleiste'>";
echo "<strong>Status: </strong>";
echo $status[$_SESSION['rang']];
echo "<strong> | Benutzer: </strong>";
echo $_SESSION['username'];
echo "<strong> | <a href='logout.php'>Abmelden</a></strong></div><br />";
// echo "<form>";
// echo "<form action='logout.php' method='post'>";
// echo "<input type='submit' value='Eintragen' />";
// echo "</form>";
// echo $_SESSION['rang'];
// Datenbank verbinden
mysql_connect($db_server,$db_username,$db_password) or die ("Keine Verbindung moeglich"
mysql_select_db($db_name) or die ("Die Datenbank existiert nicht"
// Datenbank erstellen wenn nicht existent
mysql_query("CREATE TABLE IF NOT EXISTS $db_table (`x` int(3) NOT NULL,`y` int(2) NOT NULL,`z` int(2) NOT NULL,`tf` varchar(1) collate latin1_general_ci NOT NULL,`details` varchar(999) collate latin1_general_ci NOT NULL, `status` varchar(999) collate latin1_general_ci NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci"
// Unnütze Informationen ersetzen
$_POST[csv] = preg_replace('=([\s\S]*)(S])=',NULL,$_POST[csv]);
$_POST[csv] = preg_replace('=(Entfernung([\s\S]*)=',NULL,$_POST[csv]);
// Eintrag schon vorhanden ?
$test = mysql_query("SELECT * FROM $db_table WHERE x = '$_POST[x]' AND y = '$_POST[y]'"
// Post updaten oder speichern
if (mysql_num_rows($test) > 0) {
$eintrag = "UPDATE $db_table SET details = '$_POST[csv]' WHERE x = '$_POST[x]' AND y = '$_POST[y]'";
}
else {
$eintrag = "INSERT INTO $db_table (x, y, z, tf, details, status) VALUES ('$_POST[x]', '$_POST[y]', '0', '', '$_POST[csv]',''";
}
// Query ausführen, aber nur wenn eingaben nicht leer sind
if ($_POST[x] > 0 && $_POST[y] > 0) {
$eintragen = mysql_query($eintrag);
}
// Erfassungsmaske darstellen wenn Status = Admin
if ($_SESSION['rang'] > 1) {
echo "<strong>Erfassen</strong>";
echo "<form action='";
print $_SERVER['PHP_SELF'];
echo "' method='post'>";
echo "<dl>";
echo "<dt>X-Koordinate:</dt>";
echo "<dt><input type='text' name='x' /></dt>";
echo "<dt>Y-Koordinate:</dt>";
echo "<dt><input type='text' name='y' /></dt>";
echo "<dt>Copy & Paste (Ctrl + A / Ctrl + C / Ctrl + V):</dt>";
echo "<dt><textarea name='csv' rows='16' cols='70'></textarea></dt>";
echo "</dl>";
echo "<p>";
echo "<input type='submit' value='Eintragen' />";
echo " <input type='reset' value='Zurücksetzen' />";
echo "</p>";
echo "</form>";
}
else {
echo "";
}
// Suchmaske darstellen
echo "<strong>Suchen</strong>";
echo "<form action='";
print $_SERVER['PHP_SELF'];
echo "' method='post'>";
echo "<dl>";
echo "<dt>Beim Suchen kann man auch Platzhalter (%) verwenden! Beispiel: Don%Duck</dt>";
echo "<dt><br /></dt>";
echo "<dt>Suchwort:</dt>";
echo "<dt><input type='text' name='suchwort' /></dt>";
echo "<dt><br /></dt>";
echo "<dt><input type='submit' value='Suchen' /></dt>";
echo "</dl>";
echo "</form>";
// Hier beginnt der Suchen-Teil
$suchvariable=mysql_query("SELECT * FROM $db_table WHERE details LIKE '%$_POST[suchwort]%'"
//Auswahl ausführen und Ergebnis in Variable z speichern
if (!empty($_POST[suchwort])){
// Statusnachrichten
// SELECT * FROM $db_table WHERE hersteller = 'Toshiba'
if (mysql_num_rows($suchvariable) == 1) {echo "Es wurde <b>", mysql_num_rows($suchvariable), "</b> Datenbankeintrag mit dem Suchwort <b>$_POST[suchwort]</b> gefunden<br /><br />";}
if (mysql_num_rows($suchvariable) == 0) {echo "Es wurden <b>KEINE</b> Datenbankeinträge mit dem Suchwort <b>$_POST[suchwort]</b> gefunden.<br />Bitte versuchen Sie es mit einer anderen Eingabe.<br /><br />";}
if (mysql_num_rows($suchvariable) > 1) {echo "Es wurden <b>", mysql_num_rows($suchvariable), "</b> Datenbankeinträge mit dem Suchwort <b>$_POST[suchwort]</b> gefunden<br /><br />";}
// Suchwort markieren
$suchwort = $_POST[suchwort];
$pattern = '/('.preg_quote($suchwort, '/'.'/i';
$replace = '<span style="background-color:none; color: #ff0000; font-weight:bold">$1</span>';
// Suchergebnis darstellen
if (mysql_num_rows($suchvariable) > 0) {
echo "<table width=600 valign=top>";
echo "<thead><tr><td width=100><STRONG>X-Koordinate</STRONG></td><td width=100><STRONG>Y-Koordinate</STRONG></td><td><STRONG>NR TF Allianz Planet Spieler [S]</STRONG></td></tr></thead>";
}
// Nun wird das Ergebnis welches in $suchvariable steht in ein Array $unter umgewandelt und so lange durchlaufen wie Zeilen die Abfrage ausgibt.
while($unter=mysql_fetch_array($suchvariable))
{
$unter["details"] = str_replace(' ','<br />',$unter["details"]);
$unter["details"] = str_replace('• ','•<br />',$unter["details"]);
$unter["details"] = str_replace('# ','#<br />',$unter["details"]);
$unter["details"] = str_replace(' ','<br />',$unter["details"]);
echo "<tr>";
echo "<td valign=top>";
echo $unter["x"];
echo "</td><td valign=top>";
echo $unter["y"];
echo "</td><td valign=top>";
echo preg_replace($pattern, $replace, $unter["details"]);
echo "</td>";
echo "</tr>";
}
//Verbindung zum Server schließen
mysql_close();
echo "</table>";
}
?>
</html>
ich hoffe mir kann jemand weiterhelfen.
Wo kämen wir denn hin, wenn jeder sagen würde wo kämen wir hin, aber niemand gehen würde um zu sehen wohin wir kämen wenn wir gingen?