Autor | Zpráva | ||
---|---|---|---|
SkyVessel Profil * |
#1 · Zasláno: 18. 1. 2010, 22:08:30
Mám data v tabulce mysql a na stránce je vypisuji:
jen ty co zacinaji na A, pak ty na B.... $seznam=$_get['szn'].'%'; $dotaz="SELECT * FROM data WHERE nick LIKE '$seznam'"; (tuším že tak nějak to tam mám =D) Jak vypsat ty záznamy, které začínají nějakým znakem nebo číslovkou?? :) |
||
AM_ Profil |
#2 · Zasláno: 18. 1. 2010, 22:11:30
nevidím problém, kromě SQL injection zranitelnosti :) pokud jsou tedy vypnuté magic_quotes_gpc.
pokud bude v $_GET['szn'] číslovka nebo jiný znak, mělo by to fungovat. |
||
SkyVessel Profil * |
#3 · Zasláno: 18. 1. 2010, 22:17:27
No to jsem právě zapoměl napsat - mě to nenapadlo... vypisuji pouze to, co potřebuji a znaky a čísla jsou v kategorii "#"...
<a href="?szn=a">A</a><a href="?szn=b">B</a> ... <a href="?szn=???">#</a> |
||
mattyZEM Profil |
#4 · Zasláno: 18. 1. 2010, 22:21:51 · Upravil/a: mattyZEM
Nebude to fungovat, správně to je:
WHERE nick LIKE '$seznam%' :) (nevím jestli je to tak přesně s těmi apostrofy, ale % = .*?) |
||
keeehi Profil |
#5 · Zasláno: 18. 1. 2010, 22:26:36
mattyZEM:
Procento na konec přidává už o řádek výše: $seznam=$_get['szn'].'%'; |
||
mattyZEM Profil |
Forgive me! Nečetl jsem to celé, gomen, meine schuld.
Moderátor nightfish: Dodržuj pravidla.
|
||
AM_ Profil |
#7 · Zasláno: 19. 1. 2010, 09:33:15
Zkus toto:
<a href="?szn=%23">#</a> |
||
SkyVessel Profil * |
#8 · Zasláno: 19. 1. 2010, 11:21:45
Nee...
mám tam nicky jako 4ever nebo -xXx-... Od a po z to jede, ale nwm, jak na ty znaky... |
||
SkyVessel Profil * |
#9 · Zasláno: 19. 1. 2010, 12:15:58
Mě napadlo že by se dalo použít
<a href="?szn=0">#</a> ... if (@$_GET["p"] == "0") {$page = "[^a-z]%";} ale nevím, jak přesně to udělat, aby to jelo - jestli to tak vůbec pojede |
||
AM_ Profil |
#10 · Zasláno: 19. 1. 2010, 13:29:35
Aha, už chápu, co chceš udělat, a dělá se to takto:
SELECT * FROM data WHERE nick REGEXP '^[^a-zA-Z].*' |
||
SkyVessel Profil * |
#11 · Zasláno: 19. 1. 2010, 15:43:06
takže můj výsledný kód vypadá asi takto... já vím, že by se to dalo udělat i jinak a efektivněji, ale co se týče mých znalostí - jsem spokojen :D
$page = @$_GET["p"]."%"; if (!@$_GET["p"]) { $page = 'a%'; } $page_pom = NULL; if (@$_GET["p"] == "a") $page_pom = "á%"; if (@$_GET["p"] == "c") $page_pom = "č%"; ... if (@$_GET["p"] == "z") $page_pom = "ž%"; if (@$_GET["p"] == "0") {$page = "REGEXP '^[^a-zA-Z].*'";} $dotaz = "SELECT nick, damage, armor, world, DATEDIFF(NOW(), date) AS age, info FROM players WHERE LOWER(nick) LIKE LOWER('$page') OR LOWER(nick) LIKE LOWER('$page_pom') ORDER BY nick ASC"; $vysledek = @mysql_query($dotaz); while ($player = mysql_fetch_array($vysledek, MYSQL_NUM)) {... ...ovšem to REGEXP nefunguje... když na něj dojde vyhodí to tohle: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in E:\EasyPHP5.3.0\www\rsf\player.php on line 51 ...a mé anglické umění není natolik dobré, abych se o té funkci dozvěděl víc a tak to opravil sám... PLS HELP |
||
AM_ Profil |
#12 · Zasláno: 19. 1. 2010, 18:20:37 · Upravil/a: AM_
Tak se podívej, co jsi napsal, když rozvineš proměnnou $page:
"SELECT nick, damage, armor, world, DATEDIFF(NOW(), date) AS age, info FROM players WHERE LOWER(nick) LIKE LOWER('0%') OR LOWER(nick) LIKE LOWER('REGEXP '^[^a-zA-Z].*'') ORDER BY nick ASC" Je snad jasné, že toto v životě nebude fungovat. Budeš muset dotaz restrukturalizovat. REGEXP funguje, jen musíš dodržet syntaxi. //hint: funkce LOWER je přinejmenším v té druhé části zbytečná, regulární výraz '^[^a-zA-Z].*' zahrne malá i velká písmena. |
||
SkyVessel Profil * |
#13 · Zasláno: 19. 1. 2010, 19:40:31
...když rozvinu proměnnou $page tak dotaz vypadá trochu jinak...
"SELECT nick, damage, armor, world, DATEDIFF(NOW(), date) AS age, info FROM players WHERE LOWER(nick) LIKE LOWER('REGEXP '^[^a-zA-Z].*'') OR LOWER(nick) LIKE LOWER('') ORDER BY nick ASC" Po dlouhém hledání, jak má vlastně syntaxe s REGEXP vypadat =) a po menší úpravě jsem dospěl k funkčnímu výsledku "SELECT nick, damage, armor, world, DATEDIFF(NOW(), date) AS age, info FROM players WHERE (nick REGEXP '^[^a-zA-Z].*') ORDER BY nick ASC" Kdybych nechtěl, aby mi to vypisovalo i nicky začínající háčky... REGEXP '^[^a-zA-ZáéíóúčňřšťžÁÉÍÓÚČŇŘŠŤŽ].*' ...je to správně?? Fungovat to jede, takže asi jo :) A DÍKY ZA POMOC |
||
AM_ Profil |
#14 · Zasláno: 20. 1. 2010, 10:16:46
Není zač... žádnou další chybu tam nevidím.
|
||
Časová prodleva: 14 let
|
0