2015-02-16 2 views
0

Im пытается создать список сообщений с ответами над каждым сообщением с ответом. Таблица сообщений и таблица ответов связаны чужим идентификатором. все в порядке, сохраняя данные. Я хочу показать ответы, прилагаемые к его собственному отцу сообщения.Получить правильные результаты из Triple Inner Join

все работает нормально до тех пор, пока я не попытаюсь сохранить два ответа у одного и того же отца сообщения, он создает другой ответ отца с другим ответом вместо обоих ответов в том же сообщении.

здесь 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

Поле 'r_IDF' является родительским идентификатором сообщения? – Alex

+0

Да - главный ключ – Brodie

ответ

0

Я не знаю, если понимать правильно, но я думаю .. .

Этот запрос, который вы должны будете генерировать дополнительные записи для каждого ответа, что у вас есть для того же сообщения , так что если у вас есть один ряд на столе сообщений и 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']; 
    } 
} 

Я надеюсь, что эта помощь.

+0

Спасибо! это помогло много, я точно не знал, как это работает – Brodie

+0

, который отлично работает! – Brodie

+0

@Brodie, если ответ помог вам пометить его как правильный ответ, нажав на галочку (✓) или повысив ее ;-) –

Смежные вопросы