我有一个代码,假设该代码可以在用户之间来回显示消息。由于某种原因,数据不匹配,并且我不确定代码中的哪个位置有错误。我试图更改$x < $sender
的if语句,但这没有用。
但是显示的数据与数据库信息不一致。
“测试2”消息是从woof3发送的,因此当以woof登录时,它应该是绿色而不是蓝色。而且“测试再次”是从woof发送的,因此以woof登录时应该为蓝色
在下面编辑工作代码,没有pdo,因为我还没有完成这个项目,所以我将它们保存下来以简化测试。
<?php
include "../Site/db.php";
$url = $_SERVER['REQUEST_URI'];
$urlArray = explode('=', $url);
$Username = $urlArray[sizeof($urlArray) - 1];
$Myself = $_SESSION['username'];
$sql = "SELECT * FROM messages ORDER BY `Id` ASC";
$result = $conn->query($sql);
// Header of message box
echo '<div id="messages" class="messagePersonBox shadow">
<span class="usersname" name="receiver"><a href="Account?='.$Username.'">'.$Username.'</a></span>
<hr style="margin-top:24px">
<div id="allMessages"class="allMessages">
';
// $sql2 = "SELECT * FROM messages WHERE Sender = '$Myself' ORDER BY `Id` ASC";
// $result2 = $conn->query($sql2);
$sql3 = "SELECT * FROM messages
WHERE (Sender = '$Myself' AND Receiver = '$Username')
OR (Receiver = '$Myself' AND Sender = '$Username') ORDER BY `MessageTime` ASC";
$result3 = $conn->query($sql3);
print_r($result3);
$x = 0;
$sql4 = "SELECT * FROM messages WHERE Sender = '$Myself'";
$result4 = $conn->query($sql4);
$sql5 = "SELECT * FROM messages WHERE Receiver = '$Myself'";
$result5 = $conn->query($sql5);
$totalSender = mysqli_num_rows($result4);
$totalReceiver = mysqli_num_rows($result5);
// might have to add both totals for while loop
// to get total messages
$totalmessages = mysqli_num_rows($result);
// For receiving
while ($x < $totalmessages) {
// output data of each row
if ($result3->num_rows > 0) {
if ($row = $result3->fetch_assoc()) {
$Sender = $row['Sender'];
$Message = $row['Message'];
$Receiver = $row['Receiver'];
$TimeSent = $row['MessageTime'];
}
}
$class = $Sender == $Myself ? 'messageDisplay' : 'messageDisplay2';
// sending a message
echo '<div id="messages2" class="'.$class.'">'.$Message.'<span style="float: right;margin-top:2px"><font size=1>'.time_elapsed_string($TimeSent).'</span></font></div>';
$x++;
}
// Typing part of message
echo '</div>
<input type="text" id="messagetosend" name="message" class="messagetype" placeholder="Type a message..."><span id="send" class="messageSend">↩</span>
</div>';
?>
我可以根据需要添加更多信息。
答案 0 :(得分:0)
我建议您退后一步,重新构造此方法。
例如,您不需要JsonNode
(至少不需要它的当前格式),因为您可以从$FileList = Get-ChildItem "C:\\pathway\\Genomes\\" -Filter "*.log" # GETTING THE LIST OF .LOG FILES
$FileList | %{ # FOR EACH LOOP ON ALL .LOG FILE
blastn.exe -query .\filename_log -db ..\dbname -out filename.out -outfmt 6 -evalue 0.00001 | Set-Content $_.BaseName.out
# YOUR COMMAND | SET-CONTENT FILENAME # TO SAVE COMMAND OUTPUT IN FILE
# $_ IS FOR LOOP VARIABLE AND BASENAME IS FILENAME WITHOUT EXTENSION
}
和conversationID
中扣除它,这更加准确。您也不需要Sender
,因为Receiver
是同时包含日期和时间的datetime值。因此,MessageDate
和MessageTime
可以删除。
然后,我们可以清理查询数量。您想获得所有消息,其中您是发件人,另一个用户是收件人,或,您是收件人,另一个用户是该消息的发件人。然后,我们按日期排序(而不是ID!),并根据该行的conversationID
值检查消息是绿色还是蓝色-如果设置了MessageDate
变量,则为蓝色设置一个值发件人是当前用户,否则为绿色。
请注意,在输出HTML块时,可以退出PHP,这使它更易于阅读(和引号)。您还具有具有相同ID的HTML元素,这是不允许的。
在处理查询中的变量时,还应该使用准备好的语句。
Sender