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

Kako da listam podatke za sledeci i prosli dan?

[es] :: PHP :: Kako da listam podatke za sledeci i prosli dan?

[ Pregleda: 773 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Flo
Ivan Penčić
Beograd

Član broj: 41881
Poruke: 64
*.dynamic.sbb.rs.



Profil

icon Kako da listam podatke za sledeci i prosli dan?21.09.2020. u 19:15 - pre 42 meseci
Pozdrav, da ne dužim mnogo. Napravio sam neki sajt za zakazivanje tehnickog pregleda. e sad zelim da kad se ulogujem da dobijem zakazane termine sani za taj dan koji sam se logovao, da mi ne izbacuje sve termine iz baze. Ja sam uspeo da napravim da izlista samo termine za danasnji dan tako sto sam u where ubacio $datetodey. Medjutim sad zelim da ispod liste koju mi izbaci sa terminima na danasnji dan imam opciju "prikazi termine za sledeci dan" i "prikazi termine za prosli dan". Kako to da izvedem? Hvala na pomoci unapred

<?php

$dsn = "mysql:host=localhost;dbname=baza";
$user = "username";
$passwd = "pass";
$datetoday = date('Y-m-d');
$pdo = new PDO($dsn, $user, $passwd);

$stm = $pdo->query("SELECT * FROM bookings WHERE date='$datetoday' ORDER BY timeslot");

$rows = $stm->fetchAll(PDO::FETCH_ASSOC);


// Prikazivanje knjiga
foreach ($rows as $vozilo)
{
echo "<tr>";
echo " <td>{$vozilo['timeslot']}</td>";
echo " <td>{$vozilo['marka']}</td>";
echo " <td>{$vozilo['telefon']}</td>";
echo " <td>{$vozilo['date']}</td>";
echo " <td>{$vozilo['timeslot']}</td>";
echo " <td>{$vozilo['klijent']}</td>";
echo "</tr>";


}

?>
Pencha
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?21.09.2020. u 19:58 - pre 42 meseci
MySQL ima funkcije za rad sa datumima, ne moraš da koristiš PHP da mu kažeš datum:
SELECT * FROM bookings WHERE date=curdate() ORDER BY timeslot

Evo upit za juče:
SELECT * FROM bookings WHERE date=curdate()-1 ORDER BY timeslot

Varaš se ako misliš da SQL jezik naučiš, onako, usput, dok pišeš programe u PHP.
Odvoj vreme i nauči SQL jezik kako treba, čak i ako nikada u životu ne budeš više koristio PHP, ono što će ti ostati je SQL...

Uzgred, i PHP ima dosta funkcija za rad sa datumima. Pretpostavljam da si početnik i u jednoj i u drugoj oblasti.
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?22.09.2020. u 12:24 - pre 42 meseci
djoka_l, ima smisla da PHP prosleđuje datum jer to omogućava da se napravi izveštaj za proizvoljan datum.

Flo, za odredjivanje prethodnog/sledećeg dana u PHP pogledaj https://duckduckgo.com/?q=php+previous+date.

Ali pazi, svaki sledeći put kada budeš pitao nešto ovako banalno a ne potražiš prvo sam rešenje na internet pretraživačima, računaj da ćemo umesto da ti pomognemo da te oderemo od zaje8ancije.


 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?22.09.2020. u 12:39 - pre 42 meseci
Ma slažem se Predraže, da može da koristi i PHP da odredi datum.
Zato sam i napisao:
Citat:
Uzgred, i PHP ima dosta funkcija za rad sa datumima. Pretpostavljam da si početnik i u jednoj i u drugoj oblasti.


Ono što je moja poenta, kao nekoga ko je već 25 godina DBA, je da vidim mnogo web programera koji jako malo poznaju SQL, pa ja onda čupam ono malo kose što mi je ostalo, kada treba da nađem ko je i zašto zakucao bazu.

99% programera sa kojim radim ne ume da uradi EXPLAIN PLAN (query execution plan) ni na elementarnom nivou. Gomila programera samo slepo prekucava primere, a nemaju ni najblažu predstavu kako to utiče na bazu i kompletnu aplikaciju.

Recimo, kada sam video njegov upit, prvo mi ja palo na pamet da nemam pojma kog tipa je polje date (char, varchar, date, datetime, timestamp) i da li postoji index nad poljima (date, timeslot).
Onda, predaje string kao datum. Ja bih OBAVZNO stavio funkciju za eksplicitnu konverziju stringa u datum, a ne da gledam u pasulj šta je php predao, a šta baza očekuje...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?22.09.2020. u 12:57 - pre 42 meseci
Primer:

ako u where uslovu stoji
WHERE datumskopolje = string

Kako će to da interpretira baza, da li kao
1. WHERE datumskopolje = to_date(string)
ili kao
2. WHERE to_char(datumskopolje) = string

U slučaju 1. baza će raditi po indeksu, ako ga ima, u slučaju 2. će promašiti indeks i ići u full table scan

Drugo pitanje, šta će to_date ili to_char (implicitne konverzije) vratiti kao vrednost. To šta će vratiti zavisi od lokalizacije baze i moguće da vrati, na primer 22-SEP-20, a on očekuje 2020-09-22 i ništa neće dobiti kao rezultat upita...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?22.09.2020. u 13:07 - pre 42 meseci
A da ne pričam da sam se naježio kada sam video da pravi dinamičke kverije a da ne koristi https://www.php.net/manual/en/pdo.prepare.php
Super način da ekspresno nauči šta je to SQL Injection na svom prvom projektu.
https://en.wikipedia.org/wiki/SQL_injection
 
Odgovor na temu

Flo
Ivan Penčić
Beograd

Član broj: 41881
Poruke: 64
*.dynamic.sbb.rs.



Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?24.09.2020. u 15:38 - pre 42 meseci
Citat:
Predrag Supurovic:
Ali pazi, svaki sledeći put kada budeš pitao nešto ovako banalno a ne potražiš prvo sam rešenje na internet pretraživačima, računaj da ćemo umesto da ti pomognemo da te oderemo od zaje8ancije.


Slažem se. Zaista sam se trudio da pronađem, ali bezuspešno i ako je banalno. Uspeo sam uz pomoć raznoraznih primera koje sam našao da napravim sam sistem za zakazivanje termina, ali sam oko ove stvari koja je banalnija od ostalog šta sam uradio da zaglavim. Hvala
Pencha
 
Odgovor na temu

Flo
Ivan Penčić
Beograd

Član broj: 41881
Poruke: 64
*.dynamic.sbb.rs.



Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?25.09.2020. u 12:00 - pre 42 meseci
Ne znam da li smem da pitam još nešto a da ne dobijem velike kritike :)

