Jump to content
php.lv forumi

Posts and answers vienā tabulā


GARAIS

Recommended Posts

Sveiki man te maza problēmiņa cerēšu uz jūsu atsaucību.

Tātad.

Nevaru izdomāt kā sataisīt lai posts un answers glabājas vienā table.

Piemērs:

 

                                   Posts

                                       Answer1

                                       Answer1

                                           Answer2

                                               Answer3

                                               Answer3

                                           Answer2

                                       Answer1

                                   Posts

                                   Posts

                                   Posts

 

Manas tabulas struktūra ir tāda. id,parent_id,topic_id,uid,post,date

P.S. uid = user_id

 

Paldies par atsaucību! :)

 

 

Link to comment
Share on other sites

parenti_id == 0, ja tas ir post-s, > 0, ja answer-s

Bet ja es piemēram sataisu parent_id kā posts = 0, answers = 1,2,3. tad kā noteikt zem kura posta tiek rakstīta atbilde? bet piemēram nevarētu answerus sataisīt piemēram 2+post_id un lasīt kā substr(parent_id, 0, 1) <-- tas ir kā answera id kurā kolonnā rādās, un ja piem post_id ir 6 cipraru id, tad (parent_id, 1, 6) <--- tas būs kā post id. bet jautājums tāds vienā querijā nevar to visu sataisīt lai nebūtu jāvelk ārā vēl 3 while() funkcijas vienu iekš otras?

Link to comment
Share on other sites

Katram postam ir id (AI) un atbilde iet zem attiecīgā posta. Atbilde būs parent_id > 0, un pats posts būs parent_id 0.

 

Piemēram:

id 1, parent_id 0, body "Hello world" būs attiecīgi pirmais ieraksts, kuram nav parents, līdz ar to, tas ir posts.

Tālāk visi posti, kam parent_id būs 1 attiecīgi ies zem šī posta, kā atbilde šim postam.

id 2, parent_id 1, body "Foo bar"

Kur attiecīgi būs atbilde postam 1. 

Turpinājumā parent_id 2 būs atbilde attiecīgi "Foo bar" postam. and so on.

 

ID katram ir unikāls, un parent_id ir attiecīgi zem, kura posta ir šī atbilde, ja parent_id ir 0 tad tā nav atbilde, bet posts.

Edited by Kemito
Link to comment
Share on other sites

Katram postam ir id (AI) un atbilde iet zem attiecīgā posta. Atbilde būs parent_id > 0, un pats posts būs parent_id 0.

 

Piemēram:

id 1, parent_id 0, body "Hello world" būs attiecīgi pirmais ieraksts, kuram nav parents, līdz ar to, tas ir posts.

Tālāk visi posti, kam parent_id būs 1 attiecīgi ies zem šī posta, kā atbilde šim postam.

id 2, parent_id 1, body "Foo bar"

Kur attiecīgi būs atbilde postam 1. 

Turpinājumā parent_id 2 būs atbilde attiecīgi "Foo bar" postam. and so on.

 

ID katram ir unikāls, un parent_id ir attiecīgi zem, kura posta ir šī atbilde, ja parent_id ir 0 tad tā nav atbilde, bet posts.

Varētu lūdzu sniegt kādu query piemēru uz šo? Es kkā pa 50% neiebraucu :(

Link to comment
Share on other sites

 

Ar rekursiju man viss kārtībā! lieta iet par to lai atbildes rādās zem noteiktā posta.

$posts_query = ......... WHERE pid = 0
$i=0;
while($i<$mysql->NumRows($posts_query)){
$i++;
bla bla bla bla 1

$posts_query2 = ......... WHERE pid = 1, answer_id = $posts['id']
$ii=0;
while($ii<$mysql->NumRows($posts_query2)){
$ii++;
bla bla bla bla2

$posts_query3 = ......... WHERE pid = 2, answer_id = $posts2['id']
$iii=0;
while($iii<$mysql->NumRows($posts_query3)){
$iii++;
bla bla bla bla3

$posts_query4 = ......... WHERE pid = 3, answer_id = $posts3['id']
$iii=0;
while($iii<$mysql->NumRows($posts_query4)){
$iii++;
bla bla bla bla4
}
}
}
}

Man to visu taisīt pēc šī principa vai arī ir kāda vienkāršāka metode?

 

 

Edited by GARAIS
Link to comment
Share on other sites

1. kverijs - select data from posts where parent_id = 0 order by date asc[ limit x]

2. prepared statement - select data from posts where parent_id = ? order by date asc

 

1. kveriju izpilda uzreiz, izvada ciklā. Šī cikla iekšpusē pēc katra posta izpilda 2. prepared statement ar konkrētā posta ID kā parent_id. Ja gribi vairākus līmeņus atbilžu - rekursija © marcis. Iekapsulē to prepared statement izpildi un izvadi funkcijā, un viss čikiniekā.

 

P.S. @daGrevis - nice.

Edited by jurchiks
Link to comment
Share on other sites

Vēl kategorijas un apakškategorijas var ielikt tajā pašā tabulā, ja cat_id = 0 tad kategorija, ja cat_id = 1, tad apakškategorija un tad vēl mēs varam ielikt šeit statiskas lapas, ja page = 1 [...]

 

 

OP, es saprotu, ka tev vajag, bet šī ir ļoti slikta ideja. Izveido divas tabulas - posts un answers. Posts ir tēmu saraksts, answers - atbildes un atbildes atbildēm. Nevajag sarežģīt vienkāršas lietas un denormalizēt normalizējamus datus. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...