Mysql - izpis novejših vnosov (razvršanje)
 
G-force 21. jan 2014 16:54:43 Pridružen od:
31. mar 2008
828 objav
516 60 3
#1

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);

$nove
vnosi = mysqlifetcharray($r, MYSQLINUM);

$nove
vnosi = $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?


všeč(0) ni všeč(0) spam(0)
 
G-force 21. jan 2014 17:50:10 Pridružen od:
31. mar 2008
828 objav
516 60 3
#2

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 = mysqli
query($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?


všeč(0) ni všeč(0) spam(0)
 
s1l3 21. jan 2014 18:05:06 Pridružen od:
6. jun 2012
345 objav
320 60 1
#3

Kaj pa tole :


$q = 'SELECT COUNT(thread_id) FROM forum_threads WHERE thread_posted_on > '.date('Y-m-d h:i:s', $cas);
všeč(0) ni všeč(0) spam(0)
 
G-force 21. jan 2014 18:19:32 Pridružen od:
31. mar 2008
828 objav
516 60 3
#4

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.


všeč(0) ni všeč(0) spam(0)
 
s1l3 21. jan 2014 18:45:18 Pridružen od:
6. jun 2012
345 objav
320 60 1
#5

Č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.


všeč(0) ni všeč(0) spam(0)
 
tsu 21. jan 2014 20:35:48 Pridružen od:
16. jun 2008
351 objav
482 34 14
#6

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.


všeč(0) ni všeč(0) spam(0)
LinkedIn, @deveti, Si shell:aff link ;)
 
s1l3 21. jan 2014 21:08:21 Pridružen od:
6. jun 2012
345 objav
320 60 1
#7

http://stackoverflow.com/questions/6907751/select-count-from-table-of-mysql-in-php


všeč(0) ni všeč(0) spam(0)
 
pavarti 22. jan 2014 07:41:40 Pridružen od:
26. okt 2011
445 objav
587 92 14
#8

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.


všeč(0) ni všeč(0) spam(0)
 
G-force 22. jan 2014 11:47:28 Pridružen od:
31. mar 2008
828 objav
516 60 3
#9

Hvala, verjetno sem se zatipkal in se sploh nisem poglobil v napako, ker se mi je mudilo. Bom preveril, čeprav bom zaradi določenih razlogov verjetno uporabil kar tisto rešitev, ki sem jo sam v drugem postu zapisal.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se