Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: a dlaczego to nie dziala ??
Forum PHP.pl > Forum > PHP
boya
Mam problem sad.gif

Poniższy kod:

Kod
<?php

@mysql_connect( "localhost", "boya", "boy2ost" );

@mysql_select_db( "boya" );

$wykonaj = mysql_query( "SELECT news.kto kto, news.text text, news.kiedy kiedy, count(k.*) ilosc

FROM komentarze k

LEFT JOIN knews ON (k.news_id=news.id)

GROUP BY k.news_id

LIMIT 10;" );

while( $wiersz = @mysql_fetch_array( $wykonaj ) ) {

print $wiersz['kto']."n";

print $wiersz['text']."n";

print $wiersz['kiedy']."n";

print $wiersz['ilosc']."n";

}

?>


teraz opis co ma robic ten skrypt

laczy sie z baza danych boya gdzie sa dwie tabele knews i komentarze

struktury tabeli

knews
id | kto | kiedy | text |
komentarze
id | id_news | kto | kiedy | gg | mail |

wyswietla mi na stronie glownej newsy wraz z licza komentarzy, problem w tym ze ten skrypt nic nie wyswietla i dlaczego moze ktos z was wie questionmark.gif a moze macie inny sposob zeby rpzwiazac to wyswietlanie ktore wyglada tak

Strona Glowna


to z tabeli knews kto text kiedy
automatycznie do tego dodaje komentarze (***) komentuj

jak widzicie w nawiasie wyzej sa gwiazdki i tam ma byc ilosc komentarzy o konkretnym id (suma komentarzy np o id=12) jak mam napisac skrypt zeby to dzialalo bo rece mi opadaja juz....

POMOCY
kurtz
Cytat
jak widzicie w nawiasie wyzej sa gwiazdki i tam ma byc ilosc komentarzy o konkretnym id (suma komentarzy np o id=12) jak mam napisac skrypt zeby to dzialalo bo rece mi opadaja juz....
uf. ok troszke sie tego zebralo.

najpierw co wg mnie jest niepoprawnie
1) count(k.*) jest niepoprawne - skoro grupujesz po kolumnie to i count'uj po niej - to wazny blad.
2) troszke nie tak masz tego joina - chyba chciales odwrotnie - newsy i do nich przywiazywac komentarze - a konkretnie ich ilosc. - to tez istotny blad - ale juz projektowy
3) w tym zapytaniu co napisales masz male babole - podczas przepisywania? - (k.news_id=news.id) - a nigdzie nie ma news - wyglada na to ze chodzilo o tabelke knews ktora nie zaliasowales.

ergo: poprawilem zapytanie:
Kod
SELECT

    news.kto kto,

    news.text text,

    news.kiedy kiedy,

    count(k.id_news) ilosc

FROM

   knews news

LEFT JOIN komentarze k

   ON (k.id_news = news.id)

GROUP BY

    k.id_news

LIMIT 0, 30



pozdrawiam
kurtz
Cytat
najpierw co wg mnie jest niepoprawnie
aha: najlepiej jest testowac swoje zpaytania nim wrzucimy je do php - najprosicej phpmyadminem ktorego chyba kazdy ma ;)

mozesz tez pokusic sie o wizualnego klienta ktory niczym Enterprise Manager pokaze ci ktory klucz do czego sie odwoluje ;)


pozdrawiam
boya
dzieki uprzejmosci BzikOS-a mam takie cos

Cytat
<?php
@mysql_connect( "localhost", "boya", "boy2ost" );
@mysql_select_db( "boya" );
$sql = mysql_query( "SELECT id, kto, text, kiedy FROM knews LIMIT 10" );
while($wiersz = @mysql_fetch_array( $sql ) ) {
list($ilosc) = @mysql_query("SELECT count(*) FROM komentarze WHERE news_id=".$wiersz['id']."");
print $wiersz['kto']."n";
print $wiersz['text']."n";
print $wiersz['kiedy']."n";
print $ilosc."n";
}
?>


problem w tym ze to mi nie wyswietla $ilosc
moze widziec co jest nie tak questionmark.gif?
BzikOS
Cytat
dzieki uprzejmosci BzikOS-a mam takie cos

Cytat
<?php
// ...
list($ilosc) = @mysql_fetch_row(@mysql_query("SELECT count(*) FROM komentarze WHERE news_id=".$wiersz['id'].""));
// ...
}
?>


Tak być powinno.
kurtz
Cytat
Cytat
dzieki uprzejmosci BzikOS-a mam takie cos

Cytat
<?php
// ...
list($ilosc) = @mysql_fetch_row(@mysql_query("SELECT count(*) FROM komentarze WHERE news_id=".$wiersz['id'].""));
// ...
}
?>


Tak być powinno.
eh a mozna bylo wszystko jednym zapytaniem bylo zrobic...


pozdrawiam
BzikOS
Cytat
eh a mozna bylo wszystko jednym zapytaniem bylo zrobic...
Można...
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.