2016-07-09 48 views
0

我正處於剛剛開始瞭解PHP和MySQL的階段,但我陷入困境。我已經從developphp.com學習的教程中,肖恩的WI正在建設SQL查詢和php的問題

https://www.youtube.com/playlist?list=PLgsYR-L3Uwbps9E-xIQPajQOiZVbOo6lr 

我試圖重新設計教程,以便它符合我的需求的消息系統。我已經建立了一個名爲pm_inbox.php的郵件頁面,它可以正常工作,它給了我以一個DESC命令發送給我的郵件。

pm_inbox.php

$sql = "SELECT pm.*, u.avatar, u.country 
FROM pm AS pm 
LEFT JOIN users AS u ON u.username = pm.sender 
WHERE (pm.receiver='$u' AND pm.parent='x' AND pm.rdelete='0') 
OR (pm.sender='$u' AND pm.sdelete='0' AND pm.parent='x' AND pm.hasreplies='1') 
ORDER BY senttime DESC"; 
$query = mysqli_query($db_conx, $sql); 
$statusnumrows = mysqli_num_rows($query); 
// Gather data about parent pm's 
if($statusnumrows > 0){ 
    while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) { 
     $pmid = $row["id"]; 
     //div naming 
     $pmid2 = 'pm_'.$pmid; 
     $wrap1 = 'pm_message_wrap_'.$pmid; 
     //button naming 
     $btid2 = 'bt_'.$pmid; 
     //textarea naming 
     $rt = 'replytext_'.$pmid; 
     //button naming 
     $rb = 'replyBtn_'.$pmid; 
     $receiver = $row["receiver"]; 
     $sender = $row["sender"]; 
     $subject = $row["subject"]; 
     $message = $row["message"]; 
     $time = $row["senttime"]; 
     $rread = $row["rread"]; 
     $sread = $row["sread"]; 
     $avatar = $row["avatar"]; 
     $country = $row["country"]; 

     // Start to build our list of parent pm's 
     $mail .= '<div id="'.$wrap1.'" class="pm_message_wrap">'; 
     $mail .= '<table id="inboxMailMessages" width="100%" align="center" cellpadding="2"> 
    <tr> 
    <td width="6%"><input name="toggleAll" id="toggleAll" type="checkbox"/></td> 
    <td width="19%"><a href="user.php?u='.$sender.'" title="'.$sender.'"><img src="user/'.$sender.'/'.$avatar.'"width=100" height="100" border="0" /></a></td> 
    <td width="75%"> 
    <div class="inboxmailRollover"> 
    <p class="mailboxp">Subject: ' .$subject. '<br></p> 
    <p class="mailboxp"><a href="user.php?u=' . $sender . '">From:'.$sender. '</a><br></p> 
    <p class="mailboxp"><a href="inboxMain.php?u=' . $u . '">' .$country. '</a><br></p> 
    <p class="mailboxp">' .$message. '</p> 
    </div> 
    </td> 
    </tr> 
</table>'; 
     $mail .= '<hr>'; 
     $mail .= '</div>'; 

什麼,我試圖做的是,當有人點擊pm_inbox.php它會帶他們通過所謂的inboxMain.php另一個頁面中就會顯示出人的國家鏈接發件人,主題和國家/地區發送郵件的容器中的詳細信息。

我有4封郵件在pm_inbox.php,人們寄給我。當我推送國家鏈接時,它將我帶到了inboxMain.php,而不是向我展示給我發送郵件的人員詳細信息,它顯示了4個單獨容器中的所有4個人的詳細信息。我知道這是在inboxMain.php上的SQL查詢問題,但無法解決。我想知道是否有人可以幫助我。

inboxMain.php

$sql = "SELECT pm., u.avatar, u.country 
FROM pm AS pm 
LEFT JOIN users AS u ON u.username = pm.sender 
WHERE pm.id='$pmid' AND pm.sender='$u' AND pm.sdelete='0' AND pm.parent='x'"; 
$query = mysqli_query($db_conx, $sql); 
$statusnumrows = mysqli_num_rows($query); 
// Gather data about parent pm's 
if($statusnumrows > 0){ 
    while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) { 
     $pmid = $row["id"]; 
     //div naming 
     $pmid2 = 'pm_'.$pmid; 
     $wrap2 = 'reply_profile_wrap'.$pmid; 
     //button naming 
     $btid2 = 'bt_'.$pmid; 
     //textarea naming 
     $rt = 'replytext_'.$pmid; 
     //button naming 
     $rb = 'replyBtn_'.$pmid; 
     $receiver = $row["receiver"]; 
     $sender = $row["sender"]; 
     $subject = $row["subject"]; 
     $message = $row["message"]; 
     $time = $row["senttime"]; 
     $rread = $row["rread"]; 
     $sread = $row["sread"]; 
     $avatar = $row["avatar"]; 
     $country = $row["country"]; 

     // Start to build our list of parent pm's 
     $reply_profile .= '<div id="'.$wrap2.'" class="reply_profile_wrap">'; 
     $reply_profile .= '<table id="replyProfile" width="100%" border="0"> 
    <tr> 
    <td width="19%"><a href="user.php?u='.$sender.'" title="'.$sender.'"><img src="user/'.$sender.'/'.$avatar.'"width=75" height="75" border="0" /></a></td> 
    <td>  
    <p class="replyProfilep">Subject: ' .$subject. '<br></p> 
    <p class="replyProfilep"><a href="user.php?u=' . $sender . '">From:'.$sender. '</a><br></p> 
    <p class="replyProfilep">Country: ' .$country. '</p> 
    </td> 
    </tr> 
</table>'; 

     $reply_profile .= '</div>'; 
+0

如果你只是想一個消息,把'在URL參數$ pmid'。然後使用'WHERE pm.id = $ id'。 – Barmar

+0

嗨巴爾馬。非常感謝你的回答,這真是太好了。可能我對我的問題不夠清楚,這是我的錯,但很抱歉,但我真正在尋找的是我的郵件頁是好的。我真正想做的事情是推送郵件時,我想通過郵件傳遞給那些郵件所在的pm.id,而不是全部都是4 pm.id,我知道它與sql有關在收到結果的inboxMain頁面上查詢 – gary33

回答

0

把一個鏈接,得到全國各地的具體pm.id

<p class="replyProfilep"><a href="mail.php?id=' . $pmid . '">Country: ' .$country. '</a></p> 

然後在mail.php你可以使用像查詢:

$pmid = $_GET['id']; 
$sql = "SELECT pm.*, u.avatar, u.country 
    FROM pm AS pm 
    LEFT JOIN users AS u ON u.username = pm.sender 
    WHERE pm.id = $pmid"; 
+0

嗨Barmar。我們在4天前談到了我提出的一個問題,它沒有任何意義。對不起,我花了很長時間才找回來。我剛剛重新編輯我的問題,並刪除了我在答案部分中提出的問題。我只是在網站上找到我的方式,現在想知道如果有可能讓你看一下,我已經更新了它。非常感謝,如果可以的話。 – gary33

+0

'inboxMain.php'中的查詢看起來與'pm_inbox.php'中的查詢完全相同。所以當然它會顯示相同的信息。 – Barmar

+0

嗨巴爾瑪,很抱歉很煩人。我已經改變了inboxMain.php中的查詢。我一整天都在努力嘗試並努力工作,但無法完成。我真的很感謝你幫忙,這真是太好了,我想知道你是否有任何想法能夠解決這個代碼問題,非常感謝。 – gary33