Я извлекаю данные из базы данных MySQL и создаю из нее отчеты. Мне нужно рассчитывать, когда выполняются определенные условия, и, поскольку запросы к БД довольно дороги (и у меня будет много трафика), я зацикливаюсь на результатах одного запроса, чтобы увеличить счетчик.
Кажется, что он работает (счетчик увеличивается), и результаты несколько близки, но счетчики неверны.
На данный момент в таблице 411 записей, но я получаю числа вроде 934 со счетчика ['total']
и 927 для ['males']
, и это определенно не может быть правильным. Тем не менее, я получаю 4 от ['females']
, что правильно ...
Я почти уверен, что это работало прошлой ночью, но сейчас это не так - я совершенно сбит с толку. (есть только 411 записей)
$surveydata = mysql_query("SELECT `age`,`e_part`,`gender` FROM $db_surveydata;") or die(mysql_error());
$rowcount = mysql_num_rows($surveydata);
$age=array('18+'=>0,'<18'=>0,'total'=>0);
$e_part=array('yes'=>0,'no'=>0,'total'=>0);
$genders=array('male'=>0,'female'=>0,'trans'=>0,'don\'t know'=>0,'total'=>0);
while ($responses = mysql_fetch_assoc($surveydata)) {
foreach ($responses as $response){
switch ($response){
case $responses['age']:
if ($responses['age'] > 18) {$age['18+']++;$age['total']++;}
// i tried putting the ['total'] incrementer in the if/else
// just in case, but same result
else {$age['<18']++;$age['total']++;}
break;
case $responses['e_part']:
if ($responses['e_part']) {$e_part['yes']++;}
else {$e_part['no']++;}
$e_part['total']++;
break;
case $responses['gender']:
switch ($responses['gender']){
case 1:$genders['male']++;break;
case 2:$genders['female']++;break;
case 3:$genders['trans']++;break;
case 9:$genders['don\'t know']++;break;
default:break;
}
$genders['total']++;
break;
default:break;
} // end switch
} //end for
} // end while
спасибо!