anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 16 Jun, 2025 06:23

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Suchfunktion
BeitragVerfasst: Mo 18 Sep, 2006 22:30 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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 -.-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 16:30 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
guck in die bank.php :D

Nee, mal ernsthaft, da ist ein recht hübsches Suchsystem drinne, das sehr weit gestreut suchen kann... schau's dir mal an!

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 17:01 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
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*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 17:05 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 17:37 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 17:53 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 17:55 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 17:58 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 18:01 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 18:04 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Nach:
[php]$who = mysql_real_escape_string($who); [/php]
Ein:
[php]output('`$Debug: `0'.$who);[/php]

// Dann bitte die Ausgabe nach "Debug" mitteilen... danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 18:10 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 18:16 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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*)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 18:18 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Um ehrlich zu sein, ich hab keinen Plan, was die funktion substr() überhaupt macht....

und dieses $i peil ich auch nicht :P (ich glaub ich sollte bei Waldspecials bleiben ^^)

ABER: Es funktioniert nun perfekt. Ich danke dir Eliwood, und auch ein Danke an Harthas :)

MfG Draz


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 18:29 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Drazaar hat geschrieben:
Um ehrlich zu sein, ich hab keinen Plan, was die funktion substr() überhaupt macht....

und dieses $i peil ich auch nicht :P (ich glaub ich sollte bei Waldspecials bleiben ^^)

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 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 19:09 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
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*

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 19 Sep, 2006 19:32 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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 ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum