Avatar billede hoejgaard Juniormester
28. august 2008 - 00:42 Der er 12 kommentarer og
1 løsning

udtrækning af søgning

Hej
Jeg har en søgeboks hvor man kan søge på et årstal feks. 2008

Tidspunktet er indtastet som eks. : 15-10-2008
og lagt i databasen som :
if (ereg('^([0-9]+)-([0-9]+)-([0-9]+)$',$_POST[tidspunkt],$reg) && !empty($_POST[tidspunkt])) {
$tidspunkt1 = mktime(0,0,0,$reg[2],$reg[1],$reg[3]);

Hvordan får jeg ved søgningen på eks årstallet 2008 de forekomster frem som indeholder årstallet 2008 i $tidspunkt1 ??
Avatar billede jakobdo Ekspert
28. august 2008 - 07:11 #1
Hvorfor gemmer du dem i mktime() format, når mysql jo netop understøtter DATE som hedder: YYYY-MM-DD
Hvis du gør det, kan du bruge WHERE YEAR(dato_felt) = 2008
Avatar billede cronick Nybegynder
28. august 2008 - 12:14 #2
Jeg gemmer altid datoer i UNIXTIME, ligesom hoejgaard her - dog er fødselsdatoer selvfølgelig en undtagelse.

Du gør eksempelvis således, hoejgaard:

mysql_query("SELECT * FROM `tabelnavn` WHERE FROM_UNIXTIME(`cellenavn`, '%Y') = '".date("Y", $tidspunkt1)."'")or die(mysql_error());
Avatar billede hoejgaard Juniormester
28. august 2008 - 12:58 #3
Hej cronick
jeg har dette :
$query = mysql_query("SELECT ... FROM ... TABEL WHERE......... FROM_UNIXTIME(`f.tidspunkt`, '%Y') LIKE '".date("Y", $_SESSION['timestamp2'])."'");

men får fejlen :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

her: while ($row = mysql_fetch_array($query))
Avatar billede hoejgaard Juniormester
28. august 2008 - 13:20 #4
Jeg får nu også denne fejl :
Warning: mktime() expects parameter 1 to be long, string given in

det er i denne linie :
if (ereg('^([0-9]+)-([0-9]+)-([0-9]+)$',$_SESSION[tidspunktdato],$reg) && !empty($_SESSION[tidspunktdato])) { 
  $timestamp2 = mktime(' ', ' ', ' ', $reg[2], $reg[1], $reg[3]);

Jeg forstår det ikke helt da det virker et andet sted jeg bruger det samme ??
Avatar billede hoejgaard Juniormester
28. august 2008 - 13:51 #5
Nu er problemet "kun" som i :
28/08-2008 12:58:19
Avatar billede cronick Nybegynder
28. august 2008 - 13:57 #6
Problemet i 13:20:47 skyldes naturligvis, at du skal bruge 0, i stedet for ''.

Mht. den anden fejl, så bliver du lige nødt til at putte "or die(mysql_error());" bag ved din query, så vi kan få nærmere information om fejlen :-)
Avatar billede hoejgaard Juniormester
28. august 2008 - 13:58 #7
okay nu er det sådan at man skal indtaste et årstal eks. 2008
og det skal så holdes op mod datoer i UNIXTIME fra tabellen...

Hvordan vil det se ud??
Avatar billede cronick Nybegynder
28. august 2008 - 14:01 #8
Er det ikke det, jeg lige har lavet?

Btw. du har en fejl her: FROM_UNIXTIME(`f.tidspunkt`, '%Y') LIKE

Det skal i stedet være: FROM_UNIXTIME(`f`.`tidspunkt`, '%Y') LIKE
Avatar billede hoejgaard Juniormester
28. august 2008 - 14:21 #9
ok der var en fejl ja..
har nu :
FROM_UNIXTIME(`f`.`tidspunkt`, '%Y') LIKE '$_SESSION[tidspunktaar]'

og der meldes ikke fejl, men jeg får ikke det forventede resultat ud, når jeg søger på et givent år...

$_SESSION[tidspunktaar] er lig med eks. : 2006
Avatar billede hoejgaard Juniormester
28. august 2008 - 14:32 #10
måske dette LIKE '%$_SESSION[tidspunktaar]%'  ...
checker det lige..
Avatar billede cronick Nybegynder
28. august 2008 - 14:35 #11
Du har jo fuldstændigt ændret den Query jeg gav dig :-)

Dog kan jeg godt se en fejl fra min side nu. Det skal være det følgende, som stort set også er det der oprindeligt er angivet i den query jeg skrev:

FROM_UNIXTIME(`f`.`tidspunkt`, '%Y') = '".date("Y", mktime(0,0,0,1,1,$_SESSION['tidspunktaar']))."'
Avatar billede hoejgaard Juniormester
28. august 2008 - 15:33 #12
mange tak for hjælpen det virker nu !

bruger dette her da jeg har årstallet i $_SESSION[tidspunktaar] :
FROM_UNIXTIME(`f`.`tidspunkt`, '%Y') LIKE '%$_SESSION[tidspunktaar]%'

læg et svar cronick.
Avatar billede cronick Nybegynder
28. august 2008 - 15:38 #13
Det var så lidt :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester