Biorąc pod uwagę kod, który zamieściłeś, oto jak sobie z tym poradzę.
Najpierw utworzyłbym tablicę wyszukiwania asocjacyjnego, której kluczami są nazwy kolumn, a wartościami odpowiadające im wartości punktowe; wyglądałoby to mniej więcej tak:
$pointVals = array('email1' => 2, 'email2' => 5, 'email3' => 2, ... );
Możesz wygenerować tę tablicę, jak chcesz; Prawdopodobnie przeczytałbym to z tabeli przeglądowej w bazie danych. Zauważ, że ta tablica zawiera tylko te kolumny, dla których obliczenia są istotne.
Następnie dołączyłbym następujący kod wewnątrz Twój while
pętla. $row
jest tablicą rekordów zwróconą przez twoje wywołanie mysql_fetch_array()
.
while ($row = mysql_fetch_array($result)) {
... // existing code goes here
$rowSum = 0;
foreach($pointVals as $colName => $val)
{
if(isset($row[$colName]) && !empty($row[$colName]))
$rowSum += $val;
}
... // do stuff with $rowSum here
}
Powiedziawszy to, gorąco zachęcam do konwersji z mysql kierowca do mysqli lub PDO , jako mysql jest przestarzałe i zostało usunięte z PHP 7. Podejrzewam też, że twoje zapytanie można uprościć i ulepszyć, ale muszę zobaczyć tabelę bazową, aby coś zasugerować.