| 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: 12 let
|
|||
0