1. leht 1-st

Jama koodijupiga:S

Postitatud: 02.12.2010, 09:26
Postitas as1238
Et siis on jama koodiga mis näeb välja selline:
[php] $sql = $database->query('SELECT a.`dynamic_page_id`, a.`headline`, a.`comments_allowed`, (SELECT COUNT(*) FROM `nagaro_comments` WHERE `attach_to` = \'dynamic_pages\' + a.`dynamic_page_id`) AS `comments` FROM `nagaro_dynamic_pages` AS a ORDER BY '.$order.' '.$pages->return_limit()); [/php]
Et siis põhjendus ka nüüd:
Mysql andmebaasis on 2 erinevat tabelit 1 on nagaro_comments teine nagaro_dynamic_pages.
Probleem on selles, et see koodijupp näitab kommentaaride arvu 0 kuigi kommentaare on 3.
Teeme nüüd näite.. Attach_to-s on (3) dynamic_pages1 (1 on lehe id, mis on nagaro_dynamic_pages tabelis ja dynamic_page_id reas) nagaro_dynamic_pages reas on dynamic_page_id mis on 1. nüüd ta peaks arvutama kokku mitu sellise id-ga (dynamic_pages1) nagaro_comments-is on..peaks olema 3 aga 0. Loodan, et oli arusaadav
Natukene pilte ka
Pilt
Pilt
pealeht mis on id 1. seal on 0 mis peaks olema 3.
Pilt
Kas keegi tore oskab ulatada abistava käe ja öelda mis viga?

Postitatud: 02.12.2010, 11:48
Postitas aldo
[php]<?php $sql = $database->query('SELECT a.`dynamic_page_id`, a.`headline`, a.`comments_allowed`, (SELECT COUNT(*) FROM `nagaro_comments` WHERE `attach_to` = \'dynamic_pages\' + a.`dynamic_page_id`) AS `comments` FROM `nagaro_dynamic_pages` AS a ORDER BY '.$order.' '.$pages->return_limit()); ?>[/php]

Ma pakun välja, et see a.`dynamic_page_id` selle koha peal ei saa endale praegu mingit väärtust.

Postitatud: 02.12.2010, 15:51
Postitas as1238
Aga mis nipiga ma saaks anda talle väärtuse?... proovisin ka nii, et tõstsin selle + a.`dynamic_page_id` AS ette aga siis annab lehe id 0 asemele mitte ei tuvasta kui palju kommentaare on:S [glow=red]NII-->[/glow]
[php]$sql = $database->query('SELECT a.`dynamic_page_id`, a.`headline`, a.`comments_allowed`, (SELECT COUNT(*) FROM `nagaro_comments` WHERE `attach_to` = \'dynamic_pages\' `) + a.`dynamic_page_id` AS `comments` FROM `nagaro_dynamic_pages` AS a ORDER BY '.$order.' '.$pages->return_limit()); [/php]

Postitatud: 02.12.2010, 17:18
Postitas viljaste
Ehk piisab, kui string luua CONCAT() funktsiooni abil?

[php]<?php $sql = $database->query('SELECT a.`dynamic_page_id`, a.`headline`, a.`comments_allowed`, (SELECT COUNT(*) FROM `nagaro_comments` WHERE `attach_to` = CONCAT(\'dynamic_pages\', a.`dynamic_page_id`)) AS `comments` FROM `nagaro_dynamic_pages` AS a ORDER BY '.$order.' '.$pages->return_limit()); ?>[/php]

Postitatud: 02.12.2010, 17:37
Postitas as1238
viljaste kirjutas:Ehk piisab, kui string luua CONCAT() funktsiooni abil?

[php]<?php $sql = $database->query('SELECT a.`dynamic_page_id`, a.`headline`, a.`comments_allowed`, (SELECT COUNT(*) FROM `nagaro_comments` WHERE `attach_to` = CONCAT(\'dynamic_pages\', a.`dynamic_page_id`)) AS `comments` FROM `nagaro_dynamic_pages` AS a ORDER BY '.$order.' '.$pages->return_limit()); ?>[/php]
Viljaste aitäh sulle:) Tänu sinule sai probleem lahendatud.

Postitatud: 02.12.2010, 19:29
Postitas priit
Ausalt öeldes arvan, et peaksid oma tabelid pigem üle vaatama:
comment_id -> id
dynamic_page_id -> id
attach_to -> dynamic_page_id
ja pole mingit CONCATi vaja ning tabelid palju puhtamad. Sellest nagaro_ algusest ja dynamic_pages lihtsalt pages asemel ma ei hakka rääkimagi :)
Võib-olla on hea põhjus ...