2013-01-02 53 views
0

內我有這樣的錯誤:我在PHP在一個循環中的錯誤的循環

Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 9 is invalid for MySQL result index 4 (or the query data is unbuffered)

我有一個表的消息,我想以顯示最新的信息。如果用戶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

[請不要在新代碼中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Touki

回答

0

你試圖獲取第9行,但沒有行9

檢查多少行,你嘗試獲取他們之前返回?

+0

我沒有得到它,例如我有10行,所以我想比較第一行與所有行,然後去第二行,並做同樣的事情 – user1905120

+0

@ user1905120:如果你有10行,那麼你將它們全部複製到數組中並比較數組數據 - 而不是通過「mysql_data_seek」。 - 如果沒有,你讓MySQL做比較服務器端(是的,數據庫服務器已經爲此創建)。 – hakre

+0

所以,我使用從MySQL的while(就像我有這個代碼) 和第二次,而我將所有的行存儲在數組中?怎麼樣 ? – user1905120

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

它提取其可以是不存在的$ X元素,

適合和$ ID = $ resultado [$ X]之前後; ,貼:

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