Autor Zpráva
microfox
Profil *
Resim momentalne problem a to takovy, ze mam tabulku kde mam clanky a kazdy ten clanek ma sve cislo a s tim cislem se mi ukladaj i komentare takze neni problem ke kazdemu clanku vypsat komentare ktere se tykaji pouze toho clanku...

Ted ale potrebuju spocitat k tomu clanku pocet komentaru....Mam na strance zobrazeno prvnich pet clanku a ted ke kazdemu na konci z nich chci mit na jeho konci pocet komentaru...

Tabulka vypada takto:
http://2i.cz/2i/i/4e2c3eba/e796a24d71e0f1376d00d8c96db9ac7d/49dd94be6d.f.png

Potrebuju nakej SQL prikaz a nevim jak ho vymyslet (bohuzel me ted nenapada zadna genialni myslenka)
Potreboval bych aby mi to vypisovalo pocet komentaru (tedy pocet radku) k tomu nejnovejsimu clanku (tedy tomu poslednimu) a je zapotrebi pracovat stim sloupcem clanek...

SELECT * FROM `RS_Diskuse` WHERE (tady bude sloupec clanek) a potrebuju aby to cislo clanku bylo co nejvyssi tedy posledni.... jen nevim jak to zapsat.... Poradil by me nekdo?
microfox
Profil *
SELECT *
FROM `RS_Diskuse`
WHERE clanek =11
LIMIT 0 , 30


Takto vypisu komentare ktere se tykaji clanku 11. Nj ale co kdyz clanek 11 neni nejnovejsi? Co kdyz se uz napsalo dalsich pet clanku a ted je cislo clanku 16? Jak udelam do SQL prikazu aby to hledalo ten nejvyssi clanek? respektive ten nejnovejsi? ted je to mozna vic srozumitelnejsi nez vyse...
Alphard
Profil
Tak teď nevím, co chcete, prvně mluvíte o 5 článcích a poté jenom o jednom.
V obou případech lze použít spojení tabulek
select c.*, count(*) from clanky c left join diskuse d on c.id = d.clanky_id group by c.id
Kdyby stačil jeden článek, bude asi rychlejší poddotaz.
microfox
Profil *
OK, zkusim to jeste jinak formulovat :-)

Mam tabulku...v ni mam clanky....kazdej clanek ma svoje ID takze kdyz napisu novej clanek tak se mu pricte +1 protoze je tam nastaveno AUTO INCREMENT.
v druhy tabulce mam komentare a u kazdyho komentare je ve sloupci clanek cislo clanku ke kteremu ten komentar patri...

Zde je tabulka s clankama: http://imageshack.us/photo/my-images/534/tabulkasclankama.png/
Zde je tabulka s komentarema: http://imageshack.us/photo/my-images/215/vstiek3.png/

no a ja chci ke kazdemu clanku vypisovat kolik je u nej komentaru...
Takze vezmeme treba posledni clanek a u nej chci zobrazit pocet komentaru. Ty ostatni clanky uz si vyresim...Potrebuju vedet jak to bude vypadat u toho prvniho...

<?php
require "db.php"; // pripojeni k databazi

$clanek_html='<table id="slideshow_clanky" >';  
$result = mysql_query("SELECT * FROM RS_Diskuse");
$vycuc_tabulky=mysql_query("select `id`,`nadpis`, concat( substring_index( `clanek` , ' ', 180 ) , '...' )  AS 'clanek' from RS ORDER BY id DESC LIMIT 1");
while($data=mysql_fetch_assoc($vycuc_tabulky))
{
$clanek_html.='<tr><td class="vyska_nadpisu">
<a class="nadpis_clanku_slideshow" href="index.php?page=cely_clanek&amp;id='.$data['id'].'"><b>'.$data['nadpis'].'</b>  </a>
</td></tr>
<tr><td class="text_clanku_slideshow">'.$data['clanek'].'(Komentářů: '.mysql_num_rows($result).');

</td>  </tr>';   
}
$clanek_html.='</table>';
?>
<table><tr><td><?php echo $clanek_html; ?></td></tr></table>


Jak je v kodu videt tak jsem pripojen k dvoum tabulkam zaroven...
Z tabulky RS_Diskuse vypisuji pocet komentaru....zatim mi to vypisuje ale pocet vsech komentaru k te tabulce a nee pocet komentaru vazane k tomuto clanku kterej vypisuju...a to je presne to co potrebuju ;-) Ted je to mozna lepsi na pochopeni snad...
pcmanik
Profil
microfox:
SELECT COUNT(*) AS pocet FROM komentare WHERE clanok = id clanku
microfox
Profil *
ale ja tam nemuzu na pevno zadat id clanku :) to prece nejde...
microfox
Profil *
pcmanik:
nebo aspon furt to v tom nevidim na co se me snazis dovest...
pcmanik
Profil
microfox:
pouzijes id z toho predchadzaujeco dotazu, cize vyuzijes id z toho vycuc tabulky a to vlotiz namiesto id clanku
microfox
Profil *
a to jako takto?
$result=mysql_query("SELECT COUNT(*) AS pocet FROM RS_Diskuse WHERE clanek = $data['id']");


