2015-07-18 33 views
-2

這裏是全碼:需要一個手,像系統

<?php 
    session_start(); 
    if(!isset($_SESSION["sess_user"])){ 
     header("location:../logout.php"); 
    } else {} 
    $user=$_SESSION['sess_user']; 
    ?> 

<?php 
    $con=mysql_connect('localhost','root','vertrigo') or die(mysql_error()); 
    mysql_select_db('user_registration') or die("cannot select DB"); 
    $sql=mysql_query("SELECT * FROM `likehand`"); 
    while($likehandle = mysql_fetch_array($sql)) 
      { 

       $fanname = $likehandle['Userlame']; 
       $Posid = $likehandle['Post_ID'];  

    } 
    ?> 

      <?php 
          echo "<div style='background-color: #CC98CC'>"; 
       echo "<tr align='center'bgcolor='#f0f0f0'>";  
       echo"<td><p align='center'><font size='1' color='black'><b>Welcome Back $user </b></a></font></p></td>"; 
       echo "</tr>"; 
       echo "</div>"; 

      echo"<p align='center'><i><b> 
<font style='opacity: 100' size='7' color='000000' face='forte'>News</font></b></i></p>"; 


      include("newsdb.php"); 

       if(isset($_POST['submit'])){ 
       if(!empty($_POST['search'])) { 
       $srhuser=$_POST['search']; 

$con=mysql_connect('localhost','root','vertrigo') or die(mysql_error()); 
mysql_select_db('user_registration') or die("cannot select DB"); 
$result=mysql_query("SELECT * FROM `news` where submitted_by='".$srhuser."'");}} 
else{$result=mysql_query("SELECT * FROM `news`\n" 
    . " ORDER BY `code` DESC"); 

} 

      while($test = mysql_fetch_array($result)) 
      { 

       $sbmitter = $test['submitted_by']; 
       $id = $test['code'];  
       $date = $test['date']; 
       $body = $test['body']; 
       $likes = $test['likes']; 
       $image = $test['url']; 
       $sql="SELECT * FROM `likehand`"; 

       echo "<div style='background-color: #C0C0C0'>"; 
       echo "<tr align='center'bgcolor='#f0f0f0'>";  
       echo"<td><i><left><font color='black'>&nbsp; &nbsp; &nbsp; $sbmitter Said:</center></font></i>"; 
       echo"<td><p align='center'><font size='4' color='black'>$body</a></font></p></td>"; 
       echo"<font color='Black'><p align='right'>created <a href='#'>";echo"<font color='blue'>"; 
       echo date('d-m-Y \a\t\ g:i <b>a</b></a>', strtotime($test["date"]));     // October 5, 2008 9:34 pm 
echo"&nbsp"; 
$userid="$user-$id"; 
       if("$fanname-$Posid" == $userid){echo"<td><p align='Left'><font size='2' color='black'>&nbsp&nbsp$likes like <a href ='unlike.php?code=$id'><font color='black'><input type='button' value='Unlike' name='B3' style='width: 50; height: 20'></a></a></font></p></td>"; 


}else{ echo"<td><p align='Left'><font size='2' color='black'>&nbsp&nbsp$likes like <a href ='like.php?code=$id'><font color='black'><input type='button' value='like' name='B3' style='width: 50; height: 20'></a></a></font></p></td>"; 
       }    if($sbmitter == $user) 
{    echo"<td><p align='right'><font size='2' color='black'><a href ='adminpannel/postdel.php?code=$id'><font color='black'><input type='button' value='delete' name='B3' style='width: 50; height: 20'></a></a></font></td>"; 
       echo"<td><font size='2' color='black'><a href ='/adminpannel/postedit.php?code=$id'><font color='black'><input type='button' value='edit' name='B3' style='width: 50; height: 20'></a></a></font></p></td>"; 
} 
} 


       echo "</div>"; 
       echo "<p></p>"; 
       echo"&nbsp;"; 



       echo "</tr>"; 

      mysql_close($conn); 
      ?> 

我認爲這個問題是在這裏,但不知道它是什麼:

 $userid="$user-$id"; 
      if("$fanname-$Posid" == $userid){echo"<td><p align='Left'><font size='2' color='black'>&nbsp&nbsp$likes like <a href ='unlike.php?code=$id'><font color='black'><input type='button' value='Unlike' name='B3' style='width: 50; height: 20'></a></a></font></p></td>"; 


}else{ echo"<td><p align='Left'><font size='2' color='black'>&nbsp&nbsp$likes like <a href ='like.php?code=$id'><font color='black'><input type='button' value='like' name='B3' style='width: 50; height: 20'></a></a></font></p></td>"; 
       }    

我重新檢查了數據庫,並將其似乎它保存了正確的數據,問題是當用戶按下像..喜歡字段增加一和帖子ID以及用戶名被保存,但是當我喜歡多個帖子時,只有一個帖子顯示「不同」按鈕.. 有什麼建議嗎?

+1

請在發佈代碼前介紹問題。這會讓讀者更容易理解這個問題。 –

回答

0

這段代碼真的很痛苦。還有很多事情你應該做得不同。首先你應該避免使用mysql函數,它們已被棄用。使用mysqli或者pdo。如果你使用mysqli,請確保採用面向對象的版本。我不確定'完整代碼'是否是2個單獨的腳本...如果不是,那麼爲什麼要連接mysql和數據庫兩次?在if語句中檢查某些事物的奇怪方法也是如此。

之所以你一次只看到1個,是因爲在開始時,你將所有喜歡的東西從數據庫中取出,然後做一段時間循環。然後你把信息放在$ fanname和$ posid中。每個喜歡都會更新這些值。所以最後只會存儲一個像這樣的信息。

簡單的修復,截至目前,將取代這個:與

if(array_key_exists($userid, $array_of_likes)){ 

if("$fanname-$Posid" == $userid){ 

$fanname = $likehandle['Userlame']; 
$posid = $likehandle['Post_ID']; 

$array_of_likes[$fanname . "-" . $posid] = 1; 

然後更換此

這應該至少讓你喜歡超過1件事。

編輯: 對你的腳本更多的建議: 看來你選擇所有喜歡,從每個用戶。我相信這不是你想要的。您確實想在查詢中執行WHERE userlame = {your_user_ID}。

當你這樣做,然後改變喜歡的數組。您不需要使用fanname和posid創建密鑰。只需創建一個以post_id爲關鍵字的數組。

然後,當你檢查你是否喜歡這篇新聞發佈時,請做array_key_exists($ id,$ array_of_likes)。無需發送您的用戶名。

但是更好的方法是在新聞查詢中使用LEFT JOIN查詢。 事情是這樣的:

SELECT n.*, l.POST_ID FROM news AS n 
    LEFT JOIN likehand AS l 
    ON l.userlame = $your_user_id AND l.Post_ID = n.code 
WHERE n.submittedby = $_POST['search'] 

我不能美化查詢,但它是關於這一點。 它會從您搜索的人中選擇所有的新聞消息。與此同時,它會檢查是否存在與您匹配的帖子。如果你喜歡它,那麼l.POST_ID是一個數字。如果你不喜歡它,l.POST_ID是空的。

+0

我知道代碼太亂了,但它不是我使用的方式,我做了一個測試PHP文件混亂然後乾淨,謝謝你的答案,要嘗試它 –

+0

工作,非常感謝。 –

+0

@ Abdel-MoniemMoragy我已經更新了我的文章。對更好的腳本提供更多建議。即使是更快的腳本,如果您應用查詢。但是你可能需要做一些研究才能完全實現。 – Verkade89