Autor | Zpráva | ||
---|---|---|---|
nyllo Profil |
#1 · Zasláno: 7. 5. 2014, 18:37:45
Zdravím.
Potřebuji vypisovat z databáze informace podle počátečního a konečného data. Model vypadá nějak takto: news_date_end` >= '".$actual_date."' => `news_date_add Napadlo mě zkusit postavit požadavek takto SELECT * FROM `news` where `news_date_end` >= '".$act_date."' => `news_date_add` ORDER BY `news`.`news_date_end` ASC Předem děkuji za každou radu. |
||
pcmanik Profil |
nyllo:
WHERE news_date_end <= $act_date AND news_date_add >= $act_date |
||
nyllo Profil |
#3 · Zasláno: 7. 5. 2014, 18:56:26
pcmanik:
dosadil jsem toto a nyní nevypisuje nic SELECT * FROM `news` WHERE news_date_end <= $act_date AND news_date_add >= $act_date ORDER BY `news`.`news_date_end` DESC |
||
juriad Profil |
Ty nerovnosti jsou opačně.
Prostě podmínku musíš vyjádřit jako dvě nerovnosti. Uprostřed to roztrhnout. A <= B <= C je jen matematická zkratka za A <= B AND B <=C Operátory neostré nerovnosti mají rovnítko vždy na pravé straně; čteš je: menší/větší nebo rovnost. Alternativně je možné: $act_date BETWEEN news_date_add AND news_date_end |
||
nyllo Profil |
#5 · Zasláno: 7. 5. 2014, 19:12:57
Bohužel ani tato hodnota nepomohla
SELECT * FROM `news` WHERE $act_date BETWEEN news_date_add AND news_date_end ORDER BY `news_date_end` DESC |
||
juriad Profil |
#6 · Zasláno: 7. 5. 2014, 19:17:56
Vypisuje to nějakou chybu, nebo dotaz prostě vrátí nula záznamů? Existuje nějaký záznam, který podmínce vyhovuje? Zadáváš $act-date správně? Tedy jako řetězec ve formátu '2014-05-07 19:17:28' včetně hraničních apostrofů?
|
||
nyllo Profil |
#7 · Zasláno: 7. 5. 2014, 19:22:35
kód mám takto
$start = $_GET['start']; if(!$start) $act_date = Date("Y-m-d", Time()); echo $act_date; $query = "SELECT * FROM `news` WHERE $act_date BETWEEN news_date_add AND news_date_end ORDER BY `news_date_end` DESC"; $vypis = mysql_query($query); if (FALSE === $vypis) { echo mysql_errno() . ": " . mysql_error(); } echo '<div id="page_2" class="container marketing"> <div id="page_box"> <div class="row"> <div class="col-md-12"> <div id="slider"> <ul>'; while($row = mysql_fetch_array($vypis)) { echo '<li>'.$row["news_text"].'</li>'; }; echo ' </ul> </div> </div> </div> </div> </div>' ?> |
||
juriad Profil |
#8 · Zasláno: 7. 5. 2014, 19:30:25
nyllo:
A vypíše to (11. řádek) nějakou chybu? Tipuji, že ano. Obal $act_date na 6. řádku do apostrofů: $query = "SELECT * FROM news WHERE '$act_date' BETWEEN news_date_add AND news_date_end ORDER BY `news_date_end` DESC"; Mimochodem, ty zpětné apostrofy nejsou téměř nikdy nutné. Josu nutné, jem když název tabulky/sloupce je jedním z klíčových slov. |
||
nyllo Profil |
#9 · Zasláno: 7. 5. 2014, 19:32:27
to bylo ono děkuji za radu. Chybu to nepsalo.
|
||
juriad Profil |
Aha, 2014-05-07 to vyhodnotilo aritmaticky jako 2002, což je mnohem menší než 20140705191728.000000. Viz http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-conversion.html
|
||
Časová prodleva: 10 let
|
0