anpera.net https://anpera.homeip.net/phpbb3/ |
|
Suchfunktion https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=2907 |
Seite 1 von 1 |
Autor: | Drazaar [ Mo 18 Sep, 2006 22:30 ] |
Betreff des Beitrags: | Suchfunktion |
So... Ich versuche hier gerade ne Suchfunktion zusammenzubasteln. Sowas wie in der list.php. Wo man eben einfach einen Spieler mit einem eingabefeldchen sucht. Jetzt sagt nicht: Dann guck in der list.php ![]() Das habe ich schon 10000x gemacht...und ich schiebs nimmer. *gg* [php] <? // invite, who require_once "common.php"; page_header("asdf"); switch($_GET[op]){ case '': output("<form action='privat.php?op=search' method='POST'>Nach Name suchen: <input name='name'><input type='submit' class='button' value='Suchen'></form>",true); addnav("","privat.php?op=search"); break; case 'search': $who = $_POST['name']; $sql = " SELECT acctid,name,alive,sex FROM accounts WHERE locked=0 AND name LIKE '$who' "; $result = db_query($sql) or die(sql_error($sql)); if($result<1) output("Keine Spieler vorhanden"); else{ output("<table border=0 cellpadding=2 cellspacing=1 bgcolor='#999999'>",true); output("<tr class='trhead'><td><b>ID</b></td><td><b>Name</b></td><td><b>lebt?</b></td><td><b><img src=\"images/female.gif\">/<img src=\"images/male.gif\"></b></td></tr>",true); for($i=0;$i<db_num_rows($result);$i++){ $row = db_fetch_assoc($result); output("<tr class='".($i%2?"trdark":"trlight")."'><td>",true); output("<td align='center'>",true); output("`&$row['acctid']`0"); output("</td><td>",true); output("$row['name']"); output("</td><td>",true); output($row['alive']?"`@Ja!":"`4Nein!"); output("</td><td align='center'>",true); output($row['sex']?"<img src='images/female.gif'>":"<img src='images/male.gif'>",true); output("</td></tr>",true); } output("</table>",true); } break; } page_footer(); ?>[/php] Das hab ich zusammengepuzzelt. Ich habe keinen Plan, warum es net geht. Die Tabelle bleibt leer. (nein, das ist kein vollständiges Script, das ist lediglich ein Versuch^^) HLP, oder ich krieg hier noch die Krätze -.- |
Autor: | Auric [ Di 19 Sep, 2006 16:30 ] |
Betreff des Beitrags: | |
guck in die bank.php ![]() Nee, mal ernsthaft, da ist ein recht hübsches Suchsystem drinne, das sehr weit gestreut suchen kann... schau's dir mal an! |
Autor: | Harthas [ Di 19 Sep, 2006 17:01 ] |
Betreff des Beitrags: | |
Könnte es daran liegen, dass in der accountsspalte `name` der Name PLUS Titel PLUS Farbcodes enthalten sind? ;-) Da könnte man dann entweder nach dem Login suchen, oder ein weiteres db-feld... Oder dann die namen abrufen, die farbcodes entfernen, mit name LIKE '%$who%' (oder so xD) Arbeiten... So würde man auch etwas bekommen wenn man nur den titel angibt... Oder eben nur den namen... Ausserdem sollte [php]if($result<1) output("Keine Spieler vorhanden");[/php] Doch eigentlich [php]if(db_num_rows($result)<1) output("Keine Spieler vorhanden");[/php] heissen ;-) oder irre ich mich hier auch? *gg* |
Autor: | Eliwood [ Di 19 Sep, 2006 17:05 ] |
Betreff des Beitrags: | |
Drazi... Du hast auch genau den richtigen Namen eingegeben? ^^ Denn MySQL wird nur diese finden... ![]() Also entweder gibst du immer schön %-Zeichen ein, oder aber du nimmst folgende "Krücke". Alternativ würde ich nicht nur im Feld "name" danach suchen sondern noch "login" und "emailaddress". Anstatt: [php]$who = $_POST['name'];[/php] Könnte ich mir so etwas vorstellen: [php] $_POST['name'] = stripslashes($_POST['name']); $StrLen = StrLen($_POST['name']); $who = ''; for($i = 0; $i < $StrLen; $i++) { $who .= '%'.substr($_POST['name'], $i); } $who .= '%'; $who = mysql_real_escape_string($who); [/php] |
Autor: | Drazaar [ Di 19 Sep, 2006 17:37 ] |
Betreff des Beitrags: | |
omfg... Okok, ich glaub, wenn ich nach dem DB Feld Name guck, kann er auch nichts finden...sollte wohl schon login gucken^^ Ansonsten halt farbcodes und so raushauen, or?^^ €: [php] <? // invite, who require_once "common.php"; page_header("asdf"); switch($_GET[op]){ case '': output("<form action='privat.php?op=search' method='POST'>Nach Name suchen: <input name='name'><input type='submit' class='button' value='Suchen'></form>",true); addnav("","privat.php?op=search"); break; case 'search': $_POST['name'] = stripslashes($_POST['name']); $StrLen = StrLen($_POST['name']); $who = ''; for($i = 0; $i < $StrLen; $i++) { $who .= '%'.substr($_POST['name'], $i); } $who .= '%'; $who = mysql_real_escape_string($who); $sql = " SELECT acctid,name,alive,sex FROM accounts WHERE locked=0 AND name LIKE '$who' "; $result = db_query($sql) or die(sql_error($sql)); if(db_num_rows($result)<1) output("Keine Spieler vorhanden"); else{ output("<table border=0 cellpadding=2 cellspacing=1 bgcolor='#999999'>",true); output("<tr class='trhead'><td><b>ID</b></td><td><b>Name</b></td><td><b>lebt?</b></td><td><b><img src=\"images/female.gif\">/<img src=\"images/male.gif\"></b></td></tr>",true); for($i=0;$i<db_num_rows($result);$i++){ $row = db_fetch_assoc($result); output("<tr class='".($i%2?"trdark":"trlight")."'><td>",true); output("<td align='center'>",true); output("`&$row['acctid']`0"); output("</td><td>",true); output("$row['name']"); output("</td><td>",true); output($row['alive']?"`@Ja!":"`4Nein!"); output("</td><td align='center'>",true); output($row[sex]?"<img src='images/female.gif'>":"<img src='images/male.gif'>",true); output("</td></tr>",true); } output("</table>",true); } break; } page_footer(); ?>[/php] So schaut das nu aus, nach Eliwoods Verbesserung... Dummerweise peil ich http kein bisschen und jetzt meckert er das rum: Zitat: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /is/htdocs/wp1037182_J4AY65IMLD/www/logd/privat.php on line 31
Der Fehler befindet sich also in der Zeile: [php] output("`&$row['acctid']`0");[/php] Ich find' ihn aber nicht Oo |
Autor: | Eliwood [ Di 19 Sep, 2006 17:53 ] |
Betreff des Beitrags: | |
1. HTTP kann ich auch nicht. Ausser Content-Typen senden und n' paar andere Header kann ich da gar nichts... Naja. ^^ 2. [php]output("`&$row['acctid']`0"); [/php] Das muss so aussehen: [php]output("`&{$row['acctid']}`0"); [/php] Oder so: [php]output("`&".$row['acctid']."`0"); [/php] |
Autor: | Drazaar [ Di 19 Sep, 2006 17:55 ] |
Betreff des Beitrags: | |
Man bin ich blind -.- Vielleicht liegts auch einfach nur an dem: $this->bbcode_second_pass_code('', ' output("<tr class='".($i%2?"trdark":"trlight")."'><td>",true); output("<td align='center'>",true); ') da ist zwei mal ein <td> geöffnet und eines davon nicht geschlossen Oo €: Ok, nach Elis neuer Verbesserung funzt auch das nun wieder....dummerweise meint er jetzt die ganze zeit, dass er überhaupt niemanden gefunden hat...O_o |
Autor: | Eliwood [ Di 19 Sep, 2006 17:58 ] |
Betreff des Beitrags: | |
Das ist doch egal... oO Mach meinen Fix rein... Was verstehst du bitte nicht? ^^ Lösung 1 hat um die Variable {} drum rum. Das erlaubt, auch die keys mit ' oder " zu markieren, weil {} es zulassen, Konstanten zu parsen. Die Zweite Lösung unterbricht den String einfach und hängt die variable dazwischen. // Achja: [php]output("$row['name']"); [/php] ist genauso falsch: [php]output($row['name']); [/php] |
Autor: | Drazaar [ Di 19 Sep, 2006 18:01 ] |
Betreff des Beitrags: | |
Hab ich hab ich, keine Sorge, ich beachte schon, was du schreibst. $row['name'] hab ich auch schon in{} gesetzt... Leider findet er nun keine Spieler Oo |
Autor: | Eliwood [ Di 19 Sep, 2006 18:04 ] |
Betreff des Beitrags: | |
Nach: [php]$who = mysql_real_escape_string($who); [/php] Ein: [php]output('`$Debug: `0'.$who);[/php] // Dann bitte die Ausgabe nach "Debug" mitteilen... danke. |
Autor: | Drazaar [ Di 19 Sep, 2006 18:10 ] |
Betreff des Beitrags: | |
Zitat: Debug: %Draza´ar%raza´ar%aza´ar%za´ar%a´ar%´ar%ar%r% Keine Spieler vorhanden
Das meint er nun zu mir...Oo |
Autor: | Eliwood [ Di 19 Sep, 2006 18:16 ] |
Betreff des Beitrags: | |
Drazaar hat geschrieben: Zitat: Debug: %Draza´ar%raza´ar%aza´ar%za´ar%a´ar%´ar%ar%r% Keine Spieler vorhanden Das meint er nun zu mir...Oo Mein Fehler... Sorry. [php]$who .= '%'.substr($_POST['name'], $i); [/php] Ersetzen mit: [php]$who .= '%'.$_POST['name']{$i}; [/php] (Ja, das ist richtige Syntax *g*) |
Autor: | Drazaar [ Di 19 Sep, 2006 18:18 ] |
Betreff des Beitrags: | |
Um ehrlich zu sein, ich hab keinen Plan, was die funktion substr() überhaupt macht.... und dieses $i peil ich auch nicht ![]() ABER: Es funktioniert nun perfekt. Ich danke dir Eliwood, und auch ein Danke an Harthas ![]() MfG Draz |
Autor: | Eliwood [ Di 19 Sep, 2006 18:29 ] |
Betreff des Beitrags: | |
Drazaar hat geschrieben: Um ehrlich zu sein, ich hab keinen Plan, was die funktion substr() überhaupt macht....
und dieses $i peil ich auch nicht ![]() ABER: Es funktioniert nun perfekt. Ich danke dir Eliwood, und auch ein Danke an Harthas ![]() MfG Draz $i is ne Variable... Die von 0 hochgezählt wird =P Und Substr kannst du mit Parameter 2 den Startpunkt des Strings und mit Parameter 3 die Anzahl zeichen in Parameter 1 festlegen. Hast du ein string: "abcde" [php]echo substr("abcde", 1, 2);[/php] Das gibt zum Beispiel bc als. Zeichen 1 (0 ist das erste Zeichen), 2 Zeichen ab da und mit dem. Also bc... Mein Fehler war, dass ich, ohne Angabe des Dritten Parameters, immer den ganzen RestString bekommen hab... Was Natürlich nicht Ziel war ![]() |
Autor: | Auric [ Di 19 Sep, 2006 19:09 ] |
Betreff des Beitrags: | |
Sag mal Eli, greift man auf einzelne Chars eines Strings nicht ber $string[ZAHL] zu? Oder geht das auch mit {ZAHL}? *mal aus interesse frag* |
Autor: | Eliwood [ Di 19 Sep, 2006 19:32 ] |
Betreff des Beitrags: | |
Auric hat geschrieben: Sag mal Eli, greift man auf einzelne Chars eines Strings nicht ber $string[ZAHL] zu? Oder geht das auch mit {ZAHL}?
*mal aus interesse frag* Um Verwechslungen zu vermeiden sollten {} gebraucht werden... Man könnte ja meinen es sei ein array ![]() |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |