Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczenie rekordow z tabeli?
Forum PHP.pl > Forum > Bazy danych
kpjeziorak
Witam

Czy moglby mi ktos napisac jak mozna zliczyc ile jest rekordow w tabeli.

Mam na swojej stronie dzial "Weterani" a tam pilkarzy, ktorzy przewineli sie przez klub w calej historii istnienia, cala lista sie wyswietla, ale chcialbym napisac cos w stylu: Mamy xxx piłkarzy w naszej bazie!

Gdzie xxx to wlasnie liczba wszystkich pilkarz znajdujacych sie w bazie.
Sh4dow
przydalo by sie cos wiecej na temat tableli to mozna by podac dokladniejszy przyklad, ale moze to wystarczy
[sql:1:e97be0ac3d]SELECT COUNT(id_gracza) AS liczba FROM pilkarze[/sql:1:e97be0ac3d]
jesli masz jakies dokladniejsze wyliczenia to dospiujesz warunek na koncu np.
[sql:1:e97be0ac3d]SELECT COUNT(id_gracza) AS liczba FROM pilkarze WHERE kolumna = 'X'[/sql:1:e97be0ac3d]
jesli natomiast wczesniej pobrałeś juz tablice np tak
[sql:1:e97be0ac3d]SELECT * AS liczba FROM pilkarze[/sql:1:e97be0ac3d]
to w php zliczysz ilosc
[php:1:e97be0ac3d]<?php
$wynik = mysql_query("SELECT * AS liczba FROM pilkarze");
$liczba = mysql_num_rows($wynik);
echo $liczba;
//... reszta skryptu
?>[/php:1:e97be0ac3d]
kpjeziorak
W sumie nie mam pojecia co mam z tym zrobic:) Wiec napisze wiecej:

Oto kod SQL na podstawie ktorego stworzylem tabele:

[php:1:1436ebd893]<?php
CREATE TABLE `weterani` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`imienazwisko` varchar(255) NOT NULL DEFAULT '',
`email` varchar(255) NOT NULL DEFAULT '',
`gg` varchar(255) NOT NULL DEFAULT '',
`miejscezamieszkania` varchar(255) NOT NULL DEFAULT '',

PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
?>[/php:1:1436ebd893]

Nie wiem czy to wystarczy, ale chcialbym zeby wyswietlilo mi ile mam aktualnie pilkarzy w bazie.

PS: prosze nie zwracac uwagi na nazwy kolumn (gg, emial itp.) gdyz, przerobilem sobie inny skrypt dla potrzeb dzialu weterani.
Sh4dow
jesli chcesz otrzymac sama liczbe weteranow to to powinno wystarczyc
[php:1:d0ff317f04]<?php
$zapytanie = mysql_query("SELECT COUNT(id) FROM weterani");
$liczba = mysql_result($zapytanie, 0);
echo $liczba;
?>[/php:1:d0ff317f04]
JOHNY
Napiszę tu bo nie ma sensu zakładać nowego posta
Otórz ma takowy problem zorbiłem sobie system newsow z komentarzami i teraz problem mam ze stworzeniem prowidłowego zapytania hmm w zasadzie z wygenerowaniem liczby:

Mam taki kod:
[php:1:673d4f5d32]
<?php
require "./config.php";

$news_poz=10;
if(!$s){
$s="0";
}
$query = "SELECT * FROM newspl ORDER BY id DESC LIMIT $s, $news_poz";
$wynik = mysql_query($query);
list($ile)=mysql_fetch_row(mysql_db_query($dbname, "SELECT count(*) FROM newspl"));

?>
<script>
<!--

if (window.parent.location==window.location)
{
document.writeln('Czekaj na załadowanie ramek. Jeśli się nie pojawią, <a href="../index.php">kliknij tutaj</a>');
window.location='../index.php';
}

