我试图创建一个消息列表,其中包含响应的每条消息上方的响应。 消息表和响应表由外部id连接。 一切都可以保存数据。我想要显示他自己的消息父亲的回应。
它工作正常,直到我尝试在同一个消息父保存两个响应时,它创建另一个消息父与另一个响应而不是同一消息中的两个响应。
这里s
function getFormattedDateTime(dateTimeToFormat) {
dateTimeToFormat = new Date(dateTimeToFormat);
var monthOptions = {
month: 'long', year: 'numeric', day: 'numeric',
hour: '2-digit', minute: '2-digit'
};
return dateTimeToFormat.toLocaleTimeString('en-us', monthOptions);
Sql查询:
$totalMensajesR = mysql_num_rows($numMsgRespuesta);
$totalRows = mysql_num_rows($registroTriple);
$registroTriple = mysql_query("SELECT
mensajes.ID as 'm_ID',
mensajes.USER_NAME,
mensajes.CONTENIDO as 'm_CONTENIDO',
mensajes.FECHA as 'm_FECHA',
respuestas.ID as 'r_ID',
respuestas.ID_F as 'r_IDF',
respuestas.USER_NAME as 'r_USERNAME',
respuestas.FECHA as 'r_FECHA',
respuestas.CONTENIDO as 'r_CONTENIDO',
usuarios.ID_USER as 'u_idUSER',
usuarios.USER_NAME,
usuarios.CORREO
FROM mensajes
LEFT OUTER JOIN respuestas ON (respuestas.ID_F = mensajes.ID)
LEFT OUTER JOIN usuarios ON (usuarios.USER_NAME=mensajes.USER_NAME)",$conexion) or die("Problemas en el select:".mysql_error());
我需要展示的内容
if ($totalRows!=0){
while ($row= mysql_fetch_assoc($registroTriple))
{
echo "<br />";
echo "<div id='$row[m_ID]' class='borderMensajes'>";
echo "<form name='formulario' action='' onsubmit='enviarDatos(); return false'>";
echo "<img id='imagenUsuario' src='getImageFromUsuarios.php?ID=$row[u_idUSER]'/>";
//echo "<span class='divDin2'>Product: </span>";
echo "<span class='divDin2'>$row[USER_NAME]</span>";
echo "<br/><br/>";
echo "<span class='divDinamico'>Mensaje: </span>";
echo $row["m_CONTENIDO"];
echo "<br/><br/>";
echo "<span class='divDinamico'>Fecha: </span>";
echo $row['m_FECHA'];
echo "<br/>";
echo "<h5></h5>";
echo "<input class='btRespuesta' id='_botonArchivar' onclick='AddResponse($row[m_ID])' name='responder' type='submit' value='Responder'/>";
echo "<div>";
//$row = mysql_fetch_assoc($registroTriple);
if ($row['r_IDF']==$row['m_ID'])
{
echo $row['r_USERNAME'];
echo "<span class='divDinamico'>Mensaje: </span>";
echo $row["r_CONTENIDO"];
echo "<span class='divDinamico'>Fecha: </span>";
echo $row["r_FECHA"];
}
echo "</div>";
echo "<br /><br />";
echo "</form>";
echo "</div>";
}
`
答案 0 :(得分:0)
我不知道是否理解正确,但我认为......
您拥有的此查询将为您对同一邮件的每个响应生成其他条目 因此,如果Message表上有一行,Response表上有3行,则会得到3行 例子
Message ID | Response ID |
1 | 1
1 | 2
1 | 3
在你的php输出中,我没有看到任何检测和分组响应的机制,所以每个响应都会显示为另一条消息
我认为您必须将三重连接查询分解为2个查询,一个用于消息,一个用于响应 在循环消息时,您必须调用响应查询以获取响应
while ($row = mysql_fetch_assoc($sqlMessages)) {
echo 'Message';
echo displayResponses($row['messageId']);
}
function displayResponses($messageId) {
while ($row = mysql_fetch_assoc($sqlResponse)) {
echo $row['response'];
}
}
我希望这有帮助。