Avatar billede beerton Nybegynder
21. februar 2002 - 15:36 Der er 11 kommentarer og
1 løsning

svar paa nyhed

Hvis jeg gerne vil have at brugerne skal kunne svare paa en nyhed, hvordan skal mysql-db saa laves.
og hvordan skal scriptet se ud.
Avatar billede beerton Nybegynder
21. februar 2002 - 15:43 #1
Mit nyhedsscript ser saadan ud

<?
$foresp = mysql_query("select id, date, author, country, headline, short, text, source
from news where id = '$id'");
while($data = mysql_fetch_array($foresp)){
echo "${data["date"]} - by ${data["author"]}<hr width=330><h2>${data["headline"]}</h2><p>";
}
?>
</b>

<?
$foresp = mysql_query("select id, date, author, country, headline, short, text, source
from news where id = '$id'");
while($data = mysql_fetch_array($foresp)){
echo "<h3>${data["short"]} </h3>";
echo "<p>${data["text"]} </p>";
echo "<p><i>Source: ${data["source"]}</i></p>"; 
}
?>
Avatar billede fbb Nybegynder
21. februar 2002 - 15:44 #2
altså så bruger kan skrive kommentar til nyheden?
hvis det er det. skal du ha fat i noget id og så en skrive funketion.. som kun skriver i db [kommentar] og når du skriver nyhed skriver du i alle de andre felter... undtal kommentar.. skulle være sådan!! (tror jeg vil forsøge på mit egen så kan jeg melde tilbage om det er rigtigt det jeg siger)
Avatar billede muddi Praktikant
21. februar 2002 - 23:02 #3
Du kan lave noget med relationer ... Har ikke lige tid til at forklare det nu, men det er en mulig måde!
Så har du én tabel, som indeholder alle oplysningerne, mens der er nogen andre tabeller, som kun indeholder de kommentarer der er skrevet til hver enkelt nyhed!
De to tabeller hænger så sammen med deres keys. Jeg har ikke prøvet at lave det i mySQL, men jeg er næsten 100% på at det kan lade sig gøre!

/Muddi
Avatar billede muddi Praktikant
21. februar 2002 - 23:13 #4
Dine to tabeller skal have følgende felter:

tbl_news:
  id
  date
  author
  country
  headline
  short
  text
  source

tbl_comments:
  id
  relation_id    # skal være lig med news.id
  date
  author
  commenttext

Når en bruger så skriver en kommentar til nyhed med id-nummer 887, så bliver den gemt i tbl_comments med id = 1 og relation_id = 887

Håber at du forstod noget af det :o)

Relationsdatabaser er noget af det sejeste i verden!

/Muddi
Avatar billede muddi Praktikant
21. februar 2002 - 23:14 #5
Rettelse!
>> relation_id    # skal være lig med tbl_news.id
Avatar billede muddi Praktikant
21. februar 2002 - 23:21 #6
Jeg kan nok godt lave en sql-sætning, som henter kommentarerne fra en tabel ind på din side, så du kan vise kommentarerne under nyheden :)

Har bare ikke tid til det lige nu, selvom jeg synes at dit spm. er utrolig interessant!

/Muddi
Avatar billede muddi Praktikant
21. februar 2002 - 23:28 #7
Hvis du er god til SQL kan du også læse lidt mere om det her. Det er ikke så svært som det måske umiddelbart ser ud!

http://www.mysql.com/doc/e/x/example-Foreign_keys.html
Avatar billede muddi Praktikant
22. februar 2002 - 00:27 #8
Her er der noget SQL, som skulle kunne bruges. Det er muligt at det skal rettes lidt til, men du kan altid spørge, hvis du er i tvivl om noget.

/* Opretter en tabel, med dine nyheder */
CREATE TABLE tbl_news (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    date TIMESTAMP(14) NOT NULL,
    author TINYTEXT NOT NULL,
    country TINYTEXT NOT NULL,
    headline TINYTEXT NOT NULL,
    short TINYTEXT NOT NULL,
    source TINYTEXT NOT NULL,
    PRIMARY KEY (id)
);

/* Opretter en tabel med kommentarer */
CREATE TABLE tbl_comments (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    date TIMESTAMP(14) NOT NULL,
    author TEXT NOT NULL,
    comment TEXT NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES tbl_news,
    PRIMARY KEY (id)
);

/* Indsætter data i de to tabeller */
INSERT INTO `tbl_news` (`id`, `date`, `author`, `country`, `headline`, `short`, `source`) VALUES ('', NOW(NULL), 'Morten Henrichsen', 'Denmark', 'Min første nyhed', 'Dette er mit første indlæg i nyhedsdatabasen. Du kan let kommentere det.', 'www.halstania.dk');
INSERT INTO `tbl_comments` (`id`, `date`, `author`, `comment`, `owner`) VALUES ('', NOW(NULL), 'Mads Jensen', 'Dette er min kommentar til Mortens tekst', '1');

/* Forespørgsel, som vælger kommentarer til nyhederne */
SELECT c.* FROM tbl_news n, tbl_comments c
WHERE n.author LIKE 'Morten%'
AND c.owner = n.id
Avatar billede muddi Praktikant
22. februar 2002 - 00:28 #9
Hvis jeg også skal lave et script til dig, så må du smide nogen flere points på bordet :o)
Avatar billede muddi Praktikant
22. februar 2002 - 00:37 #10
fbb >> Det er ikke en holdbar løsning at have det hele liggende i den samme tabel. Nyheder og kommentarer bør være adskilt i to tabeller.
Det er styrken ved relationsdatabaser! :o)

/Muddi
Avatar billede hathor Nybegynder
22. februar 2002 - 13:20 #11
joda muddi det er det ..

Jeg har bare en tabel, med autoid, parentid, dato, overskrift, tekst, og forfatter. Hvis nogen skriver et top indlæg er parentid sat til 0 og autoid får en værdi. Hvis nogen svarer på et topindlæg får deres svar parent id der svarer til topindlæggets autoværdi, og overskrift bliver godt nok sat på folks svar men det bliver sat med topindlæggets overskrift og bliver ikke udskrevet der hvor jeg viser alle posts ..

Det er så afgjort holdbart at have det hele i samme tabel, det er noget totalt bøvl at have det i flere tabeller.
Avatar billede muddi Praktikant
22. februar 2002 - 15:35 #12
Det er nu ellers en klar anbefaling i alle de SQL og databasebøger jeg har læst, at man deler det hele op.
Det bruges også, hvis man nu vil have en række personer, hvis indbetalinger skal registreres.
I en sådan situation kan man godt klare sig, ved at løse det på din måde, men det ville spare en masse tomme celler rundt omkring i databasen!

Det smarte ved relationer er her, at man kan oprette to tabeller med:

tbl_personer:
  autoid
  navn
  adresse
  postnrby
  telefon

tbl_payments:
  autoid
  parentid
  amount
  date

Det er nemmere at have to tabeller på den måde, end at lave én tabel med følgende struktur:

tbl_personindbetalinger:
  autoid
  parentid
  navn
  adresse
  postnrby
  telefon
  amount
  date
 
Da der så vil være en masse tomme celler i navn, adresse og postnrby (nemlig alle de steder hvor folks indbetalinger står).

Din løsning er ikke holdbar, når du skal til at udbygge systemet. Det bliver hurtigt for tungt og ufleksibelt at flytte rundt med og ændre på :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester