2017-07-03 1 views
0

Ich möchte eine Formel finden, die alle meine Spalten beginnend mit Surveydone summiert. In meinem Beispiel habe ich 10 Spalten, die mit Surveyone beginnen. Könnte mir bitte helfen, diese Formel zu finden? DankePHP SUM IF Funktion mit Spaltenkriterien

Bitte unter dem Echo json_encode finde ich in PHP haben:

{"id":"7","username":"Thomas","survey1":"valide","surveytoken1":"EuLwfqJI5UYLgK2LQ7jS","surveytokenvalid1":"1","surveydone1":"1","surveytoken2":"EuLwfqJI5UYLgK2LQ7jS","surveytokenvalid2":"1","surveydone2":"1" [...] "surveytokenvalid10":"1","surveydone10":"1"} 

und hier ist mein Code in php:

$user_username = $_SESSION['auth']->username; 
    $user['username'] = $user_username;  
    $req = $pdo->prepare('SELECT * FROM data WHERE (username = ?)'); 
    $req->execute([$user_username]); 
    $surveyuser = $req->fetch(); 
    echo json_encode($surveyuser); 
+0

Warum machen Sie es nicht in SQL? 'SELECT surveydone1 + surveydone2 ​​+ surveydon3 + ... AS surveytotal FROM data' – Barmar

+0

Warum nicht Schleife durch und suchen nach Unterzeichenfolge des Schlüssels? – Vector

+0

Dies deutet auf eine schlechte Datennormalisierung hin. Es wäre besser, jede Umfrage in einer separaten Zeile in der Tabelle zu zählen. – Barmar

Antwort

0

Hier ist die Antwort, die ich es geschafft haben, gefunden, und es funktioniert.

$user_username = $_SESSION['auth']->username; 
    $user['username'] = $user_username;  
    $req = $pdo->prepare('SELECT * FROM data WHERE (username = ?)'); 
    $req->execute([$user_username]); 
    $surveyuser = $req->fetch(); 
    echo json_encode($surveyuser); 

    $surveyuserarray = json_decode(json_encode($surveyuser), True); 
    $surveyuser2 = json_encode($surveyuser); 

    foreach($surveyuserarray as $key => $value){ 
    if (strpos($key, 'surveydone') === 0) { 
     $only_point[$key] = $value; 
     } 
    } 

    $total_points=array(); 
    $total_points['totalpoints']=array_sum($only_point); 

    echo ($surveyuser2); 
    echo json_encode($total_points);