// -->
</script>
<br>
<table width="95%" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#878057">
</table>
<div align="center">
<table width="95%" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">
<tr>
<td bgcolor="#E2C56D" align="center" class="text"><div align="center"><b>News</b></div></td>
</tr>
<tr>
<td bgcolor="#EDD793" align="center"><br>
<?php

while($row = mysql_fetch_array($wynik)) {

$row = str_replace("n", "n<br />", $row);

echo "<table width="98%" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#878057">"
."</table>"
."<table width="98%" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">"
."<tr>"
."<td width="65%" align="left" bgcolor="#D1B04D" class="temat">&nbsp;Temat: <span class="text">" . $row['temat'] . "</span></td>"
."<td width="20%" align="center" bgcolor="#D1B04D" class="temat">Autor: <a href="mailto:". $row['email'] ."" class="tekst">" . $row['autor'] . "</a></td>"
."<td width="15%" align="center" bgcolor="#C2A345" class="windows">" . $row['data_dodania'] . "</td>"
."</tr>"
."<tr align="left" bgcolor="#E2C56D">"
."<td colspan="3">"
."<table width="98%" align="center" border="0" cellpadding="0" cellspacing="0">"
."<tr>"
."<td align="left" class="tekst">" . $row['opis'] . "</td>"
."</tr>"
."</table>"
."<tr align="left" bgcolor="#C2A345">"
."<td colspan="3" valign="middle"><a href="home.php?action=komentarz&news_id=". $row['id'] ."" class="textbold">&nbsp;&nbsp;&nbsp;Dodaj Komentarz </a><span class="tekst">(</span><span class="temat">"; echo ($koment); //tu zeminna koment wyciągające ilość komentarzy w konkretnym newsie echo"</span><span class="tekst">)</span></td>"
."</tr>"
."</table>"
."<br>";
}
for($s=0; $s<$ile; $s+=$news_poz) {
$z=$s/$news_poz+1;
echo"<a href="home.php?s=$s" class="boczne">$z</a> ";
}
if(mysql_num_rows($wynik)==0) {

echo "<p class="boczne">Nie ma nic w bazie</p>";

}
?>
<p></p>
</table>
</div>
<p></p>
?>[/php:1:673d4f5d32]
strukura sql
newspl
ID|TEMAT|AUTOR|EMAIL|OPIS
coments
ID|NEWS_ID|AUTOR|EMAIL|OPIS

Próbowałem użyć zapytania
[php:1:673d4f5d32]<?php
SELECT count(*) FROM coments WHERE news_id='$news_id';

?>[/php:1:673d4f5d32]
Ale coś nie chce trybić
Co mam zrobić questionmark.gif
kpjeziorak
Sh4dow:

Niestety pokazuje sie blad, co zrobic?

[php:1:d2d53bae15]<?php
Warning: mysql_query(): Access denied for user: 'root@localhost' (Using password: NO) in /home/jeziorak/public_html/dzialy/weterani/wyswietl.php on line 8

Warning: mysql_query(): A link to the server could not be established in /home/jeziorak/public_html/dzialy/weterani/wyswietl.php on line 8

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/jeziorak/public_html/dzialy/weterani/wyswietl.php on line 9
?>[/php:1:d2d53bae15]
Sh4dow
JOHNY:
nie wiem czy to cos pomoze ale sproboj

[sql:1:fbb8bdfacc]SELECT count(id) FROM coments WHERE news_id='$news_id';[/sql:1:fbb8bdfacc]
w praktyce
[php:1:fbb8bdfacc]<?php
$query = mysql_query("SELECT count(id) FROM coments WHERE news_id='".$news_id."'");
$ilosc_komentarzy = mysql_result($query, 0);
echo $ilosc_komentarzy;
?>[/php:1:fbb8bdfacc]

kpjeziorak:
Według tego błędu, nie jestes polączony z bazą danych.
Cytat
...Access denied for user: 'root@localhost'...

