Hallo forum lezers,

Ik heb een probleempje.

Ik heb een soort boeking systeem, en ik zou op de website graag willen laten zien hoeveel deelnemers er op dit moment nu zijn. Dit werkt, hier heb ik dit voor gebruikt:

<?php

$link = mysql_connect("localhost", "USER", "PASS");
mysql_select_db("DATABASE", $link);

$result = mysql_query("SELECT * FROM wp_em_bookings", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows";
?>

Nu heb ik nog een evenement aangemaakt, en onder wp_em_bookings heb je een veld event_id

Als bijvoorbeeld het event_id 9 is, wil ik allen dat hij van het event_id 9 alles op telt en dan laat zien.

Misschien is het een beetje onduidelijk maar ik hoop dat julie mij kunnen helpen.

groetjes,

perry
Dan zul je met een WHERE in je query moeten gaan werken.

Verder mis ik foutafhandeling bij je query.
Zou geen * gebruiken, maar velden benoemen die je wilt ophalen.
Om de variabele op regel 9 hoeft geen "
Zou je hier bij nog iets kunnen helpen, want ik snap het niet helemaal..

alvast bedankt!
<?php
$event_id = 9; // of intval($_GET['event_id']) of zo
$result = mysql_query("
SELECT COUNT(iets) AS aantal
FROM wp_em_bookings
WHERE event_id = '".$event_id."'
ORDER BY event_date DESC");
$result = mysql_fetch_assoc($result);
$aantal = $result['aantal'];
?>

Let even op dat je beter geen * gebruikt, maar gewoon even de kolomnamen die je echt nodig hebt typt.
Dat is op dit niveau nog niet nodig, maar later gaat het problemen voorkomen.
Plus dat je in de PHP-code kan zien welke kolommen er verwacht worden (zonder even in de database te kijken) of de PHP uit te voeren.
Daarnaast, als je alleen het aantal wil, wil je niet alle ID's weten. Je wilt een aantal weten.
Waarom zou je tientallen tot miljoenen rijen met gegevens van je database willen hebben, als je alleen maar een nummer wilt weten?

In jouw opzet vraag je alle informatie op.
Dat zijn meerdere rijen met meerdere kolommen: heel veel data.
Die data gebruik je niet: je laat PHP alleen de rijen tellen.
Waarom dan SQL niet alleen het nummertje van het aantal rijen laten geven?
Je krijgt met mijn code 1 rij, 1 kolom (dus 1 veld) terug met daar het nummer. Dat is (veel) sneller dan jouw manier. En je belast de SQL-server niet zo veel.
Een paar kleine tips, maar handig voor later.

En wat begrijp je dan niet?

Je code is een 1 op 1 copy van http://php.net/manual/en/function.mysql-num-rows.php (?) Enig verschil is dat jij 'Rows\n' weglaat. De " wordt gebruikt vanwege de \n Op diezelfde site is ook te vinden hoe het zit met WHERE: http://php.net/manual/en/function.mysql-query.php

Foutafhandeling? http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/

<?php
$link = mysql_connect("localhost", "USER", "PASS");
mysql_select_db("DATABASE", $link);

$result = mysql_query("SELECT event_id
FROM wp_em_bookings
WHERE event_id=9", $link);
if (!$result) {
die('Invalid query: ' . mysql_error()); // niet helemaal netjes, maar in ieder geval een begin.
exit;
}
$num_rows = mysql_num_rows($result);

echo $num_rows;
?>

Overigens twijfel ik of niet beter COUNT gebruikt kan worden ipv mysql_num_rows.
Hartelijk dank, super dat je het zo even uitlegt ik ga de tutorial door lezen die je me hebt gegeven. Ik ben nog een beginner hier mee.

Groetjes,

Perry
Obelix: wat is de functie van exit() op regel 10?
Wat doe die die() erboven denk je?

Ook jij selecteert alle ID's om ze vervolgens niet te gebruiken. Gebruik een COUNT in je query.
PHP.net geeft zeer goede antwoorden, maar in dit geval moet/kan het beter in SQL.
Eddy Erkelens op 03/11/2012 11:15:54

<?php
$event_id = 9; // of intval($_GET['event_id']) of zo
$result = mysql_query("
SELECT COUNT(iets) AS aantal
FROM wp_em_bookings
WHERE event_id = '".$event_id."'
ORDER BY event_date DESC");
$result = mysql_fetch_assoc($result);
$aantal = $result['aantal'];
?>


Volgens mij geeft dit altijd slechts één record.
Dan heeft ORDER BY geen nut en kan het weg.

Volgens mij geeft dit altijd slechts één record.
Dan heeft ORDER BY geen nut en kan het weg.


Als het id een uniek auto_increment veld is wel.
Maar als het event_id aangeeft wat voor soort het is niet denk ik.

Stel dat je een opzet zoiets zou zijn:

[tabel events]
id event
1 punniken
2 naaien
3 breien
4 sokken stoppen


[tabel wp_events_booking]
id date event member
1 2012-01-01 1 Kees
2 2012-01-01 3 Harrie
3 2012-01-01 1 Sandy
enz..

Dan kunnen er meer events zijn als de club meerdere keren per maand bij elkaar komt om een event te doen he.
@Eddy: ik heb er al bijgezet dat ik twijfelde over COUNT of mysql_num_rows. Die twijfel was (dus) terecht ;-)
- SanThe - op 03/11/2012 11:40:22

[quote="Eddy Erkelens op 03/11/2012 11:15:54"]
<?php
$event_id = 9; // of intval($_GET['event_id']) of zo
$result = mysql_query("
SELECT COUNT(iets) AS aantal
FROM wp_em_bookings
WHERE event_id = '".$event_id."'
ORDER BY event_date DESC");
$result = mysql_fetch_assoc($result);
$aantal = $result['aantal'];
?>


Volgens mij geeft dit altijd slechts één record.
Dan heeft ORDER BY geen nut en kan het weg.
[/quote]

Jep, dat klopt. Had pas later die COUNT() toegevoegd.
ORDER BY heeft inderdaad totaal geen enkel nut.

Reageren