我正在尝试创建一个消息列表,其中每个消息上面都有响应。消息表和响应表由外部id连接。保存数据一切正常。我想展示他自己的留言父亲的回复。
它的工作原理很好,直到我尝试在同一个消息父中保存两个响应时,它会用另一个响应创建另一个消息父亲,而不是在同一消息中同时保存两个回应。
这是
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>";
}
`
我不知道理解是否正确,但我认为。。。
您的这个查询将为您对同一消息的每个响应生成额外的条目因此,如果Message表上有一行,Response表上有三行,则会得到三行示例
Message ID | Response ID |
1 | 1
1 | 2
1 | 3
在您的php输出中,我看不到任何检测和分组响应的机制,因此每个响应都将显示为另一条消息
我认为您必须将三重联接查询分解为两个查询,一个用于消息,另一个用于响应当你循环消息时,你必须调用响应查询来获得响应
while ($row = mysql_fetch_assoc($sqlMessages)) {
echo 'Message';
echo displayResponses($row['messageId']);
}
function displayResponses($messageId) {
while ($row = mysql_fetch_assoc($sqlResponse)) {
echo $row['response'];
}
}
我希望这能有所帮助。