Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Zaznaczenie "selected" w formularzu
Kshyhoo
post
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




1. Mam formularz, w którym pobieram wartość czasu za pomocą pola wyboru, który dodaję do obecnego czasu. Zapisuję to w bazie danych.
2. Pobieram dane z bazy i chcę zaznaczyć slelekta... problem w tym, że nie mogę poradzić sobie z wymyśleniem sposobu.
Formularz przed wysłaniem:
  1. <select id="" name="czased" class="textbox" style="width: 150px">
  2. <option value=""> Czas na edycję </option>
  3. <option value="3600" >1 godzina</option>
  4. <option value="10800" >3 godziny</option>
  5. <option value="21600" >6 godzin</option>
  6. <option value="43200" >12 godzin</option>
  7. <option value="86400" >1 dzień</option>
  8. <option value="172800" >2 dni</option>
  9. <option value="259200" >3 dni</option>

Przy zapisie:
  1. $czased = time() + 172800;//48 godzin

Przy odbiorze:
  1. <select id="" name="czased" class="textbox" style="width: 150px">
  2. <option value=""> Czas na edycję </option>
  3. <option value="3600" <?php $czasok == 3600 ? 'selected="selected"' : ''?>>1 godzina</option>
  4. <option value="10800" <?php $czasok == 10800 ? 'selected="selected"' : ''?>>3 godziny</option>
  5. <option value="21600" <?php $czasok == 21600 ? 'selected="selected"' : ''?>>6 godzin</option>
  6. <option value="43200" <?php $czasok == 43200 ? 'selected="selected"' : ""?>>12 godzin</option>
  7. <option value="86400" <?php $czasok == 86400 ? 'selected="selected"' : ""?>>1 dzień</option>
  8. <option value="172800" <?php $czasok == 172800 ? 'selected="selected"' : ""?>>2 dni</option>
  9. <option value="259200" <?php $czasok == 259200 ? 'selected="selected"' : ""?>>3 dni</option>

Problemem jest zmienny czas, który uzyskuję po pobraniu z bazy.
  1. $nowtime = time();
  2. $czasok = $czased - $nowtime;

Jakieś pomysły?

Ten post edytował Kshyhoo 28.10.2013, 10:07:15
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tyle czasu na forum i nie wiesz, ze by wyswietlic cos w php to trzeba uzyc ECHO?

<?php if ($czasok == 3600) echo 'selected="selected"'; ?>
analogicznie reszta
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A to przegapiłem przy wklepywaniu na forum. Powinno być tak:
  1. <select id="" name="czased" class="textbox" style="width: 150px">
  2. <option value=""> Czas na edycję </option>
  3. <option value="3600" <?php echo $czasok == 3600 ? 'selected="selected"' : ''?>>1 godzina</option>
  4. <option value="10800" <?php echo $czasok == 10800 ? 'selected="selected"' : ''?>>3 godziny</option>
  5. <option value="21600" <?php echo $czasok == 21600 ? 'selected="selected"' : ''?>>6 godzin</option>
  6. <option value="43200" <?php echo $czasok == 43200 ? 'selected="selected"' : ''?>>12 godzin</option>
  7. <option value="86400" <?php echo $czasok == 86400 ? 'selected="selected"' : ''?>>1 dzień</option>
  8. <option value="172800" <?php echo $czasok == 172800 ? 'selected="selected"' : ''?>>2 dni</option>
  9. <option value="259200" <?php echo $czasok == 259200 ? 'selected="selected"' : ''?>>3 dni</option>


Ten post edytował Kshyhoo 28.10.2013, 10:21:03
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$nowtime = time();
$czasok = $czased - $nowtime;
No dobra, ale przeciez time() w momencie zapisywania do bazy oraz w momencie odczytu z bazy bedzie rozny, wiec nigdy nie otrzymasz wartosci 3600, 10800..... itd... znaczy nie nigdy, ale baaaaardzo rzadko.... Musisz w bazie zapisywac normalnie wartosc 3600, 10800 ... itd i ja potem wyswietlac.
Go to the top of the page
+Quote Post
freemp3
post
Post #5





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