a dokładniej dostęp do bazy jest zablokowany dla usera root. Zobacz czy prawidlowo masz wpisane haslo i usera
kpjeziorak
Hasło i user mam wpisane dobrze, ponieważ gdy usune Twój kod, który mi podałeś to wszystko jest ok, nie wiesz może co jest przyczyną?
Oto kod pliku na którym ma się znaleźć ilość weteranów - przy okazji plik ten wyświetla listę weteranów.

wyswietl.php
[php:1:32671ae503]<?php
<TABLE border="0" cellspacing="0" cellpadding="5" width="560" style="font-size: 10px; font-family: verdana">
<TR>
<TD>
Lista piłkarzy, którzy kiedykolwiek zagrali w iławskim klubie. Jeżeli potrafisz uzupełnić tą listę, choćby o jedną datę urodzenia, to napisz do nas!<br />
<br />
<TABLE border="0" cellspacing="0" cellpadding="1" style="font-size: 10px; font-family: verdana">
<TR>
<TD align="center" width="70"><B>Nazwisko</B></TD>
<TD align="center" width="70"><B>Imię</B></TD>
<TD align="center" width="70"><B>Pozycja</B></TD>
<TD align="center" width="70"><B>Data ur.</B></TD>
</TR>
<?php

include('connection.php');

{
$zapytanie = sql("SELECT * FROM weterani ORDER BY imienazwisko ASC;");
while ($rekord = mysql_fetch_array($zapytanie))

{
$imienazwisko = $rekord['imienazwisko'];
$email = $rekord['email'];
$gg = $rekord['gg'];
$miejscezamieszkania = $rekord['miejscezamieszkania'];

echo "<TR>";
echo "<TD>$imienazwisko</TD>";
echo "<TD>$email</TD>";
echo "<TD>$gg</TD>";
echo "<TD>$miejscezamieszkania</TD>";
echo "</TR>";
}
}

?>
</TABLE>
</TD>
</TR>
</TABLE>
?>[/php:1:32671ae503]

To jest kod, ale bez tego co mi podałeś, czyli plik, który działa całkowicie dobrze, czy mógłbyś wstawić gdzieś nad tabelą kod, który będzie poprawnie wyświetlał ilość weteranów?
Sh4dow
Nie wiem gdzie dodawałeś tą moją linie, ale musisz zrobić to po połączeniu się z bazą danych. czyli po
[php:1:5bef41e029]<?php
include('connection.php');
?>[/php:1:5bef41e029]
kpjeziorak
Wstawilem Twoj kod po polaczeniu sie z baza, ale i tak nie dzialalo, postanowilem sie troche pobawic i udalo sie:) Oto poprawny kod, praktycznie ten Twoj, ale troszke zmieniony:

[php:1:7da1e49328]<?php
$cos = sql("SELECT COUNT(id) FROM weterani");
$liczba = mysql_result($cos, 0);
echo $liczba;
?>[/php:1:7da1e49328]

&zapytanie zmienilem na &cos, bo dalej wystpejuje zmienna &zapytanie w kodzie i pomyslalem, ze moze przez to, dalej zamiast mysql_query("SELECT COUNT(id) FROM weterani"); wstawilem sql("SELECT COUNT(id) FROM weterani"); i teraz dziala, wiec WIELKIE dzieki za pomoc! Bo bez Ciebie nie doszedlbym sam do tego. Pozdrawiam
JOHNY
Cytat
JOHNY:
nie wiem czy to cos pomoze ale sproboj  

[sql:1:789ebd22aa]SELECT count(id) FROM coments WHERE news_id='$news_id';[/sql:1:789ebd22aa]
w praktyce
[php:1:789ebd22aa]<?php
$query = mysql_query("SELECT count(id) FROM coments WHERE news_id='".$news_id."'");
$ilosc_komentarzy = mysql_result($query, 0);
echo $ilosc_komentarzy;
?>[/php:1:789ebd22aa]

