03. oktober 2006 - 18:25
Der er
73 kommentarer og 1 løsning
sortering efter måned
Hej Jeg har brug for noget hjælp til at komme igang, da jeg er lidt blank på hvordan det kan gøres. Jeg har nogle rækker i MySQL som indeholder et felt for hvornår de er blevet oprettet. Jeg kan sagtens finde ud af at trække alt indholdet ud, og det har jeg også gjort. Men det jeg også gerne vil, er at fx trække alt indholdet ud for oktober måned, og kun oktober. Samtidig skal der automatisk blive lavet et link hvor man kan klikke og så bliver alt indholdet for oktober vist. Det hele skal selvfølgelig ske automatisk. Dvs når vi nu kommer til december, skal et link automatisk blive oprettet, hvor man så kan se alt fra december måned. Hvordan kan det laves? På forhånd tak.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
03. oktober 2006 - 18:27
#1
Kommer helt an på hvor smart du var da du lavede din database, hvilken type er feltet?
03. oktober 2006 - 18:29
#2
feltet hvor dato og tid står er datetime og gemt med NOW()
03. oktober 2006 - 18:29
#3
Hvis feltet er et datetimefelt, så er kommandoen for at få alt fra oktober noget i stil med dette:
SELECT * FROM dinTabel WHERE month(ditDatiFelt) = 9
'9' fordi at januar starter som 0.
Læs mere om month() og de andre dato-funktioner i MySQL her:
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
03. oktober 2006 - 18:30
#4
NOW() er en funktion, ikke en type... lav et struktur udtræk hvis du ikke ved hvad felt typen er.
03. oktober 2006 - 18:31
#5
jeg har lige skrevet et felt typen er datetime. og er gemt med NOW(). Altså...
03. oktober 2006 - 18:31
#6
Sorry, så ikke du skrev datetime, men så er nielle's svar det du skal bruge, og så er det op til din PHP til at lave links.
03. oktober 2006 - 18:34
#7
Tak nielle. Hvordan kan linksne laves automatisk og udføre den korrent sql forspørgsel?
03. oktober 2006 - 18:38
#8
Skal du kun have et link ... det for den aktuelle måned? Ok hvad med posterne for f.eks. oktober 2005 ... skal de vises sammen med dem for oktober 2006?
03. oktober 2006 - 18:39
#9
der skal vel være en variabel som henter dags dato ud hvis der automatisk skal laves et link der viser alt fra f.eks december måned evt $maaned = date("n");
03. oktober 2006 - 18:42
#10
Noget med: $_GET['month'] = (int)$_GET['month'] SELECT * FROM dinTabel WHERE month(ditDatiFelt) = $_GET['month'] Og laver linket til dette måned: ?month=<? echo date("n")-1;?> Og så skal du lige huske året også...
03. oktober 2006 - 18:43
#11
fx december 2006 december 2003 Lad os sige første link skal starte fra Oktober 2006, og derefter et link hvor hver eneste måned som kommer i fremtiden. Altså, linket skal selvfølgelig først oprettes når den nye måned starter.
03. oktober 2006 - 18:47
#12
Du overføre året på samme måde som måned: $_GET['month'] = (int)$_GET['month']; $_GET['year'] = (int)$_GET['year']; SELECT * FROM dinTabel WHERE month(ditDatiFelt) = $_GET['month'] AND year(ditDatiFelt) ?month=<? echo date("n")-1;?>&year=<? echo date("Y")?>
03. oktober 2006 - 18:48
#13
Ups... Du overføre året på samme måde som måned: $_GET['month'] = (int)$_GET['month']; $_GET['year'] = (int)$_GET['year']; SELECT * FROM dinTabel WHERE month(ditDatiFelt) = $_GET['month'] AND year(ditDatiFelt) = $_GET['year'] og linket: ?month=<? echo date("n")-1;?>&year=<? echo date("Y")?>
03. oktober 2006 - 18:50
#14
Og om liket skal oprettes sørger du for ved at lave nogle if sætninger der tjekker om dato ligger før eller efter dd.
03. oktober 2006 - 18:52
#15
Linksiden kunne f.-eks. se nogenlunde sådan her ud: $startYear = 2003; $currentYear = idate("Y"); $currentMonth = idate("m"); $monthName = {"Januar", "Februar", "Marts", "April", ... }; // Fyld selv resten i while ($year=$startYear; $year<$currentYear; $year++) while ($month=0; $month<=11; $month++) echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; while ($month=0; $month<=$currentMonth; $month++) echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>";
03. oktober 2006 - 19:01
#16
Hvor får du $month og $year fra?
03. oktober 2006 - 19:03
#17
Hvem spørger du?
03. oktober 2006 - 19:04
#18
Hvem spørger du?
03. oktober 2006 - 19:05
#19
:o)
03. oktober 2006 - 19:09
#20
Nielle. Sorry :)
03. oktober 2006 - 19:11
#21
Ok. :^) De fås fra de while-løkker som løber igennem alle årene og alle månederne.
03. oktober 2006 - 19:19
#22
$monthName = {"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"}; Parse error: syntax error, unexpected '{' Det eneste jeg gjorde var at fylde månederne i. Hvordan rettes fejlen?
03. oktober 2006 - 19:24
#23
Du skal bruge $monthName = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
03. oktober 2006 - 19:27
#24
while ($year=$startYear; $year<$currentYear; $year++) Parse error: syntax error, unexpected ';'
03. oktober 2006 - 19:31
#25
Hvordan ser din kode ud nu?
03. oktober 2006 - 19:31
#26
<?php $startYear = 2006; $currentYear = idate("Y"); $currentMonth = idate("m"); $monthName = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); // Fyld selv resten i while ($year=$startYear; $year<$currentYear; $year++) while ($month=0; $month<=11; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; while ($month=0; $month<=$currentMonth; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; ?>
03. oktober 2006 - 19:31
#27
Sludder! Det skal da være "for" i stedet for "while".
03. oktober 2006 - 19:32
#28
Undskylder: <?php $startYear = 2006; $currentYear = idate("Y"); $currentMonth = idate("m"); $monthName = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); // Fyld selv resten i for ($year=$startYear; $year<$currentYear; $year++) for ($month=0; $month<=11; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; for ($month=0; $month<=$currentMonth; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; ?>
03. oktober 2006 - 19:36
#29
Skrev date i stedet for idate, nu spiller det vist :) Kan det gøres så den først starter med at tælle fra og med Oktober 2006?
03. oktober 2006 - 19:41
#30
Det var nu med vilje at jeg brugte idate() i stedet for date().
03. oktober 2006 - 19:42
#31
Fatal error: Call to undefined function: idate().
03. oktober 2006 - 19:44
#32
idate er PHP5...
03. oktober 2006 - 19:45
#33
Det er fordi at du brugere en lettere uddateret PHP. Måske burde du overveje at opgradere? Det er der andre gode grunde til. :^)
03. oktober 2006 - 19:47
#34
Så ser det ud til jeg skal rive mit webhotel rundt og bede om en opgradering :P Ej, vil tingene stadig virke selvom jeg bruger date istedet for idate? En sidste ting, kan det gøres så tælleren først starter fra Oktober 2006? Vel noget med startMonth = "Oktober"; Men kan ikke lige se hvordan det skal skrives ind i løkken.
03. oktober 2006 - 19:49
#35
Der skulle ikke være nogle problemer...
03. oktober 2006 - 19:51
#36
<?php $startYear = 2006; $startMonth = 9; $currentYear = idate("Y"); $currentMonth = idate("m"); $monthName = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); if ($currentYear == $startYear) { for ($month=$startMonth; $month<=$currentMonth; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $currentYear</a>"; } else { for ($month=$startMonth; $month<=$currentMonth; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $startYear</a>"; for ($year=$startYear+1; $year<$currentYear; $year++) for ($month=0; $month<=11; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; for ($month=0; $month<=$currentMonth; $month++) print "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $currentYear</a>"; } ?>
03. oktober 2006 - 19:54
#37
Smukt. November bliver dog også udskrevet. det skal den ikke før det er d.1 november :)
03. oktober 2006 - 19:58
#38
Ønsker du egentlig at der skal vises links selv om der ikke er nogle poster? Skal oktober f.eks. vises hvis der ikke er poster for den? ... og kan der komme novenber-poster i databasen hvis det endnu ikke r november?
03. oktober 2006 - 20:00
#39
Ja, der skal vises links selvom der ikke er nogle poster. Med mindre måneden ikke har været her endnu selvfølgelig. nej, der kan ikke komme poster i en måned som ikke har været her endnu.
03. oktober 2006 - 20:02
#40
Jeg tænkte bare at det hele faktisk var nemmere hvis man viste links for de måneder/år som der var der, og så intet andet. Så opbår man også at der ikke er nogle links som føre til tomme sider.
03. oktober 2006 - 20:03
#41
Og der kan heller ikke komme nye poster i en måned som er overstået.
03. oktober 2006 - 20:05
#42
Hvis der ikke er nogle poster i en given måned. Så skal der være et link. Men linket skal ikke være et link.. Øhh :) Altså lad os sige der ikke er nogle Poster i Oktober, så skal Oktober 2006 stadig udskrives, men det skal ikke være et link. Se det ville være smart! :)
03. oktober 2006 - 20:15
#43
Et bud: $sql = " SELECT month(ditDatoFelt) AS m, year(ditDatoFelt) AS y FROM dinTabel GROUP BY y, m ORDER BY y ASC, m ASC"; $result = $query($sql) or die(mysql_error()); $row = mysql_fetch_assoc($result) $year = $row["y"]; $month = $row["m"]; echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; while ($row = mysql_fetch_assoc($result)) { $year2 = $row["y"]; $month2 = $row["m"]; while ($year2 != $year || $month2 != month) { print $monthName{$month} . " $year<br>"; $month++; if ($month == 12) { $month = 0; $year++; } echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a><br>"; } }
03. oktober 2006 - 20:17
#44
Æhem: $sql = " SELECT month(ditDatoFelt) AS m, year(ditDatoFelt) AS y FROM dinTabel GROUP BY y, m ORDER BY y ASC, m ASC"; $result = $query($sql) or die(mysql_error()); $row = mysql_fetch_assoc($result) $year = $row["y"]; $month = $row["m"]; echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a>"; while ($row = mysql_fetch_assoc($result)) { $year2 = $row["y"]; $month2 = $row["m"]; while ($year2 != $year || $month2 != month) { echo $monthName{$month} . " $year<br>"; $month++; if ($month == 12) { $month = 0; $year++; } } echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName{$month} . " $year</a><br>"; }
03. oktober 2006 - 20:22
#45
parse error: syntax error, unexpected T_VARIABLE in $year = $row["y"]; som er linje 17
03. oktober 2006 - 20:24
#46
$row = mysql_fetch_assoc($result);
03. oktober 2006 - 20:29
#47
Parse error: syntax error, unexpected '<' Det er den sidste linje i dokumentet.
03. oktober 2006 - 20:30
#48
Eller nej, det er det ikke. Det er ved </body>
03. oktober 2006 - 20:34
#49
Og du har afsluttet php med en ?> ?
03. oktober 2006 - 20:34
#50
Gætter på at det er fordi at du ikke har afsluttet din <?php ... ?> blok?
03. oktober 2006 - 20:43
#51
Ups:o) Så har jeg en Fatal error: Call to undefined function: () in line 14 $result = $query($sql) or die(mysql_error());
03. oktober 2006 - 20:46
#52
$result = mysql_query($sql) or die(mysql_error());
03. oktober 2006 - 20:47
#53
Jeg beklager alle mine bøffer, men du må nu gerne selv kigge lidt kritisk på koden før at du poster fejlene. Det skal selvfølgelig være: $result = $mysql_query($sql) or die(mysql_error());
03. oktober 2006 - 20:47
#54
Ups: $result = mysql_query($sql) or die(mysql_error());
03. oktober 2006 - 20:50
#55
Super ingen fejl nu. Men den udskriver kun 2006. Ikke Oktober.
03. oktober 2006 - 20:52
#56
Prøv at retet alle stederne, med: $monthName{$month} - til: $monthName[$month]
03. oktober 2006 - 21:02
#57
Det gjorde ingen synlig forskel
03. oktober 2006 - 21:05
#58
Hvordan ser koden ud nu?
03. oktober 2006 - 21:11
#59
<?php require("../inkluder/conn_inc.php"); $sql = " SELECT month(date) AS m, year(date) AS y FROM news GROUP BY y, m ORDER BY y ASC, m ASC"; $result = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_assoc($result); $year = $row["y"]; $month = $row["m"]; echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName[$month] . " $year</a>"; while ($row = mysql_fetch_assoc($result)) { $year2 = $row["y"]; $month2 = $row["m"]; while ($year2 != $year || $month2 != month) { echo $monthName[$month] . " $year<br>"; $month++; if ($month == 12) { $month = 0; $year++; } } echo "<a href='getPosts.php?year=$year&month=$month'>" . $monthName[$month] . " $year</a><br>"; } ?>
03. oktober 2006 - 21:16
#60
Tilføj lige array-definitionen: $monthName = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); - et eller andet sted i starten af koden.
03. oktober 2006 - 21:28
#61
Så virker det. Jeg prøvede lige at teste det lidt, ved at fjerne alle nyhederne i i tabellen. Hvis der ikk er nogen rækker i tabellen så udskrives Oktober 2006 ikke. Det skal det. Men ikke som et link
03. oktober 2006 - 21:29
#62
Sker det da nogensinde at der ikke er nogen rækker i tabellen?
03. oktober 2006 - 21:34
#63
Det kan det. Lad os sige det bliver den 1. november. men der først bliver postet noget den 5. november. Så kan november først ses på listen d. 5.
03. oktober 2006 - 21:39
#64
Men har du da ikke allerede mindst en række for oktober i tabellen?
03. oktober 2006 - 21:50
#65
Jo det har jeg. Dvs hvis der bare er et eller andet i tabellen så vil det altså virke på den rigtige måde? Jeg kan jo ikke rigtig teste det før det bliver den 1. nov ;). Læg et svar nielle og iss.
03. oktober 2006 - 22:59
#66
Det er bestemt ikke fordi at man ikke kan kode det, men hvis det er kode som aldrig bliver brugt fordi at omstændighederne ikke er til det, så er det jo lidt noget spildt arbejde. :^)
03. oktober 2006 - 23:50
#67
Nej det rigtig nok. Tak for hjælpen :) Venter lige til i morgen på iss, og ser om han smider et svar.
04. oktober 2006 - 00:10
#68
Så skal du vente meget længere end til i morgen... jeg samler ikke...
04. oktober 2006 - 00:25
#69
Hovsa.. jeg har fundet en fejl. Den udskriver November 2006 istedet for Oktober 2006. Kan du rette det?
04. oktober 2006 - 00:57
#70
$monthName[$month-1] ville nok gøre det...
04. oktober 2006 - 01:22
#71
Hvor henne? Det står jo et par steder.
04. oktober 2006 - 03:00
#72
Så ret: $monthName = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); til: $monthName = array("", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
04. oktober 2006 - 08:22
#73
Det undre mig nu at den skulle vise en forkert måned. month() giver 10 for datoer i november, og det stemmer pænt overens med at have månedsnavnene i et 0-indekseret array.
04. oktober 2006 - 13:30
#74
Jeg siger tak for hjælpen, det virker nu :)
Vi tilbyder markedets bedste kurser inden for webudvikling