Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Postavljanje default opcije u SELECT na osnovu vrednosti iz baze

[es] :: PHP :: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze

Strane: 1 2

[ Pregleda: 6643 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
85.158.38.*

Sajt: www.mkscripts.net


Profil

icon Postavljanje default opcije u SELECT na osnovu vrednosti iz baze25.03.2005. u 19:33 - pre 231 meseci
Na stranici imam list meni čiji html code izgleda ovako:
Code:
<select name=mjesec_r class="input" id="mjesec_r">
            <option value=01>Januar</option>
            <option value=02>Februar</option>
            <option value=03>Mart</option>
            <option value=04>April</option>
            <option value=05>Maj</option>
            <option value=06>Juni</option>
            <option value=07>Juli</option>
            <option value=08>Avgust</option>
            <option value=09>Septembar</option>
            <option value=10>Oktobar</option>
            <option value=11>Novembar</option>
            <option value=12>Decembar</option>
          </select>


Kako da napravim da u zavisnosti od id iz baze bude selektovana određena opcija?
npr ako je id 05 da bude selektovan Maj.

[Ovu poruku je menjao Goran Rakić dana 25.03.2005. u 21:47 GMT+1]

[Ovu poruku je menjao Goran Rakić dana 25.03.2005. u 22:53 GMT+1]
May the force be with you...
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: Selektovanje opcije u list meniju25.03.2005. u 20:19 - pre 231 meseci
Code:
 <option value=05 selected>Maj</option>

A ti odradi ostalo.
Banned - Not available
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
85.158.39.*

Sajt: www.mkscripts.net


Profil

icon Re: Postavljanje default opcije u SELECT meniju u HTML-u25.03.2005. u 20:55 - pre 231 meseci
Ne kontate. Kako cu odrediti gdje treba to select. Nece ovijek biti 05. Moze biti 06, 11...
Taj broj ce biti upisan u neku varijablu.
May the force be with you...
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: Postavljanje default opcije u SELECT meniju u HTML-u25.03.2005. u 21:11 - pre 231 meseci
Znam da neće biti, ja sam ti samo gornjim kodom objasno kako se u html-u to radi, a na tebi je da uradiš logiku.
Evo npr. najprostiji primer:
Code:

if ($id == 1)
  echo '<option value=1 selected>Januar</option>';
else
  echo '<option value=1>Januar</option>';
  
if ($id == 2)
  echo '<option value=2 selected>Februar</option>';
else
  echo '<option value=2>Februar</option>';
...
itd.
...


Banned - Not available
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
85.158.39.*

Sajt: www.mkscripts.net


Profil

icon Re: Postavljanje default opcije u SELECT meniju u HTML-u25.03.2005. u 21:42 - pre 231 meseci
Nije li to malo komplikovano. Znaci ja treba da napravim 12 takvih petlji.
Evo kako sam ja kontao rijesiti problem ali imam problem sa arrayem.
Code:
# Upisuje mjesece u array
$mjesec = array(01=>"Januar",02=>"Februar",03=>"Mart",04=>"April",05=>"Maj",06=>"Juni",07=>"Juli",08=>"August",09=>"Septembar",10=>"Oktobar", 11=>"Novembar",12=>"Decembar");

# Printa
for ($i=01; $i<=12; $i++)
    {
        
        if ($datum_r[1] == $i)
            {
                echo '<option value='.$i.' selected>'.$mjesec[$i].'</option>';
            }
        else
            {
                echo '<option value='.$i.'>'.$mjesec[$i].'</option>';
            }
    }

Problem nastaje kada je u arrayu 08=>"August",09=>"Septembar".
Ako stavim 8=>"August",9=>"Septembar" fino mi isprinta li onda petlja zeza.
May the force be with you...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Postavljanje default opcije u SELECT meniju u HTML-u25.03.2005. u 21:52 - pre 231 meseci
Dobro, hajde sada kada sam prosetao temu do tamo i nazad da odgovorim na redefinisano pitanje...

Prvo se pravis satro kako nemas nikavih ideja, a onda kada ti neko ukaze kako bi to moglo ti vices kako je to glupo. Nisi mi jasan po tom pitanju.

Drugo, u petlji se koristi ceo broj, dakle nema vodece nule, isto je i za array. Ako ti bas trebaju vodece nule, koje inace ne znam zasto pravis...
Code:

# Upisuje mjesece u array
$mjesec = array("01"=>"Januar", "02"=>"Februar", "03"=>"Mart", "04"=>"April",
"05"=>"Maj", "06"=>"Juni", "07"=>"Juli", "08"=>"August",  "09"=>"Septembar", 
"10"=>"Oktobar", "11"=>"Novembar", "12"=>"Decembar");

# Printa
for ($i=1; $i<=12; $i++) {
        echo '<option value="'.$i.'" ';        
        if ($datum_r[1] == ($i>9 ? strval($i) : "0".strval($i)) ) echo 'selected';
       echo '>'.$mjesec[$i].'</option>';
}


[Ovu poruku je menjao Goran Rakić dana 25.03.2005. u 23:35 GMT+1]
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze25.03.2005. u 21:59 - pre 231 meseci
@m_k Znam da je malo komplikovano, ali iz tvoje poruke se videlo da ne znaš da odradiš logiku pa sam ti ja napisao najprostije rešenje kako bi video, naravno da može i jednostavnije da se napiše, to sam bio i napisao u poruci ali sam je editovao, npr:
Code:

$months =array ( '01'=>'Januar','02'=>'Februar','03'=>'Mart'....);
foreach ($months as $key => $value) {
if ($id == $key)
  echo '<option value='.$key.' selected>'.$value.'</option>';
else
  echo '<option value='.$key.'>'.$value.'</option>';
}

Banned - Not available
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
85.158.38.*

Sajt: www.mkscripts.net


Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze26.03.2005. u 13:44 - pre 231 meseci
@Goran nisam rekao da je glupo vec sam rekao da je komplikovano.
Rijesio sam problem jer sam sve u araju uvecao za 10 pa vise nije 01 vec je 11 itd.
May the force be with you...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze26.03.2005. u 15:58 - pre 231 meseci
nisi morao da uvecavas za 10. Slobodno si mogao zadrzati (1, 2,..., 10, 11, 12) - dakle bez vodecih nula.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
85.158.39.*

Sajt: www.mkscripts.net


Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze26.03.2005. u 16:55 - pre 231 meseci
Jedno pitanje. Kako da ispred broja dodam nulu ako je on jednocifren?
May the force be with you...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze26.03.2005. u 19:05 - pre 231 meseci
Zar je toliko tesko procitati kod koji ti je dat "na izvolte"? Odgovor se nalazi u trecoj liniji od kraja unutar if uslova u kodu koji sam ti poslao.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Ilija Studen
Novi Sad

Član broj: 3864
Poruke: 859
*.ftn.ns.ac.yu.

Sajt: www.activecollab.com


+1 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze26.03.2005. u 20:25 - pre 231 meseci
Citat:
Kako da ispred broja dodam nulu ako je on jednocifren?


Code:
if( (integer) $broj < 10) {
  $broj = '0' . (integer) $broj;
}


PS: Ako ovaj problem nisi umeo sam da rešiš mislim da ne bi trebalo ni da programiraš...
http://www.activecollab.com - Alat za upravljanje projektima
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze26.03.2005. u 23:27 - pre 231 meseci
Nije problem sto ne ume sam da resi nego sto mu je resenje vec dato, a on ga je lepo izignorisao...

Nego, kada se vec igramo sa tipovima u PHP-u, nije lose imati doslednost. Ovako ce rezultat biti ili tipa string (ako je manji od 10) ili tipa int (ako je veci od 9):
Code:
string(2) "09"
int(10)


E sada cinjenica da ce biti uradjen typecast, tako da je moguce uraditi intval nad ovim gore i onda je rezultat:
Code:
int(9)
int(10)


ili strval kada je rezultat:
Code:
string(2) "09"
string(2) "10"


Za razliku od mog resenja, ovo (integer) pretvara float u ceo broj tako da se ne desava da rezultat bude:
Code:
string(4) "09.42"


Dakle, moj predlog nekog optimalnog resenja jeste:
Code:
$broj = (((integer) $broj>9?'':'0').strval((integer) $broj));



http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.nat-pool.nsad.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 09:17 - pre 231 meseci
Citat:

Jedno pitanje. Kako da ispred broja dodam nulu ako je on jednocifren?


Koristi sprintf:

Code:

$broj = sprintf("%02d", $broj);


Never trust an operating system you don't have sources for.
 
Odgovor na temu

Ilija Studen
Novi Sad

Član broj: 3864
Poruke: 859
*.ftn.ns.ac.yu.

Sajt: www.activecollab.com


+1 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 11:26 - pre 231 meseci
sprintf je sporiji od spomenutih rešenja. Goranovo je najbolje jer održava type (o tome nisam razmišljao kad sam kucao :) ).
http://www.activecollab.com - Alat za upravljanje projektima
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.nat-pool.nsad.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 12:43 - pre 231 meseci
Citat:

