PHP
- XenoCIDa
- Nováček

- Registrován: 09. dub 2006
- Kontaktovat uživatele:
PHP
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;
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;
- Chap
- Začátečník

- Registrován: 14. bře 2004
- Bydliště: Všude
- Kontaktovat uživatele:
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
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
Smoke it for PEACE please
- XenoCIDa
- Nováček

- Registrován: 09. dub 2006
- Kontaktovat uživatele:
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
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
- Chap
- Začátečník

- Registrován: 14. bře 2004
- Bydliště: Všude
- Kontaktovat uživatele:
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 ěščřžý
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 ěščřžý
Smoke it for PEACE please
- XenoCIDa
- Nováček

- Registrován: 09. dub 2006
- Kontaktovat uživatele:
- Chap
- Začátečník

- Registrován: 14. bře 2004
- Bydliště: Všude
- Kontaktovat uživatele:
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 .......
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 .......
Smoke it for PEACE please
- XenoCIDa
- Nováček

- Registrován: 09. dub 2006
- Kontaktovat uživatele:
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 
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....
- Drom
- Začátečník

- Registrován: 18. zář 2005
- Bydliště: Kdyne
- Kontaktovat uživatele:
Re: PHP
$cznazev{0} je prvni pismeno.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;
- malone
- Začátečník

-
- Registrován: 02. pro 2010
Re: PHP
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í. 
- arxeiss
- Začátečník

- Registrován: 19. črc 2008
- Bydliště: Krmelín (předměstí Ostravy)
- Kontaktovat uživatele:
Re: PHP
IP adresa usera je uložena v $_SERVER['REMOTE_ADDR']. Jakým stylem máš uložené rozsahy IP adres? Můžeš blíže specifikovat?
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
- arxeiss
- Začátečník

- Registrován: 19. črc 2008
- Bydliště: Krmelín (předměstí Ostravy)
- Kontaktovat uživatele:
Re: PHP
Jo, ale jak máš definovaný rozsah? Nebo to tam máš jenom přesně konkrétní IPčka?
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
- arxeiss
- Začátečník

- Registrován: 19. črc 2008
- Bydliště: Krmelín (předměstí Ostravy)
- Kontaktovat uživatele:
Re: PHP
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'];
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min