2016-07-09 11 views
0

Ich bin auf der Stufe, wo ich gerade erst anfangen, PHP und MySQL zu verstehen, aber ich bin fest. Ich habe ein Tutorial von developphp.com Studium WI, in dem Shawn baut ein NachrichtensystemProblem mit SQL-Abfrage und PHP

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

Ich versuche, das Tutorial neu zu gestalten, damit es meinen Bedürfnissen entspricht. Ich habe eine Mail-Seite namens pm_inbox.php gebaut, die gut funktioniert, es gibt mir Mail, die mir in einer DESC-Bestellung gesendet wurde.

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>'; 

, was ich versuche zu tun ist, wenn jemand das Land Link auf klickt pm_inbox.php es sie durch eine andere Seite nehmen genannt inboxMain.php, in dem sie die Personen zeigen Details in einem Container, der die Mail wie beim Absender, dem Betreff und dem Land gesendet hat.

Ich habe 4 Mail auf pm_inbox.php, die Leute haben mich geschickt. wenn ich auf den Länderlink klicke, bringt es mich zu inboxMain.php, aber anstatt mir nur die Personendetails zu zeigen, die mir die Mail geschickt haben, zeigt es alle 4 Personen Details in 4 verschiedenen Containern. Ich weiß, es ist ein SQL-Abfrage-Problem auf inboxMain.php, aber kann es nicht ausarbeiten. Ich frage mich, ob mir bitte jemand helfen kann.

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

Wenn Sie nur eine Mitteilung wünschen, setzen Sie '$ pmid' in der URL-Parameter. Dann benutze 'WHERE pm.id = $ id'. – Barmar

+0

Hallo Barmar. Vielen Dank für Ihre Antwort, es ist sehr nett von Ihnen. Vielleicht war ich nicht klar genug mit meiner Frage, die meine Schuld war und tut mir leid, aber was ich wirklich suche, ist meine Mail-Seite ist in Ordnung. was ich wirklich versuchte zu tun ist, wenn ich auf die Post dränge, wo Land ist, wollte ich zu jenen Personen pm.id gehen, in dem die Post ist, anstatt alles 4 PM zu haben. ich weiß, dass es etwas mit dem SQL zu tun hat Abfrage auf der InboxMain-Seite, die die Ergebnisse erhalten – gary33

Antwort

0

Setzen Sie einen Link, der die spezifische pm.id im ganzen Land bekommt.

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

Dann in mail.php können Sie eine Abfrage wie verwenden:

$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

Hallo Barmar. Wir haben vor ungefähr 4 Tagen gesprochen, in denen ich eine Frage gestellt habe und es keinen Sinn ergeben hat. Es tut mir leid, dass ich so lange gebraucht habe, um zurück zu kommen. Ich habe gerade meine Frage redigiert und die Frage gelöscht, die ich in den Antwortabschnitt einsetzte. Ich finde mich gerade auf der Seite zurecht und wundere mich, dass ich es aktualisiert habe, wenn es für Sie möglich war, einen Blick darauf zu werfen. vielen dank, wenn du kannst. – gary33

+0

Die Abfrage in 'inboxMain.php' sieht identisch mit der in' pm_inbox.php' aus. Natürlich werden dieselben Informationen angezeigt. – Barmar

+0

Hallo Barmar, tut mir leid, nervig zu sein. Ich habe die Abfrage in inboxMain.php geändert. Ich habe den ganzen Tag versucht, es auszuprobieren, aber nicht in der Lage. Ich schätze, dass Sie helfen, fella, es ist sehr nett von Ihnen und ich fragte mich, ob Sie eine Ahnung hatten, wie ich über dieses Codeproblem gehen könnte, vielen Dank. – gary33