Table Row Count in PHP
Voor mijn website wil ik een pagina maken waar het aantal configuratie items in een database wordt weergegeven.
Dus gewoon een simpele tekst die zegt: 'Er zijn 75 configuraties'.
Ik heb op internet al zitten zoeken maar daar ben ik niet veel wijzer van geworden.
Kan iemand mij daar bij helpen?
Groeten,
Niels
SELECT COUNT(1) FROM configuraties
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// hier de select query die je toch al doet
echo 'Er zijn '.mysqli_num_rows($query).' configuraties';
?>
// hier de select query die je toch al doet
echo 'Er zijn '.mysqli_num_rows($query).' configuraties';
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
probeer anders de database connectie eens zonder in een extern document en met een functie. Gewoon op de simpelste manier.
Gewijzigd op 12/05/2015 11:08:14 door Ramon van Dongen
Ramon van Dongen op 12/05/2015 11:00:53:
Of als je toch al ergens alle configuraties ophaalt:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// hier de select query die je toch al doet
echo 'Er zijn '.mysqli_num_rows($query).' configuraties';
?>
// hier de select query die je toch al doet
echo 'Er zijn '.mysqli_num_rows($query).' configuraties';
?>
In de praktijk werkt dit langzamer. Ikzelf raad COUNT() aan:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// hier je connectie als $con...
$sql = "SELECT COUNT(1) AS aantal FROM configuraties";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_field($result);
echo "Er zijn ". $row->aantal. "configuraties";
?>
// hier je connectie als $con...
$sql = "SELECT COUNT(1) AS aantal FROM configuraties";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_field($result);
echo "Er zijn ". $row->aantal. "configuraties";
?>
Gewijzigd op 12/05/2015 11:17:36 door - Ariën -
Quote:
In de praktijk werkt dit langzamer. Ikzelf raad COUNT() aan.
Klopt, maar stel dat je toch alles al ophaalt om alle configuraties onder elkaar te laten zien en er boven wilt zetten hoeveel het er zijn.
Ramon van Dongen op 12/05/2015 11:13:05:
Klopt, maar stel dat je toch alles al ophaalt om alle configuraties onder elkaar te laten zien en er boven wilt zetten hoeveel het er zijn.
Quote:
In de praktijk werkt dit langzamer. Ikzelf raad COUNT() aan.
Klopt, maar stel dat je toch alles al ophaalt om alle configuraties onder elkaar te laten zien en er boven wilt zetten hoeveel het er zijn.
Dan denk ik dat het nog steeds zwaar blijft. Vooral als je met grote aantallen werkt.
Daarom is het beste om dergelijke berekeningen zo veel mogelijk via de database te doen, als het even kan.
Hoe werkt die $con precies? Ik ben echt nog een complete noob op het gebied van PHP..
Voor functies zoals mysqli_query en mysqli_real_escape_string() ben je verplicht om $je connectie te noemen. Ik noem hem voor de duidelijkheid altijd $con.
Gewijzigd op 12/05/2015 12:24:01 door - Ariën -
Gewijzigd op 12/05/2015 12:25:40 door Frank Nietbelangrijk
Ik krijg nu de melding Notice: Undefined property: stdClass::$aantal als ik 'm uitvoer?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$con = mysqli_connect("localhost","root","","cmdb");
$sql = "SELECT COUNT(1) AS aantal FROM configuraties";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_field($result);
echo "Er zijn ". $row->aantal. "configuraties";
?>
[/CODE]
$con = mysqli_connect("localhost","root","","cmdb");
$sql = "SELECT COUNT(1) AS aantal FROM configuraties";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_field($result);
echo "Er zijn ". $row->aantal. "configuraties";
?>
[/CODE]
Gewijzigd op 12/05/2015 12:37:03 door Niels Hurkmans
Voer die query eens uit in PhpMyAdmin? Misschien is de query in $result wel ergens fout, waardoor deze niet de resutl geeft, maar een boolean (met false).
- Wie zegt dat de verbinding met mysqli_connect() ook goed opgezet is? Je zou iets als dit moeten hebben:
Code (php)
Hetzelfde geldt voor mysqli_query. Een query kan mislukken en dit kun je controlleren. Kijk eens op deze pagina en dan onder het kopje Return Values.
- Aar - op 12/05/2015 15:53:49:
Voer die query eens uit in PhpMyAdmin? Misschien is de query in $result wel ergens fout, waardoor deze niet de resutl geeft, maar een boolean (met false).
Ik heb de query uitgeprobeerd in PHPMyAdmin en hij blijkt gewoon te werken?
mysqli_fetch_field is meer bedoeld om allerlei meta data omtrent een resultaatkolom op te halen.
Gebruik gewoon fetch_row en pak de eerste kolom (index 0)?
Gebruik gewoon fetch_row en pak de eerste kolom (index 0)?
Gewijzigd op 13/05/2015 12:28:37 door Thomas van den Heuvel
vs
Thomas van den Heuvel op 13/05/2015 12:26:52:
mysqli_fetch_field is meer bedoeld om allerlei meta data omtrent een resultaatkolom op te halen.
Gebruik gewoon fetch_row en pak de eerste kolom (index 0)?
Gebruik gewoon fetch_row en pak de eerste kolom (index 0)?
Die naamgevingen zijn soms zeer verwarrend. Bij de oude depricated MySQL-functies had je gewoon mysql_result(), maar dat gaat niet op bij MySQLi. De fetch_row() is een stuk beter inderdaad.