Foros del Web » Programando para Internet » PHP »

hacer que se ordenen en orden descendente desde el segundo mensaje?

Estas en el tema de hacer que se ordenen en orden descendente desde el segundo mensaje? en el foro de PHP en Foros del Web. hola amigos, tengo en mi foro para que se vayan ordenando los mensajes mas nuevos en el final pero lo que me gustaria hacer es ...
  #1 (permalink)  
Antiguo 15/09/2009, 12:16
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Pregunta hacer que se ordenen en orden descendente desde el segundo mensaje?

hola amigos, tengo en mi foro para que se vayan ordenando los mensajes mas nuevos en el final pero lo que me gustaria hacer es que salga el mensaje principal del tema y desde hay hacer que los mas nuevos se vayan poniendo primeros pero nunca por encima del mensaje principal es decir siempre en la 2ª posicion.

mi codigo es este:

Código PHP:
<?php
session_start
();

require(
'configuracion.php');

$id $_GET["id"];
if(empty(
$id)){
header("Location: index.php");
}


require(
'funciones.php');
include(
"funcionicono/emoticonos.php");
require(
"../usuarios/usu/menusuario/mensprivada/nm.php");
include(
"../funciones/usuariosenlinea/usuariosenlinea.php");

$sql "SELECT id, email, titulo, mensaje, youtube_video, login, ";
$sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
$sql.= "WHERE id='".mysql_real_escape_string($id)."' OR identificador='".mysql_real_escape_string($id)."' ORDER BY fecha ASC";
$rs mysql_query($sql$con); 



if(
mysql_num_rows($rs)>0)
{
    include(
'titulos_post.html');
    
$template implode(""file('post.php'));
    while(
$row mysql_fetch_assoc($rs))
    {
        
$color=($color==""?"#5b69a6":"");
        
$row["color"] = $color;
        
//manipulamos el mensaje
        
$row["mensaje"] = nl2br($row["mensaje"]);
        
$row["mensaje"] = parsearTags(emoticonos($row["mensaje"]));
        
mostrarTemplate($template$row);
    }
}
?>
post.php

Código PHP:
<?php
$idprimera 
$_GET["id"];

include(
"configuracion.php");

$result=mysql_query("SELECT DATE_FORMAT(fecha,'%d/%m/%Y') fecha, avatar FROM usu WHERE email='".mysql_real_escape_string($login)."'",$con);
$rowusu=mysql_fetch_array($result);
?>
<table width="983px" border="0" align="center" cellpadding="2" cellspacing="2">
  <tr bgcolor="<?=$color?>"> 
    <td width="25%" valign="top"> <b><a name="<?=$id?>"><?php if($_SESSION["login"]){ echo "<a href=\"usu/miperfil.php?id=$id\">"; } ?><?=$email?><?php if($_SESSION["login"]){ echo "</a>"; } ?></a>
      </b><br>
      <font size="-2"><?php if(!$rowusu['fecha']==NULL){
      echo 
"Usuario desde: ".$rowusu['fecha']."<br />"; }?>
      Mensaje enviado el : <?=$enviado?><br />Avatar:<br /></font>
      <?php
      
echo "<div align=\"left\"><br /><img src=\"foro/usu/avatar/".$rowusu['avatar']."\" /></div>"?>
    </td>
    <td> 
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><strong><font size="-1"><?=$titulo?></font></strong> </td>
          <?php
          
if(isset($_SESSION['login'])){
          echo 
"<td align=\"right\" width=\"10%\"><a href=\"respuesta.php?id=$idprimera\"><img src=\"imagenes/responder.gif\" border=\"0\" /></a></td>";
          
          if (
$login==$_SESSION['login']){
          
?>
<form action="<? echo "editpost/actualizar.php" ?>" enctype="multipart/form-data" method="post" name="form">
<td width="13%" align="right">
<input name="id" type="hidden" value="<?php echo $id;?>">
<input name="submit" type="image" src="imagenes/botoneditar.gif">
</td>
</form>
<?php
}
          }
          
?>          
        </tr>
      </table>
      <hr align="center" width="100%" size="2" noshade>
      <?=$mensaje?>
      <br />
      <?php
      
if(!$youtube_video==NULL){
      
?>
      <object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/<?php echo $youtube_video ;?>&rel=1&color1=0x2b405b&    color2=0x6b8ab6&border=1"></param>  <param name="wmode" value="transparent"></param>  <embed src="http://www.youtube.com/v/<?php echo $youtube_video ;?>&rel=1&color1=0x2b405b&color2=0x6b8ab6&border=1"    type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>
      <?php
      
}
      
?>
      </td> 
  </tr>
</table>
no se me ocurre como hacerlo me dan alguna idea?
  #2 (permalink)  
Antiguo 16/09/2009, 03:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

Puedes hacer un query unico del mensaje original, y un segundo query de los demas, haces un loop de los demas mensajes y el original lo colocas antes del loop, porque se va a basar del query que hiciste individual.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 16/09/2009, 04:05
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

perdido.... yo habia pensado eso de hacer dos consultas independientes pero que a la vez esten unidas por que las que mostraran tendran el mismo identificador pero ando liado...
  #4 (permalink)  
Antiguo 16/09/2009, 04:22
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 7 meses
Puntos: 16
como determinas el mensaje principal tel tema , con identificador?

suponiendo que usas el campo identificador para saber si es el mensaje principal podes hacerlo desde la misma consulta

Código PHP:

$sql 
"SELECT id, email, titulo, mensaje, youtube_video, login, ";
$sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
$sql.= "WHERE id='".mysql_real_escape_string($id)."' OR identificador='".mysql_real_escape_string($id)."' ORDER BY identificador ASC, fecha ASC"
esto de va a devolver primero el orden del identificador y luego el orden de las fechas

