我在循环中的循环中有错误

时间:2013-01-02 17:10:58

标签: mysql php

我有这个错误:

  

警告:mysql_data_seek()[function.mysql-data-seek]:偏移9对MySQL结果索引4无效(或查询数据未缓冲)

我有一个表消息,我想显示最近的消息。如果用户1已登录,我想这样做:例如,如果用户1向用户2发送消息,然后用户2向用户1发送消息,我想向用户1显示最新消息。所以它将是用户2发送的那个。 所以,我必须向用户1显示ids 2和3。

 <div class="maincontent">
    <!-- Obtengo datos -->
    <?php 
             $conexion=mysql_connect('localhost','root','root') or die('No');
    $db=mysql_select_db('carpe',$conexion)or die('no existe la base de datos.');

    $id= $_SESSION['id'];

    $multid_array = array();
    $outercnt=0;
 $consulta=mysql_query("select * from messages where id_from='".$id."'
 or id_to='".$id."' order by id asc");
    while($filas=mysql_fetch_array($consulta)){
        $id=$filas['id'];
        $id_to=$filas['id_to'];
        $id_from=$filas['id_from'];
        $status=$filas['status'];
        $text=$filas['text'];
        $time=$filas['time'];
        echo "lo primero: ";

        echo $id;
        echo " ";


        mysql_data_seek($consulta, 0);
        while($filas2=mysql_fetch_array($consulta)){
            $id2=$filas2['id'];
            $id_to2=$filas2['id_to'];
            $id_from2=$filas['id_from'];
            $status2=$filas2['status'];
            $text2=$filas2['text'];
            $time2=$filas2['time'];
            echo "es ";
            echo $id2;
                if($id_from==$id_from2 && $id_to==$id_to2 && $id2>$id){ 
                    $id=$id2;           
                    echo "el mas grande ";
                    echo $id;
                }
        }
         mysql_data_seek($consulta,$outercnt); 
         $outercnt++; 

        //Almaceno en un vector los mensajes a mostrar
        $multid_array[]=$id;



        echo "nuevo elemento  ";
        echo $id;
    }


    //Elimino duplicados
    $resultado = array_unique($multid_array);

    for ($x=0;$x<count($resultado); $x++){
        $id=$resultado[$x];
        $consulta=mysql_query("select * from messages where id='".$id."'");
        echo "arreglo ";
        echo $id;
        echo " ";
        while($filas=mysql_fetch_array($consulta)){
            $id_from=$filas['id_from'];
            $id_to=$filas['id_to'];
            $status=$filas['status'];
            $subject=$filas['subject'];
            $text=$filas['text'];
            $time=$filas['time'];           
        }




    ?>
            <h3><a href="#">Asunto: <?php echo $id?></a></h3>
            <span class="postInfo">Enviado por: <a href="#">De <?php echo
                         $id_from ?></a> A <?php echo $id_to ?> - <?php echo $time ?></span>
            <p><?php echo $text ?></p>
            <a class="more" href="#">Responder</a>
            <hr>
            <?php } ?>
            <hr>
        </div>

第一个错误是我想要做的事情: mysql_data_seek($ CONSULTA,$ outercnt);

当我这样做时,我有另一个错误(第二个): $ ID = $ resultado [$ X];

这是第二个错误:  注意:未定义的偏移量:1

我目前正在显示消息,但我有这些错误。谢谢!

2 个答案:

答案 0 :(得分:0)

您正在尝试获取第9行,但没有第9行。

在尝试获取行之前检查返回了多少行?

答案 1 :(得分:0)

for ($x=0;$x<count($resultado); $x++){
        $id=$resultado[$x];

它获取$ x元素,该元素可能不存在,

在$ id = $ resultado [$ x]之前和之后; ,粘贴:

if (!isset($resultado[$x])){
continue;
}