webForumDet fria alternativet

Göra forum? Hjälp! #2

PHP

12 svar · 371 visningar · startad av Kenchu

Medlem sedan apr. 2004113 inlägg
Frågan#1

Skrev tidigare en tråd där jag behövde hjälp med att göra ett forum. :) Jag fick svar på de flesta av mina frågor, men nu när jag arbetar med ett lite mer seriöst forum behöver jag hjälp igen.

Först av allt, och frågan jag aldrig riktigt fick svar på:

hur skall huvudinlägg och svarsinlägg leva i harmoni med varandra? Dvs, hur skall detta med tabeller fungera? I min förra lösning avände två tabeller för detta: huvudinläggstabell och svarstabell. Men jag gillar inte den lösningen, och som jag förstått det borde det gå att ha båda i en och samma tabell. Men hur fungerar det? På forumets huvudsida, vad ska man skriva i MySQL-frågan för att endast rita ut huvudinläggen? Vad är det som karakteriserar huvudinläggen? Hur har ni gjort med era forum, eller hur skulle ni göra?

Det andra, som jag antar är relativt enkelt, är det här med tid:

Att skriva ut datetime direkt från databasen ser inte särskilt snyggt ut. Hur ska man göra för att få det att se snyggare ut, dvs ändra om att det kanske står 14:36 04/02/06 istället för 2004-02-6 14:36?

Kan eventuellt komma upp med fler frågor. :)

Tacksam för svar!

Medlem sedan juni 20034 013 inlägg
#2

Angående svarsinlägg, ha en kolumn i tabellen som talar om vilket id inlägget som det är svar på har. Finns det inget värde i den kolumnen så är ju inlägget inget svar, utan ett huvudinlägg.

Till datumutskriften: det finns en funktion som heter substr som du kan använda för att plocka ut delar av en sträng:
http://se.php.net/substr

Medlem sedan apr. 2004113 inlägg
#3

Ah, okay. Jag tänkte mig detta, men tyckte det var så flummigt, och att det borde finnas andra lösningar. :) Alltså:

SELECT things FROM table WHERE 2nd_id='0'

Något i den stilen?

Ska läsa direkt om tiden. Tack!

EDIT

-----------------------------------------------------------------

Så här blev det:

	$year = substr("{$line["date"]}", 2, -15); 
	$month = substr("{$line["date"]}", 5, -12); 
	$day = substr("{$line["date"]}", 8, -9); 
	$hour = substr("{$line["date"]}", 11, -6);
	$sec = substr("{$line["date"]}", 14, -3);
	
	echo $year. "/". $month. "/". $day. " at ". $hour. ":". $sec;

Tackar tackar :).

-----------------------------------------------------------------

En till fråga! Hur gör man sticky threads, dvs trådar som jämt håller sig på toppen i forumet?

Medlem sedan juni 20006 031 inlägg
#4

Kenchu skrev:

En till fråga! Hur gör man sticky threads, dvs trådar som jämt håller sig på toppen i forumet?

Ha en kolumn i tabellen med trådar som heter t.ex sticky.
När du väljer att en tråd ska vara "sticky" så uppdaterar du kolumnen och sätter ett värde på kolumnen sticky.
När du hämtar trådarna i forumet så hämtar du först de som har ett värde på sticky och sedan övriga.

Hoppas att jag var tydlig nog. :)

Medlem sedan apr. 2004113 inlägg
#5

Jodå, det var du. Jag har även tänkt på det där innan, men vet inte riktigt hur jag skall uttrycka det i query-satsen. Går det att göra båda sakerna i en och samma fråga, eller krävs det två satser?

Medlem sedan juni 20006 031 inlägg
#6

Ja, det går att sortera efter båda.
SELECT * FROM tabell ORDER BY sticky, id DESC
Sorterar först efter sticky och sedan id

Medlem sedan apr. 2004113 inlägg
#7

ah, coolt. Grundläggande saker jag ej lärt mig. :) Tack tack!

Medlem sedan mars 2000263 inlägg
#8
$year = substr("{$line["date"]}", 2, -15); 
    $month = substr("{$line["date"]}", 5, -12); 
    $day = substr("{$line["date"]}", 8, -9); 
    $hour = substr("{$line["date"]}", 11, -6);
    $sec = substr("{$line["date"]}", 14, -3);
    
    echo $year. "/". $month. "/". $day. " at ". $hour. ":". $sec;

Fast det där tycker jag inte var en särskillt bra lösning. Det egentliga problemet var ju att du ville ha datumet i ett annat format, så varför inte använda PHP-funktionen date() som fixar det?

$timestamp = strtotime($line["date"]); //gör om till ett UNIX timestamp
echo date("Y/m/d at H:i", $timestamp); //skriv ut datum
Medlem sedan apr. 2004113 inlägg
#9

gah, och jag som just pillat med en jättecool funktion som skrivet ut månder och skit. >_< Måste testa det här också. :) Brb.

Medlem sedan mars 2000263 inlägg
#10

oj, tryckte fel, råkade citera mitt eget inlägg...

Medlem sedan apr. 2004113 inlägg
#11

aah, det var ju som faen. >_< Har suttit och pillat med detta:

function normalize($date) {
	$year 	= substr("$date", 0, -15); 
	$month 	= substr("$date", 5, -12); 
	
		if ($month == 1) {
			$month = "January";
		} else if ($month == 2) {
			$month = "February";
		} else if ($month == 3) {
			$month = "Mars";
		} else if ($month == 4) {
			$month = "April";
		} else if ($month == 5) {
			$month = "May";
		} else if ($month == 6) {
			$month = "June";
		} else if ($month == 7) {
			$month = "July";
		} else if ($month == 8) {
			$month = "August";
		} else if ($month == 9) {
			$month = "September";
		} else if ($month == 10) {
			$month = "October";
		} else if ($month == 11) {
			$month = "November";
		} else if ($month == 12) {
			$month = "December";
		}
	
	$day 	= substr("$date", 8, -9); 
	
		if (substr("$date", 9, -9) == 1) {
			$ending = ":st";
		} else if (substr("$date", 9, -9) == 2) {
			$ending = ":nd";
		} else if (substr("$date", 9, -9) == 3) {
			$ending = ":rd";
		} else if (substr("$date", 9, -9) == 4 || substr("$date", 9, -9) == 5 || substr("$date", 9, -9) == 6 || substr("$date", 9, -9) == 7 || substr("$date", 9, -9) == 8 || substr("$date", 9, -9) == 9  || substr("$date", 9, -9) == 0) {
			$ending = ":th";
		}
		
		if (substr("$date", 8, -10) == 0) {
			$day = substr("$date", 9, -9);
		} else if (substr("$date", 8, -10) == 1) {
			$ending = ":th";
		}
	
	$hour 	= substr("$date", 11, -6);
	$min 	= substr("$date", 14, -3);

	$date = $day. $ending. " of ". $month. " ". $year. ", at ". $hour. ":". $min;
	
	return $date;
}

Så fanns den där enkla saken istället. :P

Medlem sedan apr. 2004113 inlägg
#12

Varför blir det konstigt utan strtotime? Det som skrivs på php.net är ju helt skumt.

Medlem sedan okt. 20023 030 inlägg
#13

Kenchu skrev:

Varför blir det konstigt utan strtotime? Det som skrivs på php.net är ju helt skumt.

För att utan strtotime är datumet fortfarande en sträng och meningen är att det ska vara ett datum. ;)

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)