我有2个div框。第一个div框包含我之前转换过的用户名。 第二个div框将显示我和用户的对话历史....
这是我的代码..
$compiler = $volt->getCompiler();
$compiler->addFunction('pagination_url', function ($resolvedArgs, $exprArgs) use ($compiler) {
$url = $compiler->expression($exprArgs[0]['expr']);
$page = $compiler->expression($exprArgs[1]['expr']);
return $url . '.\'?\'.http_build_query(array_merge($this->request->getQuery(), [\'page\' => ' . $page . ']))';
});
在上面的代码中,每个名称都会显示在li列表中。现在当我点击一个li列表时,让我说我点击第三个li并且id应该是34,它不会发生。它仍然会加载第一个我的ID ...我找不到修复程序。
以下是我的ajax的代码:
<ul style="list-style-type: none;">
<?php
include 'connectDB.php';
//retrieve all the message history of yours from the PrivateMessage table
$query = "SELECT * FROM `messagecheck` WHERE `sender_a` = '$userId' OR `sender_b` = '$userId';";
$result = mysqli_query($dbconnect,$query);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
?>
<div class="openChat" style="border:2px solid red">
<li style="color:black; width:100%; padding-top:5px" onclick="message()">
<?php
//if the sender_a id is not my id, display the name
//if sender_a is my id, then display sender_b
//Because we dont want to see our name in the chat History
if ($row['sender_a'] != $userId) {
$senderName = $row['sender_a'];
include 'connectDB.php';
$nameSearch = "SELECT `fName`, `lName` FROM `register` WHERE `id`='$senderName';";
$Searchresult = mysqli_query($dbconnect, $nameSearch);
$Searchrow = mysqli_fetch_assoc($Searchresult);
echo $Searchrow['fName'] ." ". $Searchrow['lName'];
?>
<input class="IDValue" name="IDValue" value="<?php echo $row['exist']?>" >
<?php
} else {
$senderName = $row['sender_b'];
include 'connectDB.php';
$nameSearch = "SELECT `fName`, `lName` FROM `register` WHERE `id`='$senderName';";
$Searchresult = mysqli_query($dbconnect,$nameSearch);
$Searchrow = mysqli_fetch_assoc($Searchresult);
echo $Searchrow['fName'] ." ". $Searchrow['lName'];
?>
<input class="IDValue" name="IDValue" value="<?php echo $row['exist']?>" >
<?php
}
?>
</li>
</div>
<?php
}
}
?>
</ul>
有人可以帮帮我吗?我真的厌倦了解决它。谢谢它提前!
P.S:它通常显示(一个chrome开发工具)http://localhost/html/retrieveMsg.php?q=16 nomatter,我点击(16是第一个li标签btw)
答案 0 :(得分:2)
您正在选择'.IDValue',这是一个类名。请注意,此列表中的所有内容都具有此类名称,因为您执行以下操作:
<input class="IDValue"...
你应该这样做:
<input id="<?echo $row["idValue"];?>" ...
或类似的东西,然后:
var ID = document.getElementByID('34').value;
答案 1 :(得分:1)
由于你的选择器BufWriter
,你总是得到16(它总是抓住第一场比赛,在你的情况下是li 16)。
如果您已经无法使用Javascript内联,则可以通过消息功能传递ID,或使用.IDValue
将ID存储在li本身上:
data-id="<?php echo $row['exist']?>"
PS:您应该查看PDO以获取您的mysql数据
答案 2 :(得分:0)
您可以这样做:
<li style="..." --data-id="<?echo $row["idValue"];?>" onclick="message(this);">something you like</li>
然后,您必须声明如下消息:
function message(tag) {
var ID = tag.getAttribute("--data-id");
...
}