webForumDet fria alternativet

Sortera nyheter efter månader

16 svar · 418 visningar · startad av raki

rakiMedlem sedan jan. 2003137 inlägg
#1

Lite dålig rubrik, hoppas ni fattar vad jag menar nu :)

Jag skulle vilja sortera nyheter efter månader samt år.

Jag har är nybörjare på php så jag är tacksam för all hjälp.

[edit]
Man ska kunna välja från en lista vilken månad som ska visas.
Ett litet arkiv alltså.

QonosMedlem sedan sep. 2000438 inlägg
#2

hur långt har du kommit?

rakiMedlem sedan jan. 2003137 inlägg
#3

Jag har ett fungerande script nu som jag kan lägga till nyheter samt visa dem.

rakiMedlem sedan jan. 2003137 inlägg
#4

Ingen som vet hur man gör och kan hjälpa mig? :(

cyprysMedlem sedan dec. 20003 563 inlägg
#5

SQL = "SELECT * FROM tbl_nyheter WHERE month(col_datum) = " & StrMonth

rakiMedlem sedan jan. 2003137 inlägg
#6

Sorterar den inte bara efter månaderna där?

Jag vill ha ett arkiv där nyhetera sparas i kategorier (månader)

rakiMedlem sedan jan. 2003137 inlägg
#7

Frågar igen.

nån som kan hjälpa mig, eller vet nåt ställe där det finns kod på sånt här.

rakiMedlem sedan jan. 2003137 inlägg
#8

Jag vill alltså kunna visa nyhets poster som är skrivna en viss månad med hjälp av en drop down meny eller vanliga text länkar.

MatteMedlem sedan aug. 20002 975 inlägg
#9

Testa det här.

I ditt formulär:

<form action="skript.php" method="get">
<select name="StrMonth">
<option value="2002-08">augusti 2002</option>
<option value="2002-09">september 2002</option>
</select>

SQL-frågan

$sql = "SELECT * FROM tbl_nyheter WHERE DATE_FORMAT(col_datum,'%Y-%m')={$_GET['StrMonth']}";

Då ska datumkolumnen vara av formaten DATETIME eller TIMESTAMP.

rakiMedlem sedan jan. 2003137 inlägg
#10

Får det inte riktigt att fungera.
Kanske är för att inte datumkolumnen är som du säger.
Hur ändrar jag det?

Ser detta rätt ut annars:

<table>
<?php 	
$datum = date("Y-m-d");
$sql = "SELECT * FROM news WHERE DATE_FORMAT   (col_datum,'%Y-%m')={$_GET['StrMonth']}";
$results = mysql_query($sql);
	
while ($rows = mysql_fetch_array($results)){
$id = $rows['id'];
$datum = $rows['datum'];
$name = $rows['name'];
$email = $rows['email'];
$rubrik = $rows['rubrik'];
$news = nl2br (strip_tags ($rows['news'], '<a><b><i><u>'));?>
	
<tr>
  <td><?=$datum?> | <?=$rubrik?></td>
</tr>
<tr>
  <td><?=$news?><br>By:<a href="mailto:<?=$email?>"><?=$name?></a></td>
</tr>
</table>
<?php } ?>
MatteMedlem sedan aug. 20002 975 inlägg
#11

Ser att vi får ändra lite i sql-frågan. Tror den bör vara så här istället:

$sql = "SELECT * FROM news WHERE DATE_FORMAT(col_datum,'%Y-%m')='{$_GET['StrMonth']}'";

Hur har du sparat i col_datum? I vilket format?

rakiMedlem sedan jan. 2003137 inlägg
#12

Hur menar du med sparat col_datum?

Jag får detta felmeddelande:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/tomas/public_html/oldnews.php on line 35

MatteMedlem sedan aug. 20002 975 inlägg
#13

Då får vi prova lite felsökning. Vad får du för utfall av detta:

$sql = "SELECT * FROM news WHERE DATE_FORMAT(col_datum,'%Y-%m')='{$_GET['StrMonth']}'";
$results = mysql_query($sql) or die("SQL: $sql <br>".mysql_error());

Är fältet col_datum av formatet DATETIME eller TIMESTAMP så ska det funka. Om jag minns rätt även med VARCHAR om du lagt in det som '2003-02-07 00:00:00'.
Har du däremot VARCHAR och lagt in tiden typ '7/2-2003' så kan du få problem.

Hur ser ditt formulär ut ?

Hur ser koden ut där du sparar till din databas ?

rakiMedlem sedan jan. 2003137 inlägg
#14

Fick detta felmeddelande:
SQL: SELECT * FROM news WHERE DATE_FORMAT(col_datum,'%Y-%m')='2002-08'

Koden för att spara i databasen:

<?php }elseif($action == "save"){
$datum = date("Y-m-d"); 
$sql = "INSERT INTO news (datum, name, email, rubrik, news) VALUES ('$datum', '$name', '$email', '$rubrik', '$news')";
$results = mysql_query($sql);?>

Datum i databasen ser ut såhär:
datum timestamp(14) NOT NULL,

Johnny RönnbergMedlem sedan dec. 20021 061 inlägg
#15

:bire :bire

MatteMedlem sedan aug. 20002 975 inlägg
#16

raki skrev:

Fick detta felmeddelande:
SQL: SELECT * FROM news WHERE DATE_FORMAT(col_datum,'%Y-%m')='2002-08'

Du måste ha fått ytterligare en rad efter denna?

Har du någon kolumn ytterligare som heter col_datum?
Annars så är det kolumnen datum du ska använda i din sql_fråga:

$sql = "SELECT * FROM news WHERE DATE_FORMAT(datum,'%Y-%m')='{$_GET['StrMonth']}'";

Ett TIMESTAMP behöver du inte lägga in värde på i tabellen, detta sker automatiskt. Skulle du ändå göra det så gör det med med now(), eller om du vill använda date utanför sql-satsen, använd samma format som TIMESTAMP:

$datum = date("YmdHis");
rakiMedlem sedan jan. 2003137 inlägg
#17

Tack Matte!

nu funkar allt som det ska

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)