Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie rekordów
Forum PHP.pl > Forum > Przedszkole
Leon07
Witam,

mam zapytanie zwracające rekordy z bazy - działa dobrze ... (poniżej kod)

pytanie brzmi - w jaki sposób zwrócić wartość ilości wypisanych rekordów - krótko mówiąc, zamiast je wypisywać - to jak je policzyć?

---
$sql = $wpdb->prepare("
SELECT a.*,
(max_people_per_vehicle - booked_shared_seats) available_seats,
FLOOR((((('1' - private_bookings)*max_people_per_vehicle) - booked_shared_seats) / max_people_per_vehicle)) available_full_vehicles
FROM
(
SELECT availability.*,
(
SELECT IFNULL(SUM(people_count), 0) FROM " . TRANSFERS_BOOKING_TABLE . "
WHERE is_private=0 AND availability_id = availability.Id AND DATE(booking_datetime)=DATE(%s) "
. ($transfers_plugin_globals->use_woocommerce_for_checkout() ? (empty($completed_statuses_str) ? '' : " AND woo_status IN (" . $completed_statuses_str . ")") : '') .
" ) booked_shared_seats, ", $date);

$sql .= $wpdb->prepare(" (
SELECT IFNULL(COUNT(*), 0) FROM " . TRANSFERS_BOOKING_TABLE . "
WHERE is_private=1 AND availability_id = availability.Id AND DATE(booking_datetime)=DATE(%s) "
. ($transfers_plugin_globals->use_woocommerce_for_checkout() ? (empty($completed_statuses_str) && $transfers_plugin_globals->use_woocommerce_for_checkout() ? '' : " AND woo_status IN (" . $completed_statuses_str . ")") : '') .
" ) private_bookings,", $date);

$sql .= " IFNULL((
SELECT MIN(transport_type_max_people_per_vehicle.meta_value)+0 max_people_per_vehicle
FROM $wpdb->postmeta transport_type_max_people_per_vehicle
WHERE transport_type_max_people_per_vehicle.post_id = availability.transport_type_id AND transport_type_max_people_per_vehicle.meta_key='_transport_type_max_people_per_vehicle'
), 0) max_people_per_vehicle
FROM " . TRANSFERS_AVAILABILITY_TABLE . " availability
WHERE 1=1 ";

$sql .= $wpdb->prepare(" AND (availability.destination_from_id=%d OR availability.destination_from_id=0) ", $destination_from_id);
$sql .= $wpdb->prepare(" AND (availability.destination_to_id=%d OR availability.destination_to_id=0) ", $destination_to_id);
$sql .= $wpdb->prepare(" AND ( DATE(%s) >= DATE(availability.start_datetime) AND DATE(%s) <= DATE(availability.end_datetime)) ", $date, $date);

$sql .= " AND ( ";
$sql .= $wpdb->prepare(" (availability.entry_type='daily' AND availability.slot_minutes >= %d) OR ", $date_slot_minutes);
$sql .= " (availability.entry_type='byminute') OR ";
$sql .= $wpdb->prepare(" (availability.entry_type='weekly' AND availability.day_index=%d AND availability.slot_minutes >= %d) OR ", $date_day_of_week, $date_slot_minutes);
$sql .= $wpdb->prepare(" (availability.entry_type='monthly' AND availability.day_index=%d AND availability.slot_minutes >= %d) ", $date_day_of_month, $date_slot_minutes);
$sql .= $wpdb->prepare(")
HAVING (availability.entry_type='byminute') OR booked_shared_seats < (('1' - private_bookings)*max_people_per_vehicle)
) a
HAVING (entry_type='byminute') OR available_seats >= %d
ORDER BY slot_minutes ASC
", $people);

return $wpdb->get_results($sql);
}
nospor
1) Dla wstawianego kodu uzywaj BBCODE
2) Patrz prosze gdzie piszesz. Problem nie ma zadnego zwiazku z OOP. Przenosze
Neutral
https://stackoverflow.com/questions/607264/...-query-returned

Użyj do tego funkcji FOUND_ROWS(). Po SELECT pobierającym dane z tabeli, daj pod spodem tę funkcję.
Dla przykładu (for example):

Kod
SELECT * FROM table_name;
FOUND_ROWS();

+--------------+
| FOUND_ROWS() |
+--------------+
| 17 |
+--------------+


https://dev.mysql.com/doc/refman/5.7/en/inf...tion_found-rows
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.