Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Autor | Správa |
---|
Registrovaný: 30.11.10 Prihlásený: 28.12.15 Príspevky: 6 Témy: 2 | 2 |
Ahojte, robim SQL dotaz na to, aby mi vypisalo aku hodinu aktualne vyucuje ucitel.(napr. ak bude 8 hodin rano, tak mi zobrazi ze ten a ten ucitel vyucuje napr. slovencinu) Mam v databazi tabulku rozvrh a tam mam ulozene data o zaciatku, konci hodin a pod. Tieto hodiny su ulozene v datetime. A mam problem, ako to prepojit s php a zobrazit? Mam to momentálne takto: Kód: $stmt3 = $db->prepare("SELECT substring(lessons.start_time, 11,6), substring(lessons.end_time,11,6), FROM lessons INNER JOIN lectors ... WHERE lessons.start_time >= (' ".date('Y-m-d H:i:s')." ') AND lessons.end_time <= (' ".date('Y-m-d H:i:s')." ') AND lectors.lector_id=:id ORDER BY ... "); $stmt3->bindValue(":id", intval($_GET["id"])); $stmt3->execute(); Ak dam namiesto date normalne casove rozmedzie, tak mi vypise ten predmet v tom case, ale v tomto pripade vypise len Array(). Zobrazujem to pomocou latte sablony, v ktorej som si dala podmienku, ze ak je pole prazdne, tak vypise, ze ucitel nikde neuci, ale ani tuto spravu mi neche zobrazit.
|
|
Registrovaný: 01.05.05 Príspevky: 13413 Témy: 1494 | 1494 Bydlisko: Bratislava |
Kód: $stmt3 = $stmt3->fetchAll(PDO::FETCH_ASSOC); //vrati pole vsetkych vysledkov, ktore ti ten sql select najde var_dump($stmt3); //si mozes pozriet co sa v tom poli nachadza predtym ako si budes cez latte formatovat vystup podla tvojich poziadaviek
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 11 Enterprise | APC Back-UPS BE-850 VA | Lenovo ThinkPad X250 & Microsoft Windows 11 Professional | iPhone 15 Pro 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu 24.04.1 LTS |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 30.11.10 Prihlásený: 28.12.15 Príspevky: 6 Témy: 2 | 2 |
Between som nasla, ze porovnava len v 1 stlpci, ja porovnavam medzi 2 stlpcami. Tie data su ulozene vo formate 0000-00-00 08:45:00 napr. a var_dump mi vypise array (size=0) empty ... ... comu nerozumiem, lebo ked nahradim 'Y-m-d H:i:s' za 0000-00-00 08:00:00 a 0000-00-00 08:45:00 tak mi normalne vypise, aky predmet sa vyucuje v tu dobu... A teraz vecer, ked sa uz nic nevyucuje by to malo vypisat, ze ucitel momentalne nevyucuje, .. ale ani to nevypise:/
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Pozri sa na to ešte raz, pretože BETWEEN je presne na to, aby si neurobila hlúpu chybu v porovnaní. Takže to prepíš na between a potom porozmýšľaj, prečo to nešlo. Kód: WHERE tenDatum BETWEEN lessons.start_time AND lessons.end_time
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 30.11.10 Prihlásený: 28.12.15 Príspevky: 6 Témy: 2 | 2 |
Okay, a ako sa to prosím prepaja s php? Lebo toto sql mi vypisuje Array().. Nerozumiem, kde robim chybu. Inak rozmyslam, v tomto pripade je potrebne pouzit substring?
SELECT lessons.start_time, lessons.end_time FROM lessons INNER JOIN lectors ... WHERE '".date('Y-m-d H:i:s')."' BETWEEN lessons.start_time AND lessons.end_time
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Nie, nie je potrebný substring, ak ti nevadí, že dostaneš celý datum a čas.
A ako sa to prepája s php napísal JanoF. Musíš použiť FetchAll.
A ak ti to stále nepôjde, pošli sem tvoj kód.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 30.11.10 Prihlásený: 28.12.15 Príspevky: 6 Témy: 2 | 2 |
ja to skusam v db a data sa mi zobrazia bez podmienky, ale s pomienkou uz nie, nerozumiem preco Kód: $stmt3 = $db->prepare(" SELECT l.schoolday, l.start_time, l.end_time, t.lectorsurname, sg.class_id, c.grade, s.subjectname FROM lessons l INNER JOIN lectors t ON l.lector_id=t.lector_id INNER JOIN studentgroups sg ON l.studentgroup_id=sg.studentgroup_id INNER JOIN classes c ON sg.class_id=c.class_id INNER JOIN subjects s ON l.subject_id=s.subject_id WHERE l.start_time <= CURTIME() AND l.end_time >= CURTIME() AND t.lector_id=:id ORDER By c.grade, l.schoolday, l.start_time"); $stmt3->bindValue(":id", intval($_GET["id"])); $stmt3->execute(); $data=$stmt3->fetchAll(); print_r($data);
$tplVars["vyucovanie"] = $stmt3->fetchAll(); a latte Kód: <tr> <th> Aktuálne vyučuje: </th> </tr> {foreach $vyucovanie as $aktual} {if !empty($aktual['grade'])} <tr> <td>{$aktual['grade']} </td> </tr> {/if} {if ($aktual['grade']) == NULL} <tr> <td> <span> Učiteľ momentálne nevyučuje </span></td></tr> {/if} {/foreach} Myslim, ze nevadi, ze to bude zobracovane s datumom, ja chcem zobrazt len rocnik v ktorom uci aktualne ucitel
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Používaš tam dva krát po sebe fetchAll. To by si nemala, ten prvý fetchAll akoby "vyčerpá" všetky dáta a druhý už nevráti nič. Miesto toho druhého fetchu priraď jednoducho $data, ktoré máš už vytiahnuté pred tým.
Ďalej problém môže byť aj v dátach. Máš tam nejak veľa joinov. Neviem, či ti ich reálne treba - ak chceš zistiť LEN to, ČI učiteľ vyučuje, tak asi nie. Skús teda vyhádzať všetky nepotrebné joiny (tie posledné tri) a skús to spustiť tak. Ak ti to pôjde, tak problém bude v dátach a niečo sa ti tam v tých inner jinoch správne neprepojí. Tak môžeš použiť left joiny a skúmať, kde je chyba.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 30.11.10 Prihlásený: 28.12.15 Príspevky: 6 Témy: 2 | 2 |
Ja ten prvy join mazem, ten mam na to, aby mi zobrazilo, co tam je Ta tabulka je poprepajana, preto tolko joinov, ja chcem vypis ak vyucuje tak rocnik a predmet. Nerozumiem, preco mi tie data vypise bez tej podmienky, a s tou podmienkou vrati nula riadkov. Skusam aj left join, ale vypisuje tie iste riadky jak s inner:/
|
|
Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Ponuka práce | 0 | 1362 | 02.05.2011 12:08 magicmedia | | v PHP, ASP | 4 | 655 | 20.06.2009 12:44 KViki | | v Ponuka práce | 1 | 960 | 12.07.2010 19:50 Murtagh | | v PHP, ASP | 2 | 471 | 28.06.2012 18:06 Ďuri | | v PHP, ASP | 16 | 906 | 02.05.2010 10:26 zdeniatqo | | v Ponuka práce | 0 | 827 | 23.10.2010 11:21 mondzo | | v Databázy | 1 | 744 | 03.04.2011 8:09 Ďuri | | v PHP, ASP | 11 | 538 | 17.05.2010 12:07 ricco24 | | v PHP, ASP | 4 | 634 | 10.06.2011 23:12 Sunnynko | | v PHP, ASP | 3 | 851 | 09.07.2007 18:19 Tominator | | v PHP, ASP | 17 | 472 | 05.05.2020 19:05 jumper | | v Databázy | 3 | 728 | 23.03.2009 13:01 GoodWill | | v PHP, ASP | 3 | 732 | 21.04.2007 14:08 lukasmakac | | [ Choď na stránku: 1, 2 ] v PHP, ASP | 32 | 2396 | 28.08.2009 17:21 stenley | | v PHP, ASP | 5 | 914 | 20.03.2010 6:24 rooobertek | | v Ostatné | 13 | 1343 | 06.07.2009 11:37 Ďuri |
|