Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Czas aukcji
Forum PHP.pl > Forum > Przedszkole
ToDi69
Witam,
Otóż jak dotąd szło mi dobrze i bez większych problemów winksmiley.jpg
Problem polega na tym iż nie wiem od czego zacząć tworząc odliczanie czasu do końca aukcji np. takie jak na allegro.

Mam gotowy formularz, a w nim select

  1. <select name="czas">
  2. <option>3 dni</option>
  3. <option>5 dni</option>
  4. ...


Podsunie ktoś jakieś rozwiązanie ? Ofc, z udziałem bazy danych. Tworzę panel gracza, więc nie szukam żadnego skryptu aukcji takiego jak np. WebAuction.
Ulysess
hmm rozumiem że przy wystawianiu 'przedmiotu' dajesz na ile dni questionmark.gif robisz time() + ($ilosc_dni*86400) - tutaj masz date zakonczenia aukcji
wyswietlasz aukcje od najmneijszej daty (czyli najwcześniej się kończy) przy zakupie jeśli kupujący spełnia wszystkie warunki możesz zrobić że jeśli jest mniej niż 3 min do zakończenia aukcji dodaje się x min do tej daty tak aby ktoś jeszcze mógł złożyć ofertę
ToDi69
Tak, ktoś kto wystawia wybiera na ile dni.

  1. <select name="czas">
  2. <option value="doba">24 godziny</option>
  3. <option value="five">5 dni</option>


I chodzi mi o to jak to zrobić od strony technicznej ; p
I pytanko, jaką strukturę powinno mieć pole do którego dodaje $czas, timestamp ?

Na razie to wygląda tak:
  1. if ($_POST['czas'] == doba) {
  2. $czas = time() + (1*86400);
  3.  
  4. }
  5.  
  6. if ($_POST['czas'] == five) {
  7. $czas = time() + (5*86400);
  8.  
  9. }
  10.  
  11. $obaz = $_POST['obraz'];
  12. $nazwa = $_POST['nazwa'];
  13. $cena = $_POST['cena'];
  14.  
  15. if ($obaz && $nazwa && $cena && $doba) {
  16. $wynik = mysql_query("INSERT INTO $tabela VALUES('', '{$_SESSION['login']}', '', '$obraz', '$nazwa', '$cena', '$czas')");
  17. }


I jak ma wyglądać wyświetlanie czasu który pozostał do końca aukcji ?

now() - wartość pola gdzie jest $czas?
Ulysess
ja bym ustawił pole typu INT na 11 znaków ,
tak jak pisałem time()...
funkcja time() to aktualny czas w formacie unix czyli wyrażonych w sekundach od 1 stycznia 1970 r. pobierasz taką date którą masz np w zmiennej $czas_aukcji i robisz np
  1. echo date(''d-m-Y | H:i:s',$czas_aukcji');

wynikiem tego pojawi się data która była w bazie w formacie dzień-miesiąc-rrrr | godzina:minuta:sekunda.

wszystko masz już wyjaśnione a jeśli chodzi o napisanie to już sam musisz, nikt za ciebie pisać nie będzie :]
ToDi69
Dobra dzięki, ale nie odpowiedziałeś mi na to jak zrobić by wyświetlało ile minut/godzin/dni zostało do końca.

Dzisiaj: 08-10-2010 | 17:34:32
Zakończenie aukcji: 09-10-2010 | 17:34:32


Do końca aukcji pozostało: 1dzień (gdy będzie mniej niż jeden dzień ma wyświetlać ilość godzin)

Gdy daje
  1. echo date('H:i:s | d-m-Y',$czas_aukcji - time());


wynik jest taki:
Cytat
00:31:28 | 02-01-1970


$czas_auckcji = to ta wartość pobrana z bazy np. 1286637647

Ulysess
wiesz to już matematycznie musisz zrobić jakoś na pewno data zakończenia aukcji - aktualny czas i dzieki sekundom które wyjdą w wyniku robisz instrukcje warunkowe
ToDi69
No ta, ale zobacz wyżej co wychodzi ; /
kefirek
  1. $czas = time()- 1281637647;
  2.  
  3.  
  4. $iD=sprintf("%2d",floor($czas/(60*60*24)));
  5. $iH=sprintf("%02d",floor((($czas%604800)%86400)/3600));
  6. $iM=sprintf("%02d",floor(((($czas%604800)%86400)%3600)/60));
  7. $iS=sprintf("%02d",floor((((($czas%604800)%86400)%3600)%60)));
  8.  
  9.  
  10. echo 'Dni '.$iD.' '.$iH.':'.$iM.':'.$iS;
Ulysess
omg..

  1. $zapytanie['r'] = "SELECT `czas` FROM `tabela`";
  2. $wykonano_zapytanie['r'] = mysql_query($zapytanie['r']) or die(mysql_error());
  3. $dane = mysql_fetch_assoc($wykonano_zapytanie['r']);


wtedy
  1. $czas = $dane['czas'] - time();
  2. echo date('H:i:s | d-m-Y',$czas);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.