oppbygging av gjestebok

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009

Heisann, kunne du forklart strukturen til oppbygging av en gjestebok for meg (EDIT: Hjemmeside)?

Har lyst til å prøve å bygge opp en - eller tips om en guide som er litt sånn up-to-date og "verdig".

 

har satt opp en database med denne tabellen foreløpig:

  • id, dato, navn, epost, overskrift, melding

 

så har jeg naturligvis satt opp en .html-form samt ett script som laster opp input til databasen da. (INSERT INTO...)

Datoen har jeg lagt opp slik:

    <input name="date" id="date" type="hidden" value="<?php echo date("y-m-d") ?>" />

Men nå får jeg lastet opp meldiger til databasen. sant. Så er det jo å få hentet disse ut kontinuerlig da.

Noen oppskrift på fremgangsmåte / steg på det?

med hilsen
Thomas Kile

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Fikk bygget opp en enkel en

Fikk bygget opp en enkel en da. du kan se den her: GDC - gjestebok. For mannen til søstra til samboeren min (hehee)

Men en ting som kunne vert greit hadde vert å kunne svare på hverandres innlegg. Noe slik som her. At man kan klikke på svar, og så legger innlegget seg en smule indentert rett under det aktuelle innlegget.

Hvordan må noe slikt settet opp i en database?

Mye relasjonstabeller eller?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Fin gjestebok!

Gjesteboka du har laget ser fin-fin ut den da. Unnlot å svare med vilje, fordi jeg visste du kom til å klare det på egenhånd. Du kan jo både legge inn og hente ut data fra MySQL ved hjelp av PHP nå, så dette var nok ganske trivielt for deg :)

Du kan lage et eget felt i tabellen for gjestebokinnlegg som heter replyID f.eks., og hvis et gitt gjestebokinnlegg er en reply til et eksisterende så kan du putte IDen til det innlegget som besvares der.

Indendering kan gjøres ved å bruke en class på et element som wrappes rundt svaret. Du kan velge å sette denne på alle elementer med replyID ved hjelp av en if-statement for eksempel :)

PS: Har klart å stumpe røyken nå! :D

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Forsøkte meg en stundt her.

Forsøkte meg en stundt her. Men får det ikke til faktisk.

Når jeg legger inn ett svar da, så får jo svaret en egen ID. sant.

Så når jeg skriver følgende da: -  $res = mysql_query("SELECT * FROM guestbook") - så kommer jo alle innleggene frem. Og svaret til en innlegg skal jo ikke printes som en egen, men kun som ett indentert svar til det innlegget det svares på.

Hvordan får jeg begrenset dette?

Forsøkte meg på denne:

    $res = mysql_query("SELECT * FROM guestbook WHERE reply_id = 'NULL'")

Og det filtrerer jo naturligvis alle innleggene hvor "ʼreply_id" ikke er satt enda.

Men lengre ned i scriptet, når jeg ville printe svaret, så var det jo allerede filtrert bort.

Så det jeg innbiller meg er at jeg må sette inn en if-statement som filtrere bort alle "svarene" fra start-innelggene, og så sette opp enda en if-statement inni printingen av hvert innlegg som sier at: - hvis ett svar er gitt, så print det tilhørende svaret her. basert på hovedID -. men står fast i fremgangsmåte akkruat nå.

Kunne du kommet med noen tips?

EDIT! kom til å tenke på en sak mens jeg skrev her:

må jeg kansje kjøre et veeeldig langtscript i en while-loop, som:

 

if (empty(get['reply_id']))

{ printe innlegg uten svar }

else { printe innlegg, pluss eventuelle svar }

 

?

med hilsen
Thomas Kile

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Lover deg, det har vært mange

Lover deg, det har vært mange irriterende timer med masse endeløs kvelder... men den som slutter å forsøke, den vil aldri få vite. "It's not over until I win".

ja mange takk. kun fått hevet den opp så det er bruklig. design etc. kommer etterhvert...

 

Hmmm, og så joining av tabeller etc. da. Men om flere svarer på eksakt samme innlegg. hvordan vil det fungere da?

EDIT: Nei, mente, "joining" av rader på en måte...

Og gratulerer så mye med den røyken! Det er stekt av deg!

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Ikke relasjonstabell

Nei, du trenger ikke joine hvis du gjør det slik jeg skrev. Da lagrer du bare IDen til innlegget det svares på i den samme tabellen. Du kan hente ut alle innleggene i én query og sortere dem med PHP.

Eventuelt kan du hente ut alle innleggene som IKKE er svar på andre innlegg, og når du looper gjennom dem kan du se etter innlegg som er svar på hvert enkelt ved å kjøre en ny query. Førstnevnte er mest effektivt though.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
men en kjapp sak, sikkert.

men en kjapp sak, sikkert. (mulig jeg har spørt før her, men fant ikke igjen svaret atm)

Jeg har sånn overskrift. sant. Akkurat nå er den påkrevd. Men hadde vert greit å hatt det slik som her. At om den ikke ble fyllt ut, så henter den ut de første ordene eller bokstavene om feltet ikke er utfylt.

 

Forsøkte meg på å sette opp en funksjon. men fikk det ikke til.

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Emne ikke satt

Sjekk lengden av feltet med strlen($title), hvis den er 0 (dvs, at det ikke er satt noen tittel) så bruker du substr() på brødteksten for å luke ut x antall tegn fra hovedteksten.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
ville bare si att dette

ville bare si att dette fungerer helt supert:

<?php

if (strlen($_POST['topic']) < 1)

  {

    $topic = mysql_real_escape_string(substr($_POST['msg'],0,32));

  }

 

  else

  {

    $topic = mysql_real_escape_string($_POST['topic']);

  }

?>

 

Forsøkte meg på å sette det hele i en funksjon, men da fikk jeg ikke noe respons...

Mulig jeg gjorde det feil. så om du kan, så hadde det vert gøy å se ett eksempel på det. da jeg gjerne skulle ha validert den ytterligere...

med hilsen
Thomas Kile

Svar på forumemnet

(If you're a human, don't change the following field)
Your first name.
Innholdet i dette feltet blir holdt privat og vil ikke bli vist offentlig.