/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Vise 5 nyeste indlæg.
Fra : Christoffer


Dato : 08-05-05 17:09

Hej!
Jeg har fået lavet mig et forum, og vil nu gerne have skrevet mig et "5
nyeste indlæg" men det volder mig kvaler og gået fuldstændig i stå!
http://www.buur.info/mdk/site

Overstående virker ikke efter hensigten, for den skriver kun hvilke tråde
hvor der skrevet indlæg i. Den skulle gerne skrive hvilke tråde der skrevet
indlæg i senest skrevet rækkefølge.
bruger nedenstående kode.
http://www.pastebin.dk/index.php?show=553

Men jeg må nok forklare hvad det er jeg egentlig laver i koden og hvordan
jeg har lavet forummet.
I min tabel i databasen har jeg en strukter på
id int(11) NOT NULL auto_increment,
header varchar(100) NOT NULL default '',
name varchar(60) NOT NULL default '',
email varchar(60) NOT NULL default '',
date datetime NOT NULL default '0000-00-00 00:00:00',
message text NOT NULL,
parent int(11) NOT NULL default '0',
PRIMARY KEY (id)

Alle tråde og indlæg får en id i samme tabel. Men! Kun tråde for information
i header, og kun indlæg for information i parent.
Dvs. At jeg ud fra parent kan afgøre om rækken i databasen er en tråd
(hovedindlægget) eller et indlæg til tråden.
Hvis parent = 0, er tråden et indlæg.
Hvis parent = X (undtagen 0), er det indlæg.
Hvis x nu svarer til 3, vil det ligge sig som et indlæg til den række som id
= 3, så via parent holder jeg styr på hvilken tråd indlægget hører til.

Har lagt et billede af databasen op. http://www.buur.info/s2a/db.gif

Håber det var forståeligt og at nogen kan hjælpe.

--
Christoffer



 
 
Nicky Precht (10-05-2005)
Kommentar
Fra : Nicky Precht


Dato : 10-05-05 00:03

Christoffer wrote:
> Hej!
> Jeg har fået lavet mig et forum, og vil nu gerne have skrevet mig et "5
> nyeste indlæg" men det volder mig kvaler og gået fuldstændig i stå!
> http://www.buur.info/mdk/site
>

Mmm.. jeg er på vej i seng, men et hurtigt bud må være, at du søger
efter max dato og laver en limit på 5

/Nicky

Christoffer (10-05-2005)
Kommentar
Fra : Christoffer


Dato : 10-05-05 16:26



>> Hej!
>> Jeg har fået lavet mig et forum, og vil nu gerne have skrevet mig et "5
>> nyeste indlæg" men det volder mig kvaler og gået fuldstændig i stå!
>> http://www.buur.info/mdk/site
>>
>
> Mmm.. jeg er på vej i seng, men et hurtigt bud må være, at du søger efter
> max dato og laver en limit på 5
Det var også sådan mit første forsøg gik på, men jeg endte op med samme
problem, istedet fot indlæggets dato, blev de sortereret efter trådens dato.



Zilla (10-05-2005)
Kommentar
Fra : Zilla


Dato : 10-05-05 20:25

Christoffer wrote:
[snip]
> Det var også sådan mit første forsøg gik på, men jeg endte op med samme
> problem, istedet fot indlæggets dato, blev de sortereret efter trådens dato.

Jeg har lige et par spørgsmål:

Du vil gerne have vist de tråde som indeholder de fem senest skrevne
indlæg. Er det korrekt?

Hvis ja: hvis en af trådene indeholder to af de fem senest skrevne
indlæg skal denne tråd så vises en gang eller to gange?

Hvis en: skal tråden med det sjette senest skrevne indlæg så også vises?

Zilla.

Christoffer (10-05-2005)
Kommentar
Fra : Christoffer


Dato : 10-05-05 20:34


> Du vil gerne have vist de tråde som indeholder de fem senest skrevne
> indlæg. Er det korrekt?
Ja

> Hvis ja: hvis en af trådene indeholder to af de fem senest skrevne indlæg
> skal denne tråd så vises en gang eller to gange?
Meget gerne 2, det er ihvertfald det optimale.

--
Christoffer



Zilla (10-05-2005)
Kommentar
Fra : Zilla


Dato : 10-05-05 23:53

[snip]

Her er mit forslag:

<?php
$link = mysql_connect("host", "user", "password")
or die("Could not connect : " . mysql_error());
mysql_select_db("db") or die("Could not select database : " .
mysql_error());
//Henter alle indlæg (ikke tråde) fra databasen, de seneste først.
$query = "SELECT * FROM test WHERE parent>0 ORDER BY date DESC";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$array = array();
$i = 0;
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
//If sætning for at sikre at det kun er de fem seneste der kommer med.
if($i < 5) {
//Tjekker om parent er gemt i $array. Hvis den ikke er så
//gem den og forøg $i med en, da der nu er en mere gemt.
//Hvis den er gemt så gør intet, da der så er et nyere
//indlæg i samme tråd.
if(!in_array($row[parent], $array)) {
$array[$row[id]] = $row[parent];
$i++;
//Indsæt evt. kode her.
}
}
}
?>

Herefter er id på indlæggene og tilhørende nummer på parent gemt i
$array med id som key og parent som value. Hvis du skal bruge mere end
id og parent skal du insætte koden hvor kommentaren "Indsæt evt. kode
her." er. Det er her har du nemlig adgang til alle værdier fra databasen.

Zilla.

Zilla (10-05-2005)
Kommentar
Fra : Zilla


Dato : 10-05-05 23:59

Forresten: husk at ændre tabelnavnet fra test til hvad den end hedder.

Christoffer (11-05-2005)
Kommentar
Fra : Christoffer


Dato : 11-05-05 14:53

Jeg må være ærlig! Forstår ikke helt hvad jeg skal gøre videre med koden.
Jeg vil gerne have den til at spytte 5 links ud på siden, men linket skal
henvise til tråden, og ikke indlægget, desuden skal "linket's tekst" være
trådens navn, altså header fra databasen... har brugt nogle timer på det
idag, og giver simpelthen op.
Er det muligt med en forklaring for dummies, eller måske jeg kunne få et
link til en side, eller et simpelt forum jeg kan kigge efter?

--
Christoffer



Zilla (11-05-2005)
Kommentar
Fra : Zilla


Dato : 11-05-05 17:15

Christoffer wrote:
> Jeg vil gerne have den til at spytte 5 links ud på siden, men linket skal
> henvise til tråden, og ikke indlægget, desuden skal "linket's tekst" være
> trådens navn, altså header fra databasen...

Så har jeg ændret lidt i det. Efter hvad jeg kunne se på kildekoden på
din side så er formatet på linkene "/mdk/site/fora/laes.php?id=x" hvor x
er trådens id. Det er det format nedenstående kode returnerer de fem
links i.

<?php
$link = mysql_connect("localhost", "zilla", "surfer")
or die("Could not connect : " . mysql_error());
mysql_select_db("zilla") or die("Could not select database : " .
mysql_error());
$query = "SELECT * FROM test ORDER BY date DESC";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$array = array();
$i = 0;
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
if($row[parent] != 0) {
if($i < 5) {
if(!in_array($row[parent], $array)) {
$array[] = $row[parent];
$i++;
}
}
}
}
foreach($array as $value) {
$query = "SELECT id, header FROM test WHERE id='" . $value . "'";
$result = mysql_query($query) or die("Query failed : " .
mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo "<a href='/mdk/site/fora/laes.php?id=" . $row[id] . "'>" .
$row[header] . "</a><br>"; //Skal måske ændres...
}
?>

Zilla (11-05-2005)
Kommentar
Fra : Zilla


Dato : 11-05-05 17:18

Zilla wrote:
> $link = mysql_connect("localhost", "zilla", "surfer")
> or die("Could not connect : " . mysql_error());
> mysql_select_db("zilla") or die("Could not select database : " .

hehe... hrm... Måske jeg skulle fjerne brugernavn og password fra koden
en anden gang... Tror lige jeg ændrer for en sikkerheds skyld...

Christoffer (11-05-2005)
Kommentar
Fra : Christoffer


Dato : 11-05-05 18:10



> <?php
> $link = mysql_connect("localhost", "zilla", "surfer")
> or die("Could not connect : " . mysql_error());
> mysql_select_db("zilla") or die("Could not select database : " .
> mysql_error());
> $query = "SELECT * FROM test ORDER BY date DESC";
> $result = mysql_query($query) or die("Query failed : " . mysql_error());
> $array = array();
> $i = 0;
> while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
> if($row[parent] != 0) {
> if($i < 5) {
> if(!in_array($row[parent], $array)) {
> $array[] = $row[parent];
> $i++;
> }
> }
> }
> }
> foreach($array as $value) {
> $query = "SELECT id, header FROM test WHERE id='" . $value . "'";
> $result = mysql_query($query) or die("Query failed : " .
> mysql_error());
> $row = mysql_fetch_array($result, MYSQL_ASSOC);
> echo "<a href='/mdk/site/fora/laes.php?id=" . $row[id] . "'>" .
> $row[header] . "</a><br>"; //Skal måske ændres...
> }
> ?>
Det er genialt... mine evner rækker ikke langt nok til at turde rode mig ud
i sådan en kode (endnu)!
Siger ihvertfald 1000tak for hjælpen!!!

Mvh.
Christoffer
(ja, det er nok en god ide at skifte koden ud nu :p)




Zilla (11-05-2005)
Kommentar
Fra : Zilla


Dato : 11-05-05 18:16

Christoffer wrote:
> Siger ihvertfald 1000tak for hjælpen!!!
Det var så lidt.

> (ja, det er nok en god ide at skifte koden ud nu :p)
Er gjort...

Zilla.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste