16. november 2003 - 18:49
Der er
19 kommentarer og 1 løsning
Kalenderspgm: vis ugenummer og indeværende dag II
Ref.:
http://www.eksperten.dk/spm/428209 Er der nogen evt. detox, der kan fortælle mig, hvordan jeg smider et array med danske månedsnavne ind i denne smarte løkke?
Jeg har også brug for en idé til, hvordan jeg kan koble de listede datoer sammen med output fra min db. Er det smartest at hente indholdet i den angivne periode og så liste det fra et array elelr skal jeg hellere hente posterne med adskilte queries for de datoer, hvor der er et indhold?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
16. november 2003 - 19:03
#1
Til dit første spørgsmål, vil jeg mene du kan bruge noget i den her stil: <? $danske = array('januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december'); $start = date('w') ? date('w')-1: 6; echo $danske[date('n')-1]."<br />"; echo "Uge: ".date('W')."<br /><hr>"; for ($i=0;$i<7;$i++) { echo date('D d-m-Y',time()-$start*60*60*24)."<br />"; $start--; } ?>
16. november 2003 - 19:04
#2
Vedrørende at hente data, kan du godt hente data fra en given periode. Hvilken felttype bruger du til dine datoer?
16. november 2003 - 19:16
#3
date
16. november 2003 - 19:26
#4
Jeg var nok lidt hurtig; jeg mente egentlig ugedagene ;-) Kan du klare den også?
16. november 2003 - 19:35
#5
Ok, så kan du selv tage det du kan bruge: $danske = array('januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december'); $ugedage = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'); $start = date('w') ? date('w')-1: 6; echo $danske[date('n')-1]."<br />"; echo "Uge: ".date('W')."<br /><hr>"; for ($i=0;$i<7;$i++) { $tid = time()-$start*60*60*24; echo $ugedage[date('w', $tid)].": "; echo date('d-m-Y',$tid)."<br />"; $dag[$i] = $tid; $start--; } $start_dag = date('Y-m-d', $dag[0]-60*60*24); $slut_dag = date('Y-m-d', $dag[6]+60*60*24); echo "<br />"; require 'db.php';// Forbindelse til database $res = mysql_query("select * from tabel where dato_felt between '$start_dag' and '$slut_dag'") or die(mysql_error());
16. november 2003 - 20:04
#6
Men er tanken den at du vil bruge formateringen ved visningen af dine data fra tabellen?
16. november 2003 - 23:50
#7
Tanken er, at jeg får hevet de poster frem som svarer til den aktuelle uges datoer, men indtil videre lykkes det mig kun at hive alle poster indenfor tidsrummet ud i een vælling.
16. november 2003 - 23:51
#8
Tror du ligefrem det er nødvendigt for mig, at skulle lave en query for hver gang den tæller de 7 dage op i løkken? Det sker jo ofte, at der er mere end en post pr. dato...
16. november 2003 - 23:56
#9
Nej, du kan bruge ORDER BY: $res = mysql_query("select * from tabel where dato_felt between '$start_dag' and '$slut_dag' ORDER BY dato_felt") or die(mysql_error());
16. november 2003 - 23:58
#10
Vil du have hver enkelt dags poster adskilt?
17. november 2003 - 00:01
#11
ja, altså sådan at den udskriver ugen som du allerede har klaret - og så efter hver dag skal den liste de poster der passer til datoen, inden den skriver næste dato i den aktuelle uge. Forstår du det eller mumler jeg?
17. november 2003 - 00:06
#12
Nej, jeg tror jeg ser tegningen. Spørgsmålet er bare om du skal lave et udtræk, som du deler op, eller om du skal lave en forespørgsel for hver dag i ugen.
17. november 2003 - 00:11
#13
Nemlig. Det virker umiddelbart omsonst at skulle lave 7 forespørgsler, men omvendt kan jeg ikke se, hvordan jeg kan komme mere snedigt omkring det.
17. november 2003 - 00:30
#14
Hmmm, nej jeg ser lige på det.
17. november 2003 - 00:37
#15
Jeg tror jeg har fundet en metode, hvor du kun behøver et udtræk: <? define('DAG', 60*60*24); $ugedage = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'); $start = date('w') ? date('w')-1: 6; echo "Uge: ".date('W')."<br /><hr>"; for ($i=0;$i<7;$i++) { $tid = time()-$start*DAG; $dag[$i] = $tid; $start--; } $start_dag = date('Y-m-d', $dag[0]-DAG); $slut_dag = date('Y-m-d', $dag[6]+DAG); echo "<br />"; require 'db.php';// Forbindelse til database $res = mysql_query("select * from tabel where dato between '$start_dag' and '$slut_dag' order by dato") or die(mysql_error()); while ($row[] = mysql_fetch_assoc($res)) { } $j = 0; for ($i=0;$i<7;$i++) { echo $ugedage[date('w', $dag[$i])].": " . date('d-m-Y',$dag[$i])."<br />"; while (date('Y-m-d', $dag[$i]) == $row[$j]['dato']) { echo $row[$j]['text']."<br />"; $j++; } echo "<hr>"; } ?>
17. november 2003 - 00:39
#16
I eksemplet bruger jeg et datofelt kaldet 'dato' og et tekstfelt kaldet 'text. Det kan du jo rette til, ligesom tabellen bliver kaldt for 'tabel'
17. november 2003 - 00:49
#17
Og så kunne du evt. tilføje: while ($row[] = mysql_fetch_assoc($res)) { } mysql_free_result($res);// Tilføjes og til sidst: echo "<hr>"; } unset($row);// Tilføjes
22. januar 2004 - 16:52
#18
detox; smider du ikke lige et svar?
22. januar 2004 - 17:00
#19
Jo da.
22. januar 2004 - 19:55
#20
Tak for hjælpen :-)
Vi tilbyder markedets bedste kurser inden for webudvikling