Stránka 1 z 1
PHP
Napsal: ned 9. dub 2006, 20:26
od XenoCIDa
Mam dotaz, jakou nejvhodnejší cestu mam zvolit pro tento problém:
V poli $cznazev mam nějaký název a potřebuju z něho první znak a podle toho zda se znak rovná nějakej hodnotě, tak mu přiřadit jinou číselnou hodnotu.
Bohužel příkaz switch se mi zdá na toto pomalý a rád bych nějaké elegantnější řešení, ael nic mne nenapadlo. zde jen uvádím příklad toho jak to funguje s příkazem switch. Mimochodem, taky nevim jak vyřešit malá a velká písmena a navíc mi tento příkaz nebere třeba písmeno č, ale písmeno ž už ano...
$abeceda=substr($cznazev,0,1);
switch($abeceda):
case "a": break;
case "A": $abeceda=1;break;
case "b": $abeceda=2;break;
case "B": $abeceda=2;break;
case "c": $abeceda=3;break;
case "C": $abeceda=3;break;
case "č": $abeceda=3;break;
case "Č": $abeceda=3;break;
default:$abeceda=0;break;
endswitch;
Napsal: pon 10. dub 2006, 00:09
od Chap
no pro to co zde pises asi rychlejsi zpusob nenajdes, nez pres swith.
jinak nevim co ne nem je tak pomaleho.
a s tema znakama to je problem v kodovani PHP. treba č se vyjadri takhle: & #382; bez ty mezery mezi & a #
spis by bylo lepsi kdyby si lip popsal problem ktery resis, protoze z tohode nikdo nic nevymysli

Napsal: pon 10. dub 2006, 07:03
od XenoCIDa
fajn dík..
no lepší popsání....
dělam takovej menší admin systém a v něm zadáváš název něčeho (název filmu, název výrobku atd..) no a jelikož bude na stránce fungovat vyhledávání podle abecedy, klikneš na C a zobrazí se ti vše od c,C,č,Č...
jako to co tim začíná... no tak mě napadlo zapsat si do mysql tabulky hodnotu to čim to začíná a poté si to pouze podle tohoto pole setřídit, enb by to mohlo ušetřit více času než pozdější vyhledávání, které by spustil uživatel...
no zatím mne napadlo toto:
$abeceda=substr(trim($cznazev),0,1);
$a=array('pism'=>$abeceda);
function zmenapism($abeceda)
{
$ab = Array("a"=>"1","A"=>"1","á"=>"1", "b"=>"2", "B"=>"2" , "c"=>"3", "C"=>"3"....atd....);
foreach ($ab as $pism=>$cisl)
{ if ($abeceda==$pism) $abeceda=$cisl; }
return $abeceda;
}
$abeceda=zmenapism($abeceda);
ale je to dle mne blbost, protože to prochází všechny hodnoty toho pole...
já fakt nevim co na to zvolit...
jinak to že to je pomalé jsem bral z :
http://www.dgx.cz/trine/item/php-pomale-switch-a-case
Napsal: pon 10. dub 2006, 09:05
od Chap
hlavne je to mozna zbytecny zaznam do DB nemyslis?
Co to osetrit az na urovni db.
switch($_GET["pismeno"]):
case 'c': $podminka="where nazev like C%' OR nazev like 'Č%' ";break
case 'č': $podminka="where nazev like C%' OR nazev like 'Č%' ";break
case 'z' : $podminka="where nazev like 'Z%' OR nazev like 'Ž%' "Break
case 'z': $podminka="where nazev like 'Z%' OR nazev like 'Ž%' "break
default: : $pom=strtoupper($_GET["pismeno"])`$podmnka ="Where nazev like '$pom%'"
je taky treba si uvedomit ,ze u nazvu filmu se nevyskytuje male pismeno.
takze staci osetrit jen specialni znaky jako ěščřžý
Napsal: pon 10. dub 2006, 15:26
od XenoCIDa
jj o těch malých písmenech sem už přemýšlel, ale kdo ví...
jinak, to s tim očetřením až na urovni db neni špatnej nápad... ale nezpomaluje to pak všechno? nevim zda v tuto chvíli je lepší záznam v databázi navíc nebo pár řádků, které se musí provést....
Napsal: pon 10. dub 2006, 15:58
od Chap
no myslim ze se prilis zaobiras problemem vytizeni jednotlivych casti.
Mozna by v analize problemu chtelo popremyslet jak moc ten projekt bude vyuzivany jestli prumerne 40 lidi za hodinu bude prohlizet web.
data v databazi budou jen zakladni(zadne binarni soubory atp) tak je mozna zbytecne se tak do hloubky zaobirat zatezi treba te DB.
A predpokladam ze ve filmotece nejakych 50000 zaznamu pravdepodobne taky nebude .......
Napsal: pon 10. dub 2006, 16:24
od XenoCIDa
no tak co jsem slyšel od manažera projektu a pana Plánovače

tak základní návštěvnost je 1500-2000lidí za den..
no nevim, mě to sice nepřipadá moc reálný na začínající projekt, ale to není má starost....

kolik tam bude záznamů nemam vůbec potuchy... ale tipuju že tak 200bude dost
ale když říkáš, tak dam na tebe a tvůj psotup...
ale pokud se něco zvrtne....

tak si tě najdu

a až tě najdu, tak tě kousnu

Re: PHP
Napsal: pát 5. kvě 2006, 23:07
od Drom
XenoCIDa píše:Mam dotaz, jakou nejvhodnejší cestu mam zvolit pro tento problém:
V poli $cznazev mam nějaký název a potřebuju z něho první znak a podle toho zda se znak rovná nějakej hodnotě, tak mu přiřadit jinou číselnou hodnotu.
Bohužel příkaz switch se mi zdá na toto pomalý a rád bych nějaké elegantnější řešení, ael nic mne nenapadlo. zde jen uvádím příklad toho jak to funguje s příkazem switch. Mimochodem, taky nevim jak vyřešit malá a velká písmena a navíc mi tento příkaz nebere třeba písmeno č, ale písmeno ž už ano...
$abeceda=substr($cznazev,0,1);
switch($abeceda):
case "a": break;
case "A": $abeceda=1;break;
case "b": $abeceda=2;break;
case "B": $abeceda=2;break;
case "c": $abeceda=3;break;
case "C": $abeceda=3;break;
case "č": $abeceda=3;break;
case "Č": $abeceda=3;break;
default:$abeceda=0;break;
endswitch;
$cznazev{0} je prvni pismeno.
Re: PHP
Napsal: stř 24. srp 2011, 11:34
od malone
Zdravím. Potřeboval bych vyřešit následující. Mám pole obsahující rozsah IP adres sítě a chci ošetřit,aby se za a) spustila nějaká akce,jakmile se připojí libovolná IP z tohoto rozsahu a za b) se ta konkrétní IP vypsala echem. V PHP nejsem zrovna expert a na tomto jsem se zasekl. Díky za nasměrování.

Re: PHP
Napsal: stř 24. srp 2011, 12:24
od arxeiss
IP adresa usera je uložena v $_SERVER['REMOTE_ADDR']. Jakým stylem máš uložené rozsahy IP adres? Můžeš blíže specifikovat?
Re: PHP
Napsal: stř 24. srp 2011, 13:03
od malone
Ty IP by byly jako řetězce v array a to natvrdo..
Re: PHP
Napsal: stř 24. srp 2011, 13:04
od arxeiss
Jo, ale jak máš definovaný rozsah? Nebo to tam máš jenom přesně konkrétní IPčka?
Re: PHP
Napsal: stř 24. srp 2011, 13:13
od malone
Jo takhle..

Ano,jen konkrétní adresy.
Re: PHP
Napsal: stř 24. srp 2011, 13:25
od arxeiss
Tak jestli daná IP adresa tam je, na to můžeš použít funkci in_array() a to je vlastně vše

toto dáš do podmínky, vrací buď true nebo false, IP adresa je v té $_SERVER['REMOTE_ADDR'];
Re: PHP
Napsal: stř 24. srp 2011, 13:38
od malone
To by mohlo fungovat... Dík za inspiraci!