sprintf je sporiji od spomenutih rešenja.


Ne znam kako si dosao do ovoga, ali resenje sa sprintf je zanemarljivo brze od ovoga:

Code:

if( (integer) $broj < 10) {
  $broj = '0' . (integer) $broj;
}


a poprilicno brze od:

Code:

$broj = (((integer) $broj>9?'':'0').strval((integer) $broj));


mada je verovatno brzina prilicno nebitna u konkretnom slucaju, meni se svidja resenje sa sprintf jer je najjednostavnije i najkrace. Ako je bas nephodno da rezultat bude integer, moguce je uraditi type casting:

Code:

$broj = (integer) sprintf("%02d", $broj);

Never trust an operating system you don't have sources for.
 
Odgovor na temu

Ilija Studen
Novi Sad

Član broj: 3864
Poruke: 859
*.ftn.ns.ac.yu.

Sajt: www.activecollab.com


+1 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 13:51 - pre 231 meseci
Citat:
Ne znam kako si dosao do ovoga


Neprovereno. Možda zbog moje odbojnosti prema format stringovima i regexpovima tamo gde se mogu izbeći :) Da li neko pouzdano zna šta je brže?

PS: Ako je recimo taj kod u jednoj petlji koja će se ponoviti milion puta razlika u brzini može biti prilično bitna. A ovo je jednostavno primer koji može da se nađe u takvoj petlji bez problema...
http://www.activecollab.com - Alat za upravljanje projektima
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 14:21 - pre 231 meseci
100 000 slucajnih brojeva izmedju 1 i 12 - isti broj za sva tri resenja
Code:

