2010-01-21 5 views
14

Je continue d'obtenir l'erreur suivante et je me demandais comment résoudre ce problème?PHP - Erreur fatale: Types d'opérandes non pris en charge

C'est la deuxième fois que je reçois cette erreur, je l'ai réparé la première fois, mais pour une raison quelconque, je ne peux pas le réparer la deuxième fois.

Fatal error: Unsupported operand types on line 103 

Voici la ligne 103.

$avg = (round($total_rating_points/$total_ratings,1)); 

Voici le code complet ci-dessous.

function getRatingText(){ 
    $dbc = mysqli_connect ("localhost", "root", "", "sitename"); 

    $page = '3'; 

    $sql1 = "SELECT COUNT(users_articles_id) 
      FROM articles_grades 
      WHERE users_articles_id = '$page'"; 

    $result = mysqli_query($dbc,$sql1); 

    if (!mysqli_query($dbc, $sql1)) { 
      print mysqli_error($dbc); 
      return; 
    } 

    $total_ratings = mysqli_fetch_array($result); 

    $sql2 = "SELECT grade_points 
      FROM grades 
      JOIN articles_grades ON grades.id = articles_grades.grade_id 
      WHERE articles_grades.users_articles_id = '$page'"; 

    $result = mysqli_query($dbc, $sql2); 

    if (!mysqli_query($dbc, $sql2)) { 
      print mysqli_error($dbc); 
      return; 
    } 

    while($row = mysqli_fetch_array($result)) { 

     $trp[] = $row[0]; 
    } 

    $total_rating_points = array_sum($trp); 

    if (!empty($total_rating_points) && !empty($total_ratings)){ 
     $avg = (round($total_rating_points/$total_ratings,1)); 
     $votes = $total_ratings; 
     echo $avg . "/10 (" . $votes . " votes cast)"; 
    } else { 
     echo '(no votes cast)'; 
    } 
} 
+0

Je pense que je viens de le résoudre merci à tous! – tEcHnUt

+6

Vous avez oublié votre mot de passe dans votre compte précédent? voir http://stackoverflow.com/questions/2077618/php-fatal-error-unsupported-operand-types et http://stackoverflow.com/users/252134/technut – VolkerK

Répondre

41

$total_ratings est un tableau que vous ne pouvez pas utiliser pour une division.

d'en haut:

$total_ratings = mysqli_fetch_array($result); 
0

Je suppose que vous voulez faire ceci:

$total_rating_count = count($total_rating_count); 
if ($total_rating_count > 0) // because you can't divide through zero 
    $avg = round($total_rating_points/$total_rating_count, 1); 
2

J'ai eu une erreur similaire avec le code suivant: -

foreach($myvar as $key => $value){ 
    $query = "SELECT stuff 
      FROM table 
      WHERE col1 = '$criteria1' 
      AND col2 = '$criteria2'"; 

    $result = mysql_query($query) or die('Could not execute query - '.mysql_error(). __FILE__. __LINE__. $query);    
    $point_values = mysql_fetch_assoc($result); 
    $top_five_actions[$key] += $point_values; //<--- Problem Line  
} 

Il est avéré que ma variable point_values ​​de $ retournait de temps en temps faux qui causé le problème, donc je l'ai fixé en l'enveloppant dans mysql_num_rows vérifier: -

if(mysql_num_rows($result) > 0) { 
     $point_values = mysql_fetch_assoc($result); 
     $top_five_actions[$key] += $point_values; 
} 

Pas sûr si cela aide cependant?

Salutations

Questions connexes