2011-12-28 21 views
0

私は前の機能を動作させる方法を理解できません。配列の最後の項目のmysqlフィールド 'title'が現在のものと等しいかどうかを確認したい場合は、でない場合は、というタイトルを印刷します。php配列の表示

$usernotes = mysql_query("select * from notes where user_id= '$user_id'"); 
Print "<table border=0>"; 
while($info = mysql_fetch_array($usernotes)) 
{ 
    if($info['title'] != prev($info['title')) 
    { 
    Print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    } 
} 
Print "</table>"; 

それは私にエラー

Warning: prev() expects parameter 1 to be array

を与え、私は何をすべき?

+0

私はあなたのコードではprev関数の使用が無効であると思います。配列だけを受け取りますhttp://php.net/manual/en/function.prev.phpあなたは小さな回避策で必要なものを手に入れることができます。 –

+0

重複を避けようとしている場合は、ループ外のローカル変数を ""(例えば)に設定し、ループの開始時にローカル変数が '' info ["title"] 'そうでない場合は、 eローカル変数 'info [" title "]'と同じ行を出力します。また、タイトルからSELECT DISTINCTを使用して、重複しないでSQLからデータを取得することもできます。 – Yaniro

答えて

2

関数prev()は、配列項目を項目ごとに読み取るときに現在のインデックスを変更するためのものです。 ループは配列を読み込んでいませんが、SQLレコードセットを読み込んでいます。これは小さな回避策です

Print "<table border=0>"; 
$prev_title = ''; 
while($info = mysql_fetch_array($usernotes)) 
{ 
    if($info['title'] != $prev_title) 
    { 
    $prev_title = $info['title']; 
    Print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    } 
} 
Print "</table>"; 
1

これは動作するはず

ありがとう:

$prevTitle = ''; 
while($info = mysql_fetch_array($usernotes)) 
{ 
    if($info['title'] !== $prevTitle) 
    { 
     Print ... 
    } 
    else 
    { 
     $prevTitle = $info['title']; 
    } 
} 
0

私は、問題はあなたが前の()関数内で閉じ角括弧を逃していることだと思います。

0

お近くの]をお忘れですか?

Print "<table border=0>"; 
while($info = mysql_fetch_array($usernotes)) 
{ 
    if($info['title'] != prev($info['title'])) 
    { 
    Print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    } 
} 
Print "</table>"; 

このエラーが発生しています。上記のコードを試して、結果を確認してください。

2

:ここ

は動作するはずのものです。

print "<table border=0>"; 
$previousValue = ""; 
while($info = mysql_fetch_array($usernotes)) 
{ 
    if($info['title'] != $previousValue)) 
    { 
     $previousValue = $info['title']; 
    print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    } 
} 
print "</table>"; 

コードにはほとんど問題がありません。

  1. それはあなたがあなたのSQLの結果セットは常にタイトルによってオーダーであること。そうでない場合は、コードの上に完璧に動作しませんを確認する必要があります「印刷」ではない 『印刷』
  2. でなければなりません。
関連する問題