Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie komentarzy
Forum PHP.pl > Forum > PHP
rockets
Wiem że już to było ale chodzi mi dokładnie o WARUNEK

mam coś takiego

W MySQL-u 2 tabele

news:
ID || ...

i news_comments:
ID || NEWSID || ...

I teraz w zapytaniu nie wiem co zrobic po WHERE

[php:1:2c6f38143b]<?php
$sql = mysql_query("SELECT count(*) FROM news_comments WHERE newsid='$newsid'");
list($ile) = mysql_fetch_array($sql);
?>[/php:1:2c6f38143b]


?>[/php]
krysk
ja bym to zrobił inaczej

[php:1:a611fd6c74]<?php
$sql = mysql_query("SELECT * FROM `news_comments` WHERE `newsid`='$row[newsid]'");
$ile = mysql_num_rows($sql);
echo $ile;
?>[/php:1:a611fd6c74]


punkcik for me ;} hehe
rockets
Może źle wytłumaczyłem
Mam coś takiego:

Tabelę ze skrótem wiadomości i wywala mi te wiadomości z bazy [while] i do tego nie mogę dodać ile w danym newsie jest komentarzy a komentarze odczytuje z drugiej tabeli tak jak jest pokazane na początku
kszychu
[php:1:6a5a98b022]<?php
$sql = mysql_query("SELECT count(c.ID) FROM news AS n, news_comments AS c WHERE n.ID = c.newsid AND c.newsid='$newsid'");
list($ile) = mysql_fetch_array($sql);
?>[/php:1:6a5a98b022]

Chyba.....
rockets
Ani to ani to nie działa:
Wkleje przykładowy kod żeby było jaśniej :?

[php:1:65fc850bd0]<?php
$sql = mysql_query("SELECT * FROM news_comments WHERE newsid='$newsid'");
$ile = mysql_num_rows($sql);

$result = mysql_query("select * from news ORDER BY id DESC");
while($row = mysql_fetch_array($result)){
echo "<a href='xxx.php?news=".$row['id']."' class='m'>".$row['tytul']." ($ile)</a><br><br>";}
?>[/php:1:65fc850bd0]
kszychu
[php:1:c0bf1d1a4d]<?php
$sql = mysql_query("SELECT * FROM news as n, news_comments as c WHERE n.ID = c.newsid AND n.id='$newsid'");
$ile = mysql_num_rows($sql);

$result = mysql_query("select * from news ORDER BY id DESC");
while($row = mysql_fetch_array($result)){
echo "<a href='xxx.php?news=".$row['id']."' class='m'>".$row['tytul']." ($ile)</a><br><br>";}
?>[/php:1:c0bf1d1a4d]
No to może tak?
spenalzo
Pierwsza odpowiedź kszycha jest poprawna - jeżeli coś nie działa to z łaski swojej może napiszesz co jest nie tak?

Przy okazji:
[php:1:8251c66806]<?php
$sql = mysql_query("SELECT * FROM news as n, news_comments as c WHERE n.ID = c.newsid AND n.id='$newsid'");
?>[/php:1:8251c66806]
Takie coś może zadziałać ale może sie sypać - ponieważ tutaj w obu tabelach są pola ID to zapytanie się wysypie. Jeżeli robicie coś takiego to:
[sql:1:8251c66806]SELECT c.*, n.costam .....[/sql:1:8251c66806]
Wtedy są dokładnie określone nazwy pól.
rockets
Już próbowałem i nic

Pokazuje mi cały czas (0) i nie wiem co mam zrobić :?
spenalzo
[manual:47f614c4dd]mysql_error[/manual:47f614c4dd]
kszychu
Cytat
Przy okazji:
[php:1:7581dce48c]<?php
$sql = mysql_query("SELECT * FROM news as n, news_comments as c WHERE n.ID = c.newsid AND n.id='$newsid'");
?>[/php:1:7581dce48c]
Takie coś może zadziałać ale może sie sypać - ponieważ tutaj w obu tabelach są pola ID to zapytanie się wysypie. Jeżeli robicie coś takiego to:
[sql:1:7581dce48c]SELECT c.*, n.costam .....[/sql:1:7581dce48c]
Wtedy są dokładnie określone nazwy pól.


Ale to się nie wysypie smile.gif Sprawdziłem i zawsze tak robie jeśli chodzi mi o ilość pól.
kiyote
[php:1:cf1ce52491]<?php
$query_wyswietl_ilosc = "SELECT count(id) FROM news_comments WHERE newsid=$newsid";
$wyswietl_ilosc = mysql_query($query_wyswietl_ilosc, $baza) or die(mysql_error());
$row_wyswietl_ilosc= mysql_fetch_assoc($wyswietl_ilosc);
$ilosc_komentarzy=$row_wyswietl_ilosc['count(id)'];

?>[/php:1:cf1ce52491]

Dostosuj do swoich potrzeb i voila. Pod $newsid podstawiasz id odpowiedni do newsa ale to chyba juz sobie zaplanowales.
Mozesz to wrzucic w funcje np i wywolywac przy wyswietlaniu kazdego newsa. Takie lopatologiczne rozwiazanie i napewno mniej ladne od rozwiazania kszycha ale tez dziala . .
rockets
MySql error nic nie pokazuje bo przeciez to nie blad :? Podaje mi zły wynik i zawsze albo mam 0 albo mam 1 w ilości komentarzy i tak pomyślałem że to może przez te podwójne ID ale tez nic nie dało. Próbowałem wszystkiego co mi tutaj podaliście

Może mam błąd w tabelach:
Zmieniłem w news_comments id na lp ale i tak dalej jest problem i nic to nie dało

[sql:1:9d4024c3b0]TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`tytul` varchar(100) NOT NULL default '',
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=0 ;


TABLE `news_comments` (
`newsid` int(11) NOT NULL default '0',
`lp` int(11) NOT NULL auto_increment,
`tytul` varchar(150) NOT NULL default '',
KEY `lp` (`lp`)
) TYPE=MyISAM AUTO_INCREMENT=0 ;[/sql:1:9d4024c3b0]

A tutaj mam zapytania:

[php:1:9d4024c3b0]<?php
<?php
$sql = mysql_query("SELECT count(c.lp) FROM news as n, news_comments as c WHERE n.id = c.newsid AND n.id='$newsid'");
$ile = mysql_num_rows($sql);

$result = mysql_query("select * from news ORDER BY id DESC");
while($row = mysql_fetch_array($result))
{
echo "".$row['tytul']." ($ile)";
}
?>
?>[/php:1:9d4024c3b0]

Help rolleyes.gif
rockets
Pokazuje mi cały czas (1) niezależnie ile bym miał komentarzy...

Może ktoś ma jakiś pomysł jak to rozwiązać ?
rockets
[php:1:c93ed9c48f]<?php
<?
// laczymy sie z baza
$query = mysql_query("SELECT * FROM `newsy` ORDER BY `id` DESC");
while($dane = mysql_fetch_array($query))
{
$ile = @mysql_fetch_row(mysql_query('SELECT COUNT(`newsid`) as ile FROM `komentarze` WHERE `newsid` = "'.$dane['id'].'"')) or $ile[0] = '0';
echo $dane['id'].' - '.$dane['tytul'].' - '.$ile[0].'<br>';
}
?>
?>[/php:1:c93ed9c48f]

SAM SOBIE ODPOWIEDZIAŁEM
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.