2015-03-08 1 views
0

J'ai une fonction de commentaire sur ma page, mais j'essaye d'y ajouter quelques fonctions.Ma fonction comment_func_bar ne fonctionne pas

bouton comme-, et supprimer Report-

Mais il semble que mon code est complexe inutile.

function comment_func_bar($how_many,$comment_id,$uid) 
    { 
     // connect to the database 
    //include_once('config.php'); 
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

    // get the records from the database 
    $result=$mysqli->query("SELECT `uid_fk` FROM `comment_likes` WHERE `comment_id_fk` = '".$comment_id."'"); 
    $row = mysqli_fetch_row($result); 
    if($result->num_rows === 0) //If no likes 
    { 
     $how_many=''; 
    } else if(($result->num_rows === 1) && ($row[0] === "$uid")) { //If one like, and that one like is "you" 
    $how_many = "You like, "; //Should be $_SESSION["user_name"] or what ever 
    }else if($result->num_rows === 1) //If one like, and its not "you" 
    { 
    $other_user_id=$row[0]; 
    $result=$mysqli->query("SELECT `user_name` FROM `users` WHERE `user_id` = '".$other_user_id."'"); 
    $row = mysqli_fetch_row($result); 
    $how_many=$row[0]; 
    } 

    //Check if the user already have liked a comment 
//http://stackoverflow.com/questions/10164035/how-to-find-specific-row-in-mysql-query-result 
    while($row = mysqli_fetch_row($result)) 
    { 
     if($row === $uid) 
     { 
     //row found, do processing ... 
     //reset pointer and break from loop 
       echo '<p id="txtHint"><small><a href="" class="clickable">' . $how_many .' Unlike</a> - <a href="">Report</a> - <a href="#" class="del_button" id="del-'.$comment_id.'">Delete</a></small></p>'; 
     if(!mysql_data_seek($result, 0)) 
      //Row not found 
        echo '<p id="txtHint"><small><a href="" class="clickable">' . $how_many .' Like</a> - <a href="">Report</a> - <a href="#" class="del_button" id="del-'.$comment_id.'">Delete</a></small></p>'; 
     break; 
     } 
    } 
    } 

Mais le problème réel est le moment en bas.

En essayant de rechercher dans les lignes les utilisateurs $ uid pour savoir si cet utilisateur a déjà aimé ou non. Mais je ne peux pas le faire fonctionner.

Il ne retourne rien du tout, pas d'erreurs, rien!

+0

Vous devriez vraiment apprendre sur les jointures SQL. – eggyal

+0

okey merci pour vos conseils. – Johan

+0

'elseif' pas' else if'. – cwallenpoole

Répondre

0

résolu le problème moi-même, merci pour rien

Espérons que cela peut donner quelques idées pour la prochaine personne qui essaie de faire la même chose!

Vous pouvez réellement trouver les threads qui m'ont aidé avec ceci dans le code. et le COF http://php.net/manual/en/control-structures.if.php

function comment_func_bar($how_many,$comment_id,$uid) 
{ 
    // connect to the database 
//include_once('config.php'); 
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

// get the records from the database 
$result=$mysqli->query("SELECT `uid_fk` FROM `comment_likes` WHERE `comment_id_fk` = '".$comment_id."'"); 
$row = mysqli_fetch_row($result); 

if($result->num_rows === 0) //If no likes 
{ 
    $how_many=''; 
} else if(($result->num_rows === 1) && ($row[0] === "$uid")) { //If one like, and that one like is "you" 
$how_many = "You like, "; //Should be $_SESSION["user_name"] or what ever 
}else if($result->num_rows === 1) //If one like, and its not "you" 
{ 
$other_user_id=$row[0]; 
$result=$mysqli->query("SELECT `user_name` FROM `users` WHERE `user_id` = '".$other_user_id."'"); 
$row = mysqli_fetch_row($result); 
$how_many=$row[0]; 
} 

//Check if the user already have liked a comment 
//http://stackoverflow.com/questions/4037145/mysql-how-to-select-rows-where-value-is-in-array 
////http://stackoverflow.com/questions/10164035/how-to-find-specific-row-in-mysql-query-result 
// $row = mysqli_fetch_row($result); 
$result=$mysqli->query("SELECT `uid_fk` FROM `comment_likes` WHERE `comment_id_fk` = '".$comment_id."'"); 
    if(!cycelUser($result,$uid)) 
    {   
      echo '<p id="txtHint"><small><a href="" class="clickable">' . $how_many .' Like</a> - <a href="">Report</a> - <a href="#" class="del_button" id="del-'.$comment_id.'">Delete</a></small></p>'; 

     }else { 
      echo '<p id="txtHint"><small><a href="" class="clickable">' . $how_many .' Unlike</a> - <a href="">Report</a> - <a href="#" class="del_button" id="del-'.$comment_id.'">Delete</a></small></p>'; 
} 
    } 


// Cycel throu the uid_fk from comment_likes to find if the user have liked it before! 
    // Not a very nice solution, but it works (apperently) 
function cycelUser ($result,$uid) 
{ 
    while ($row = mysqli_fetch_assoc($result)) { //_array or _assoc whatever 
     if ($row['uid_fk'] == $uid) { 
      mysqli_data_seek($result, 0); 
      return $row; 
     } 
    } 
}