W zasadzie ten kod zadziała tylko w dwóch przypadkach, wtedy gdy zmienna będzie miała wartość 10800 oraz będzie z przedziału od 172800 do 259199.
Dlaczego tak? A no dlatego, ze przecież 3600 także jest mniejsze od 21600 i 43200 itd. Musisz sprecyzować zakresy zarówno od górnej jak i dolnej granicy. Ponad to zapisujesz np. wartość 3600 a później sprawdasz czy czas jest mniejsze? Może lepiej będzie dodać mniejsze lub równe?

Dodatkowo co jeśli zmienna będzie równa bądź większa 259200?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No właśnie o to chodzi. Mam sporo wpisów w bazie i teraz zmieniać wszystko...?
Jak dam zapis:
  1. <?php echo $czasok >= 3600 ? 'selected="selected"' : ''?>

to mi pokazuje jedną poniżej (czyli np. zamiast 12 godzin, pokaże 6). Jak zrobię:
  1. <?php echo $czasok <= 3600 ? 'selected="selected"' : ''?>

to mi pokazuję ostatnią...
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
. Mam sporo wpisów w bazie i teraz zmieniać wszystko...?
Jak sie zle projektuje to potem niestety tak jest (IMG:style_emoticons/default/wink.gif)
Jak bedziesz zaokragla to przy zapisie bedziesz znowu modyfikowal wpis i jak przy dodanio ustawiles na 4 godziny, a przy modyfikacji zaokraglisz do 2, to zamiast wstepnie na 4 godziny przestawi ci sie na 4 godziny i 20 minut. Jest to prawidlowe zalozenie w twojej aplikacji?

Jesli zakragalnie nadal ci pasuje to musisz leciec od wartosci najwiekszej i sprawdzac czasok < odtej wartosci. jesli jest prawda to ja ustawiasz jako czasok i w ten sposob bedziesz mial wartosc $czasok. Potem w swoich option normalnie robisz jak robiles:
?php echo $czasok == 3600 ? 'selected="selected"' : ''?>
proste
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #8





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To było najprostsze rozwiązanie. Potrzebne jest mi do do edycji artykułu. Do time() dodaję zadeklarowany czas i zapisuję w bazie, przy pobieraniu z bazy porównuję do z obecnym i mam pozostały czas do edycji.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to ci napisalem:
Cytat
Jesli zakragalnie nadal ci pasuje to musisz leciec od wartosci najwiekszej i sprawdzac czasok < odtej wartosci. jesli jest prawda to ja ustawiasz jako czasok i w ten sposob bedziesz mial wartosc $czasok. Potem w swoich option normalnie robisz jak robiles:
?php echo $czasok == 3600 ? 'selected="selected"' : ''?>
proste
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #10





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




I tak będę musiał na razie zaznaczać. Teraz zabieram się za coś ambitniejszego, kategorie w multiple:
  1. $result = dbquery("SELECT kat_id, kat_kategoria FROM kategorie WHERE kat_cat='0' ORDER BY kat_order");
  2. if (dbrows($result) != 0) {
  3. while ($data = dbarray($result)) {
  4. $result2 = dbquery("SELECT kat_id, kat_kategoria FROM kategorie WHERE kat_cat='".$data['kat_id']."' ORDER BY kat_order");
  5. if (dbrows($result2) != 0) {
  6. $kat_list .= "<optgroup label='".$data['kat_kategoria']."'>\r\n";
  7. while ($data2 = dbarray($result2)) {
  8. if ($_GET['kat_id'] == $data2['kat_id']) {
  9. $sel = " selected";
  10. } else {
  11. $sel = "";
  12. }
  13. $kat_list .= "<option value='".$data2['kat_id']."'$sel>".$data2['kat_kategoria']."</option>\r\n";
  14. }
  15. $kat_list .= "</optgroup>\r\n";
  16. }
  17. }
  18. }
  19. echo '<select name="kat_id[]" id="kat" class="textbox" style="width: 150px" size="5" multiple>'.$kat_list.'</select>';

Jak to zaznaczyć?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:17