Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: komentarze w ewsach
Forum PHP.pl > Forum > Bazy danych > MySQL
invx
robie system newsow, utknolem na zliczaniu komentarzy:
mam taki kod:
[php:1:2f83a9b3f6]<?php
function czytaj_newsa ()
{
mysql_connect("127.0.0.1", "root", "krasnal") or die ("nie można polączyć się z bazą");
mysql_select_db(rcx) or die ("nie można wybrac bazy");

$zapytanie="SELECT * FROM news_a";

$ilosc = "SELECT * FROM comments WHERE subid='".$wiersz['id']."'";

$komentarze = mysql_query($ilosc);

$ilosckomentarzy = mysql_num_rows($komentarze);

$wykonaj=mysql_query($zapytanie);

while($wiersz=mysql_fetch_array($wykonaj))
{
echo "
<center>
<table align='center' width='420' cellspacing='0' cellpadding='0' border='1' style='border-collapse: collapse' bgcolor='#c0c0c0' bordercolor='#111111'>
<tr>
<td class='news'><b>$wiersz[tytul]:</b>$wiersz[data]
</td>
</tr>
</table>
<table>
<tr>
<td width='420' bgcolor='#FFFFFF' align='justify'>$wiersz[tresc]<br><br></td>
</tr>
<tr>
<td width='420' bgcolor='#efefef' align='left'>.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dodał:&nbsp;<b><a href='mailto:$wiersz[mailu]'>$wiersz[dodal]</a></b></td>
<tr>
<td>
".$ilosckomentarzy."
</td>
</tr>
</tr>
</table><br>
</center>
";
}

#echo"<a name='dol'></a>";
#echo"<center><font color='#808080' size='2'>";
}
?>[/php:1:2f83a9b3f6]
i nie wykonuje zliczania komentarzy tylko wyswietla tresc zmiennej.
Puciek
Niebardzo rozumiem, czy możesz dać dokładny wygląd wygenerowanego blędu, i to czego oczekiwałeś ?
invx
troszeczke zmienilem kod zeby byl bardziej czytelny
wywala

Kod
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:usrkrasnalwwwrcx-portalnewsodczyt.php on line 19
Puciek
I już jasne, wpisujesz złe argumenty dla zapytania SQL. Zła nazwa bazy, tabel lub coś w ten deseń
djpeterek
[php:1:0a14012926]<?php
$kom = mysql_query ("SELECT * FROM comments WHERE subid='$id';");
?>[/php:1:0a14012926]zmiena $kom wywolujesz sproboj tak
Liko
[php:1:b2a16e1e7e]<?php
$ilosc = "SELECT * FROM comments WHERE subid='".$wiersz['id']."'";
?>[/php:1:b2a16e1e7e]
Moje pytanie jest następujące: Skąd bierzesz zmienną $wiersz['id'] questionmark.gif Bo narazie tu nic nie widze, dopiero później wywołujesz pętle w której pojawia się ta zmienna.
Aiker
[php:1:d6f30b19cd]<?php
$ilosc = "SELECT * FROM comments WHERE subid='".$wiersz['id']."'";

$komentarze = mysql_query($ilosc);