Goran: 1.803
Ilija: 1.672
bzero: 2.149


Kod:
Code:

<?php
function getmicrotime() {
   list($usec, $sec) = explode(" ",microtime());
   return ((float)$usec + (float)$sec);
}

function getnumber() {
   srand((double)microtime()*1000000);
   return rand(1,12);
}


function goran($broj) {
   return (((integer) $broj>9?'':'0').strval((integer) $broj));
}

function ilija($broj) {
   if( (integer) $broj < 10) $broj = '0' . (integer) $broj;
   return $broj;
}

function bzero($broj) {
   return sprintf("%02d", $broj);
}

$goran = 0; $ilija = 0; $bzero = 0;
for($i=0;$i<100000;$i++) {
 $broj = getnumber();
 $s=getmicrotime();goran($broj);$e=getmicrotime();$goran+=$e-$s;
 $s=getmicrotime();ilija($broj);$e=getmicrotime();$ilija+=$e-$s;
 $s=getmicrotime();bzero($broj);$e=getmicrotime();$bzero+=$e-$s;
}
echo 'Goran: '.round($goran,3)."\n"; echo 'Ilija: '.round($ilija,3)."\n"; echo 'bzero: '.round($bzero,3)."\n";
?>


Moj komentar: Kada je broj veci od 9 Ilijino resenje ne radi nista, tako da tu dobija na brzini. Moje resenje jako ruzno izgleda, ali je prednost sto koristi samo operatore, dakle moguce ga je ubaciti u sam poziv funkcije. sprintf, je dobro resenje (razumljivo i kratko), ali ovde ipak preambiciozno, sudeci barem po ovom rezultatu. Rezultat je za PHP 5.0.3 CLI.

Ovih 0.5s na 100 000 brojeva najcesce nije neko opterecenje jer se na Input/Output funkcije i na rad sa bazom potrosi vise vremena. Ali kada je cilj napraviti web aplikaciju koja se odaziva na ispod 1s, ovih 0.5 je vise nego znacajno.






http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.nat-pool.nsad.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 14:45 - pre 231 meseci
Evo rezultata Goranovog programa kod mene (5 uzastopnih rezultata):

Code:

Goran: 2.517
Ilija: 2.291
bzero: 2.293

Goran: 2.495
Ilija: 2.267
bzero: 2.301

Goran: 2.52
Ilija: 2.267
bzero: 2.292

Goran: 2.511
Ilija: 2.279
bzero: 2.33

Goran: 2.517
Ilija: 2.274
bzero: 2.289


Code:

dragan@blue $ php -v
PHP 4.3.10 (cli) (built: Jan 27 2005 11:52:09)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
dragan@blue $ uname -prs
FreeBSD 4.9-RELEASE i386


Izgleda da se dobijaju razliciti rezultati na razlicitim verzijama PHP-a.

Never trust an operating system you don't have sources for.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze28.03.2005. u 15:06 - pre 231 meseci
Pitanje je koliko raspodela tih 12 brojeva u 100 000 random-a bude pravilna, mozda bi trebalo povecati broj iteracija za dobijanje tacnijeg resenja. Evo ja sam jos nekoliko puta pokretao i kod mene je poredak uvek isti (kao i prvi put), samo razlika varira od 0.1 do 0.6 izmedju tvog i Ilijinog resenja.

Treba uociti da ovaj test radi jedan skok na funkciju vise nego sto bi trebao za moj i tvoj kod (posto se i moje i tvoje resenje moze koristiti direktno bez omotac-funkcije).

Kod mene je:
Code:

jabuka:~ goran$ /usr/local/bin/php -v
PHP 5.0.3 (cli) (built: Jan 20 2005 21:44:04)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies
    with Zend Extension Manager v1.0.6, Copyright (c) 2003-2004, by Zend Technologies
    with Zend Optimizer v2.5.7, Copyright (c) 1998-2004, by Zend Technologies
    with Zend Debugger v3.5.2, Copyright (c) 1999-2004, by Zend Technologies
jabuka:~ goran$ uname -prs
Darwin 7.8.0 powerpc


[Ovu poruku je menjao Goran Rakić dana 28.03.2005. u 16:08 GMT+1]
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

[es] :: PHP :: Postavljanje default opcije u SELECT na osnovu vrednosti iz baze

Strane: 1 2

[ Pregleda: 6643 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.