Mysql - izpis novejših vnosov (razvršanje)
4 naročniki
4 naročniki
Malo me heca ena zadeva pri mysql. Iz mysql bi rad izpisal vse vnose, ki imajo novejše datume od izbranega. Čas za primerjavo je dobljen preko PHP, časovni vnosi so pa v posamezni vrstici s tipom DATETIME tako da kar se mysql tiče je vse ok.
Primer
Primerjal bi na primer spodnji čas.
$cas = strtotime('20.01.2014 16:17:24 ');
s časom, ki je zapisan v mysql v vrstici threadpostedon, pa recimo, da imam eno vrstico z novejšim časom, torej na primer (threadpostedon) '2014-01-20 16:18:08'.
Torej vnos se je zgodil slabo minuto po primerjalnem času torej je novejši in bi ga rad izpisal.
Mysql...
$q = "SELECT COUNT(threadid) FROM forumthreads WHERE threadpostedon > $cas";
$r = mysqliquery($dbc, $q);
$novevnosi = mysqlifetcharray($r, MYSQLINUM);
$novevnosi = $nove_vnosi[0];
echo $nove_vnosi;
Zdaj, če bi bilo vse ok, bi mi moral izpisati $novivnosi = 1, ker je pač samo en pravi vnos. Vendar mi mysql enostavno sešteje čisto vse vnose, ki so v tabeli forumthreads.
Kaj počnem narobe? A je fora, da bi moral mysql reči, da je "threadpostedon" v 24 urnem načinu & prav tako času pri php? Kako to naredim?
8 odgovorov
Sm rešu tkole samo to ni to... daljša koda, pa pomoje še bolj potratna, kar se serverja tiče...
$cas = strtotime('20.01.2014 16:17:24 ');
$q = "SELECT threadlastthreadpostedon FROM forumthreads;";
$r = mysqliquery($dbc, $q);
$i = 0;
while ($castema = mysqlifetcharray($r, MYSQLINUM)) {
if ( ((strtotime($cas_tema[0])) - $cas) > 0 ) {
$i++;
}
}
$nove_teme = $i;
Ve kdo kaj je pri vrhnji kodi narobe?
Kaj pa tole :
$q = 'SELECT COUNT(thread_id) FROM forum_threads WHERE thread_posted_on > '.date('Y-m-d h:i:s', $cas);
Ne dela, niti ne moreš primerjat stringa s časom, že mysql javi napako "mysqlifetcharray() expects parameter 1 to be mysqli_result, boolean given "
Če pa spremenim v time, je pa isto... sešteje kar vse vrstice.
Če sem te prav razumel imaš datetime polje v mysql bazi. Meni zgornji query dela, prejle sem ga pognal v phpmyadminu. Primerjal datetime polje z datumom.
Ne dela, niti ne moreš primerjat stringa s časom, že mysql javi napako "mysqlifetcharray() expects parameter 1 to be mysqli_result, boolean given "
Tale napaka, ki si jo opisal, ni napaka pri izvajanju querya, ampak napaka pri pridobivanju rezultatov.
Najprej si izpiši napako, ki ti jo javi MySQL mysqli::$error.
Ti bo povedala dosti več o tem, kaj točno je narobe pri tvoji SQL poizvedbi.