$ilosckomentarzy = mysql_num_rows($komentarze);
?>[/php:1:d6f30b19cd]
Te 3 linijki powinny znajdowac się w pętli while
invx
faktycznie taki blad :oops:
[php:1:a0404dd311]<?php
function czytaj_newsa ()
{
mysql_connect("127.0.0.1", "root", "krasnal") or die ("nie można polączyć się z bazą");
mysql_select_db(rcx) or die ("nie można wybrac bazy");

$zapytanie="SELECT * FROM news_a";



$wykonaj=mysql_query($zapytanie);

while($wiersz=mysql_fetch_array($wykonaj))
{
$ilosc = "SELECT * FROM news_b WHERE id_news='wiersz[id]'";
$komentarze = mysql_query($ilosc);
$ilosckomentarzy = mysql_num_rows($komentarze);

echo "
<center>
<table align='center' width='420' cellspacing='0' cellpadding='0' border='1' style='border-collapse: collapse' bgcolor='#c0c0c0' bordercolor='#111111'>
<tr>
<td class='news'><b>$wiersz[tytul]:</b>$wiersz[data]
</td>
</tr>
</table>
<table>
<tr>
<td width='420' bgcolor='#FFFFFF' align='justify'>$wiersz[tresc]<br><br></td>
</tr>
<tr>
<td width='420' bgcolor='#efefef' align='left'>.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dodał:&nbsp;<b><a href='mailto:$wiersz[mailu]'>$wiersz[dodal]</a></b></td>
<tr>
<td>
".$ilosckomentarzy."
</td>
</tr>
</tr>
</table><br>
</center>
";
}

#echo"<a name='dol'></a>";
#echo"<center><font color='#808080' size='2'>";
}
?>[/php:1:a0404dd311]
ale teraz dla kazdego newsa pokazuje ta sama liczbe komentarzy.
Aiker
Moze podal bys wiecej szczegolow np strukture bazy danych itp... bo z tego co pokazales to trudno jest ci pomoc
invx
[sql:1:64b1d3e875]#
# Struktura tabeli dla `news_a`
#

CREATE TABLE `news_a` (
`id` int(8) NOT NULL auto_increment,
`data` date NOT NULL default '0000-00-00',
`tytul` blob NOT NULL,
`tresc` blob NOT NULL,
`dodal` varchar(255) NOT NULL default '',
`ukrywanie` char(1) NOT NULL default '0',
`mailu` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=40 ;

#
# Zrzut danych tabeli `news_a`
#

INSERT INTO `news_a` VALUES (39, '0000-00-00', '', '', 'ttrrrrrrrrrrrrrr', '0', 'tttttttt');
INSERT INTO `news_a` VALUES (35, '0000-00-00', 0x5757575757, 0x57575757575757, 'WWWWWWWWWWW', '0', 'WWWWWWWWWWWWWWW');
INSERT INTO `news_a` VALUES (36, '0000-00-00', 0x57575757545, 0x5755757575745454520, 'WWWWWWWWEEE', '0', 'WWWWWWWWEEE');
[/sql:1:64b1d3e875]

[sql:1:64b1d3e875]

#
# Struktura tabeli dla `news_b`
#

CREATE TABLE `news_b` (
`id` int(8) NOT NULL auto_increment,
`id_news` varchar(8) NOT NULL default '',
`temat` text NOT NULL,
`tresc` blob NOT NULL,
`nick` varchar(255) NOT NULL default '',
`data` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

#
# Zrzut danych tabeli `news_b`
#

INSERT INTO `news_b` VALUES (1, '1', 'sgs geqwt qe rt', '', 'et wet w', '0000-00-00 00:00:00');
INSERT INTO `news_b` VALUES (2, '1', 'sgwet we', '', 'et ew', '0000-00-00 00:00:00');
[/sql:1:64b1d3e875]
Aiker
Po pierwsze to id_news musi sie zgadzac z id newsa bo u ciebie sie nie zgadza a pozatym zapomniales dodac w twoim kodzie takiego znaczka $ przy wiersz[id]
invx
jak sie nie zgadza ?
[php:1:f2d3a730bc]<?php
$ilosc = "SELECT * FROM news_b WHERE id_news='$wiersz[id]'";
?>[/php:1:f2d3a730bc]
Aiker
Spojrz sobie na zrzuty z bazy danych newsy maja id 35,36 itd.... a w news_b id_news tylko 1 dlatego wyswietla ci ze jest 0
invx
dzieki, jakos to przeoczylem... :?
rogrog
A ja proponuję tak :

[php:1:d19e410e29]
$ilosc = "SELECT count(*) as ilosc_komentow FROM news_b WHERE id_news='$wiersz[id]'";
[/php:1:d19e410e29]

dalej

[php:1:d19e410e29]
$komentarze = mysql_query($ilosc);
$ilosckomentarzy = $komentarze[ilosc_komentow];
[/php:1:d19e410e29]
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.