Tak juz próbowałem najgorsze jest ot ze muszę w pliku wyswietlającym newsy czyli news.php odnieść sie do zmiennej $ile w pliku komentarze.php to w tedy by pokazało bo używając powyższego wywołania nie zatrybi.
Albo musiałbym w zapytaniu do coments zmiast zmiennej w formule news_id='$news_id' wstawić zmienną $id za zapytania do tabeli newspl - a to chyba zbytnio nie jest możliwe.

Najlepiej do by było w news.php odwołać sie jakoś do zmiennej $ile w pliku komentarze.php ale jak questionmark.gif
Jak ktoś miał takie problem jak jak to niech pomoże

EDIT 1

OK zrobiłem problem usunięty
Postać kodu
[php:1:789ebd22aa]
<?php
require "./config.php";

$news_poz=10;
if(!$s){
$s="0";
}
$query = "SELECT * FROM newspl ORDER BY id DESC LIMIT $s, $news_poz";
$wynik = mysql_query($query);
list($ile)=mysql_fetch_row(mysql_db_query($dbname, "SELECT count(*) FROM newspl"));
?>
<script>
<!--

if (window.parent.location==window.location)
{
document.writeln('Czekaj na załadowanie ramek. Je&para;li się nie pojawi&plusmn;, <a href="../index.php">kliknij tutaj</a>');
window.location='../index.php';
}

// -->
</script>
<br>
<table width="95%" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#878057">
</table>
<div align="center">
<table width="95%" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">
<tr>
<td bgcolor="#E2C56D" align="center" class="text"><div align="center"><b>News</b></div></td>
</tr>
<tr>
<td bgcolor="#EDD793" align="center"><br>
<?php

while($row = mysql_fetch_array($wynik)) {

$row = str_replace("n", "n<br />", $row);

echo "<table width="98%" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#878057">"
."</table>"
."<table width="98%" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">"
."<tr>"
."<td width="65%" align="left" bgcolor="#D1B04D" class="temat">&nbsp;Temat: <span class="text">" . $row['temat'] . "</span></td>"
."<td width="20%" align="center" bgcolor="#D1B04D" class="temat">Autor: <a href="mailto:". $row['email'] ."" class="tekst">" . $row['autor'] . "</a></td>"
."<td width="15%" align="center" bgcolor="#C2A345" class="windows">" . $row['data_dodania'] . "</td>"
."</tr>"
."<tr align="left" bgcolor="#E2C56D">"
."<td colspan="3">"
."<table width="98%" align="center" border="0" cellpadding="0" cellspacing="0">"
."<tr>"
."<td align="left" class="tekst">" . $row['opis'] . "</td>"
."</tr>"
."</table>"
."<tr align="left" bgcolor="#C2A345">"
."<td colspan="3" valign="middle"><a href="home.php?action=komentarz&news_id=". $row['id'] ."" class="textbold">&nbsp;&nbsp;&nbsp;Dodaj Komentarz </a><span class="tekst">(</span><span class="temat">";?><? list($sumkom)=mysql_fetch_row(mysql_db_query($dbname, "SELECT count(*) FROM coments WHERE news_id='".$row['id']."'")); echo ($sumkom);?>// no tak jak mówiłem musiłaem się odnieść do id z tablicy newspl i jedynym sposobem było jak widać strorzenie zapytania w wywołaniu wyniku z tablicy newspl
<? echo"</span><span class="tekst">)</span></td>"
."</tr>"
."</table>"
."<br>";
}
for($s=0; $s<$ile; $s+=$news_poz) {
$z=$s/$news_poz+1;
echo"<a href="home.php?s=$s" class="boczne">$z</a> "; #to wyswietli linki w postaci 1 2 3 4
}
if(mysql_num_rows($wynik)==0) {

echo "<p class="boczne">Nie ma nic w bazie</p>";

}
?>
<p></p>
</table>
</div>
<p></p>
?>[/php:1:789ebd22aa]
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.