furt nevim jak vyuziju id clanku ktery se nachazi v tabulce RS kdyz tenhle prikaz se tyka tabulky RS_Diskuse...
radsi bych videl kod protoze v tom mam nakej hokej :D
microfox
Profil *
Jooo je to tak :-)
akorat jsem to udelal stejne malinko jinak a funguje to ;-)
<?php
require "db.php"; // pripojeni k databazi

$clanek_html='<table id="slideshow_clanky" >';

$vycuc_tabulky=mysql_query("select `id`,`nadpis`, concat( substring_index( `clanek` , ' ', 180 ) , '...' )  AS 'clanek' from RS ORDER BY id DESC LIMIT 1");       
while($data=mysql_fetch_assoc($vycuc_tabulky))
{                   
$result = mysql_query("SELECT * FROM RS_Diskuse WHERE clanek=$data[id]");                              
$clanek_html.='<tr><td class="vyska_nadpisu">
<a class="nadpis_clanku_slideshow" href="index.php?page=cely_clanek&amp;id='.$data['id'].'"><b>'.$data['nadpis'].'</b>  </a>
</td></tr>
<tr><td class="text_clanku_slideshow">'.$data['clanek'].'(Komentářů: '.mysql_num_rows($result).');
</td>  </tr>';   
}
$clanek_html.='</table>';


A pocita to presne tak jak chci ;-)
microfox
Profil *
jeste abych to uzavrel...nevedel sem ze do sql prikazu muzu dat normalne natvrdo promenou...myslel sem si ze mi to vyhodi error ze to bude blbost a jak je videt clovek se uci kazdej den...Diky za radu ale chvilku mi to trvalo nez jsem na to prisel...kdyby me nekdo ten kod napsal primo jak to bude vypadat tak si reknu: aaaha, to nevim ze to jde tak ted jsem o neco chytrejsi ale prisel jsem na vec o ktery nevim ze udelat jde. Jeste jednou dik aspon za postrceni do finale ;-)
jenikkozak
Profil
microfox:
tak ted jsem o neco chytrejsi
Abys byl ještě chytřejší, něco ti poradím. Využij to, co ti napsal pcmanik. Ty tím dotazem z devátého řádku vytahuješ z databáze úplně veškeré údaje o komentářích (id, komentar, clanek, autor, datum a priklep) jen proto, abys je pak na řádku 13 spočítal. Jeho řešení je pomocí COUNT() spočítá hned v databázi a do PHP ti vrátí pouze jejich počet. Tedy vrátí ti pouze jediné číslo. Je nesmyslem tahat do PHP data, která nevyužiješ.
microfox
Profil *
ok, nechci zakladat nak nove tema ale porad se to tyka jednoho a toho sameho...jde o razeni komentaru od nejnovejsiho po nejstarsi u daneho clanku....

$vycuc_tabulky=mysql_query("SELECT * FROM RS_Diskuse WHERE clanek = " . (isset($_GET['id']) ? mysql_real_escape_string($_GET['id']) : '0'));

Musi tam bejt nekde ORDER by id DESC, ale problem je ze ten sql prikaz je na me uz nak dlouhej :D je tam totiz navic to isset pres ktery si posilam id a napasovat tam jeste tuhle blbost je na me nak moc...Poradil by me nekdo jak to dotoho vlozit? respektive pro tentokrat jak to bude presne vypadat v tom kodu ;-) Moc diky
microfox
Profil *
$vycuc_tabulky=mysql_query("SELECT * FROM RS_Diskuse WHERE ORDER by clanek = " . (isset($_GET['id']) ? mysql_real_escape_string($_GET['id']) : '0'));

ale nevim kam hodit to DESC :( zkousel jsem na ruzne pozice a vzdy s errorem :/ poradi nekdo?
microfox
Profil *
blbost...uz nic,ja si nevsiml neceho ;-)
microfox
Profil *
$vycuc_tabulky=mysql_query("SELECT * FROM RS_Diskuse WHERE ORDER by komentar DESC clanek = " . (isset($_GET['id']) ? mysql_real_escape_string($_GET['id']) : '0'));


Takhle, jen to prestalo vypisovat ty komentare....error to nehazi...nevite kde je chyba? v syntaxi asi ne...
microfox
Profil *
jo prvni chyba...ORDER BY komentar DESC musi bejt jeste pred WHERE... ale i tak to nevypise nic
jenikkozak
Profil
microfox:
ORDER BY komentar DESC musi bejt jeste pred WHERE
Ne, za ním.
Pořadí klíčových slov najdeš v manuálu.

Snaž se sem psát co nejméně příspěvků. Takhle můžeš svou samomluvou odradit člověka, který by ti mohl případně pomoci. ;)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0