Uspeo sam da sredim stranicu da se lista po datumima sledecim kodom:

<?php
$date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d');
$prev_date = date('Y-m-d', strtotime($date .' -1 day'));
$toDay = date('Y-m-d', strtotime('now'));
$next_date = date('Y-m-d', strtotime($date .' +1 day'));

?>
<div id="users-contain" class="ui-widget">
<h1>Prikaz zakazanih termina za <?php echo $date ?>
<a href="?date=<?=$prev_date?>">Prethodni dan</a>
<a href="?date=<?=$toDay?>">Trenutni dan</a>
<a href="?date=<?=$next_date?>">Sledeći dan</a></h1>

Ostala mi je još jedna stvar koju ne znam kako da rešim, a to je da mi u listanju datuma ka napred preskoči vikende. da kad kliknem na sledeci dan mi izbaci recimo za 2020-09-25 (to je petak) pa da kad se sledeći put klikne na sledeći dan preskoči 26. i 27. već učita datum za ponedeljak 2020-09-28 , pa sledeci 2020-09-29 ... itd


Pencha
 
Odgovor na temu

Deunan

Član broj: 338178
Poruke: 83
*.dynamic.isp.telekom.rs.



+21 Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?25.09.2020. u 14:20 - pre 42 meseci
Mozes da koristis funkciju:
Code:
$dayOfDate = date('N', strtotime($date));    // 1, 2, 3, 4, 5, 6, 7


Na primer ovako:
Code:

$date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d');

$dayOfDate = date('N', strtotime($date));    // 1, 2, 3, 4, 5, 6, 7

$nextOffset = 1;
if($dayOfDate > 4)     {    // PETAK, SUBOTA ILI NEDELJA
    $nextOffset = 8 - $dayOfDate;
}
$prevOffset = 1;
if($dayOfDate == 1)         {    // PONEDELJAK (preskoci 3 dana unazad)
    $prevOffset = 3;
}
if($dayOfDate == 7)         {    // NEDELJA (preskoci 2 dana unazad)
    $prevOffset = 2;
}

$prev_date = date('Y-m-d', strtotime($date . ' -'.$prevOffset.' day'));
$toDay = date('Y-m-d', strtotime('now'));
$next_date = date('Y-m-d', strtotime($date . ' +'.$nextOffset.' day'));

 
Odgovor na temu

edin.n
hadzici

Član broj: 109197
Poruke: 14
*.46.114.pool.telefonica.de.

Sajt: edinera.ba


Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?25.09.2020. u 14:35 - pre 42 meseci
Uvijek sam za one koji želie znati više i u tom slučaju trebaju da pitaju, ako ne znaju. Ima ireka, "ko pita, ne skita'... Pretpostavljam da će mnogi na dodati nešto na ovu izjavu ali ja ipak podržavam.

Da bi to riješio predlažem ti da napraviš funkciju koja će tvoje datume promijeniti u željeni format a pritom izbaciti vikend . Evo ti jedan primjer
<?php
$datum = '2020-09-26';

//Funktion za prethodni ili sljedeci koristit cu parametar.
//parametar $vred je optionalno i koristi samo ako zelis da zvoj datum ide u prethodni dan..

function datumiBezVikenda($datum, $vred){
$mojdatum = getdate(strtotime($datum));
switch ($mojdatum['wday']){
case 0:
$d=isset($vred)?-2:1;
break;
case 6:
$d=isset($vred)?-1:2;
break;
default:
$d=0;
}
$kondatum = date_create($datum);
date_add($kondatum,date_interval_create_from_date_string("$d days");
return date_format($kontdatum, 'Y-m-d');
}
// PRETHODNI
echo datumiBezVikenda($datum, 'pisistqhoces');

//SLJEDECI
echo datumiBezVikenda($datum);
?>
Valjda ce ti raditi, pisem iz 'glave'...



 
Odgovor na temu

Flo
Ivan Penčić
Beograd

Član broj: 41881
Poruke: 64
*.dynamic.sbb.rs.



Profil

icon Re: Kako da listam podatke za sledeci i prosli dan?25.09.2020. u 15:13 - pre 42 meseci
Hvala Deunan, hvala Edine, uspeo sam da resim odmah sa prvim primerom. Radi
Pencha
 
Odgovor na temu

[es] :: PHP :: Kako da listam podatke za sledeci i prosli dan?

[ Pregleda: 773 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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