Última edición por GatorV; 16/09/2009 a las 13:52
  #5 (permalink)  
Antiguo 16/09/2009, 04:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

¿Como es la estructura de la base de datos?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 16/09/2009, 06:13
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

mira el id principal es el id que se genera automatico con el autoincrement y luego las respuestas de los mensajes se le añade el identificador que es el id del tema principal.

Base de datos:

* id
*email
*titulo
*mensaje
*fecha
*respuestas
*identificador
*ult_respuesta
*youtube_video
*login
*visitas
  #7 (permalink)  
Antiguo 16/09/2009, 06:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

Pues lo que tu haces es que cuando se haya seleccionado el id por ejemplo
Cita:
example.com?id=2
Haces una consulta solamente al id, este va a ser el principal y este vas a declararlo primero. Luego haces otra consulta usando ese mismo id y buscas por identificador. Ya que me imagino que identificador tiene 2. Esto lo colocas en un loop despues del primero mensaje. Ahora para que no salga el mensaje principal en el loop, eso va a depender de como hayas creado el identificador en ese comentario principal. Si lo colocaste como null, automaticamente no va a aparecer. Si le colocaste el mismo id que tiene, solamente debes crear una condicion indicando AND id<>identificador
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 16/09/2009, 06:40
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

jujujuju no te puedes hacer una idea de lo perdido que me has dejado.... :S, tienes algun ejemplillo por hay? mira yo habia pensado en hacer esto:

Código PHP:
$sql2 "SELECT id, email, titulo, mensaje, youtube_video, login, ";
$sql2.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
$sql2.= "WHERE id='".mysql_real_escape_string($id)."'";
$rs2 mysql_query($sql2$con); 

/*Consulta 2*/
$sql "SELECT id, email, titulo, mensaje, youtube_video, login, ";
$sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
$sql.= "WHERE identificador='".mysql_real_escape_string($id)."' ORDER BY fecha DESC";
$rs mysql_query($sql$con); 
esto te refieres? de hacer esas 2 consultas
  #9 (permalink)  
Antiguo 16/09/2009, 06:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

Mijo me tienes grave, te lo trate de explicar sencillo, vamos a ver si lo logro explicar mas sencillo todavia. La primera consulta solo te hace falta mysql_fetch_array o mysql_fetch_assoc individual.
Código PHP:
Ver original
  1. $sql2 = "SELECT id, email, titulo, mensaje, youtube_video, login, ";
  2. $sql2.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
  3. $sql2.= "WHERE id='".mysql_real_escape_string($id)."'";
  4. $rs2 = mysql_query($sql2, $con);  
  5. $row2 = mysql_fetch_assoc($rs2);
Luego en la segunda consulta solo te hace falta hacer un loop
Código PHP:
Ver original
  1. $sql = "SELECT id, email, titulo, mensaje, youtube_video, login, ";
  2. $sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
  3. $sql.= "WHERE identificador='".mysql_real_escape_string($id)."' ORDER BY fecha DESC";
  4. $rs = mysql_query($sql, $con);
  5. while($row1 = mysql_fetch_assoc($rs)){
  6.   //codigo
  7. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 16/09/2009, 06:49
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

vale lo de la consulta vale... :D, lo que me pierde tambien es esto:

Código PHP:
if(mysql_num_rows($rs)>0)
{
    include(
'titulos_post.html');
    
$template implode(""file('post.php'));
    while(
$row mysql_fetch_assoc($rs))
    {
        
$color=($color==""?"#5b69a6":"");
        
$row["color"] = $color;
        
//manipulamos el mensaje
        
$row["mensaje"] = nl2br($row["mensaje"]);
        
$row["mensaje"] = parsearTags(emoticonos($row["mensaje"]));
        
mostrarTemplate($template$row);
    }

que lo que hace es llamar a la otra pagina que puse en el primer mensaje, el mensaje principal deberia de mostrarlo antes de esa llamada verdad?
  #11 (permalink)  
Antiguo 16/09/2009, 06:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

Ya tu eres el incomprensible. No te entendí.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 16/09/2009, 06:57
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

jejejej haber como explicar..... haber se supone que el mensaje principal se mostrara a parte de los que tienen su mismo identificador no?
Porque tal como esta ahora mostraria solo los mensajes que tienen el mismo identificador pero no el principal que tiene ese id?
  #13 (permalink)  
Antiguo 16/09/2009, 07:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

Exacto, por eso te indique hicieras dos querys y usando lo que te mencione.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 16/09/2009, 07:03
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
:(........ creo que estoy ya mareado.... me refiero a que entonces ahora para mostrar el mensaje principal deberia de hacer otra estructura exactamente igual que la de post.php pero solo para ese mensaje?

Abimaelrc despues de haber comido algo me a venido la luz ya lo e conseguido :D, he echo otra pagina llamada post2.php y e puesto exactamente lo mismo que en la post.php y en la que llama a esas paginas e puesto primero la post2.php y luego el while con post.php y me sale como yo queria, el primer mensaje es el que abre el tema y la lista de abajo empieza por el mas nuevo, si falla en algo ya te comento ;)

Última edición por GatorV; 16/09/2009 a las 13:52
  #15 (permalink)  
Antiguo 16/09/2009, 07:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

Vas a tener que comer mas a menudo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #16 (permalink)  
Antiguo 16/09/2009, 07:31
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: hacer que se ordenen en orden descendente desde el segundo mensaje?

lo malo de esto que no me permite darte mas karma osino te revosaria seguro :P jajajaj
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:10.