PDA

View Full Version : سوال: تکرار نشدن id در دو حلقه‌



omedonline
پنج شنبه 09 مهر 1388, 19:09 عصر
سلام
یک تیبل دارم به‌ این شکل :

id | title | cat |
------------------
1 | a | 1 |
2 | b | 2 |
3 | c | 2 |
4 | d | 2 |
5 | e | 1 |
6 | f | 2 |
7 | g | 1 |
8 | h | 1 |
9 | i | 2 |
10 | j | 1 |

2 تا کوئری دارم :
واسه‌ 3 تا آخرین خبر
$Query1 = mysql_query( "Select * from `t_news` order by `id` DESC LIMIT 5" );
واسه‌ 3 تا آخرین خبر از موضوع 1
$Query2 = mysql_query( "Select * from `t_news` where `cat` = '1' order by `id` DESC" )
حالا به‌ این شکل میخوام نمایشون بدم بدون اینکه‌ خبرها تکرار بشه‌ یعنی اول چک بشه‌ اگر id در حلقه‌ اول بود در دومی نمایش داده‌ نشه‌:

latest news
----------------------
10 j 1
9 i 2
8 h 1
Latest News cat 1
---------------------
7 g 1
5 e 1
1 a 1

s_salavati2002
پنج شنبه 09 مهر 1388, 19:43 عصر
سلام
یک تیبل دارم به‌ این شکل :

id | title | cat |
------------------
1 | a | 1 |
2 | b | 2 |
3 | c | 2 |
4 | d | 2 |
5 | e | 1 |
6 | f | 2 |
7 | g | 1 |
8 | h | 1 |
9 | i | 2 |
10 | j | 1 |
2 تا کوئری دارم :
واسه‌ 3 تا آخرین خبر
$Query1 = mysql_query( "Select * from `t_news` order by `id` DESC LIMIT 5" ); واسه‌ 3 تا آخرین خبر از موضوع 1
$Query2 = mysql_query( "Select * from `t_news` where `cat` = '1' order by `id` DESC" )حالا به‌ این شکل میخوام نمایشون بدم بدون اینکه‌ خبرها تکرار بشه‌ یعنی اول چک بشه‌ اگر id در حلقه‌ اول بود در دومی نمایش داده‌ نشه‌:

latest news
----------------------
10 j 1
9 i 2
8 h 1
Latest News cat 1
---------------------
7 g 1
5 e 1
1 a 1


WHERE `field` NOT IN (a,b,c)

اون a,b,c رو از گزارش قبلیت بگیر

omedonline
جمعه 10 مهر 1388, 00:17 صبح
دوست عزیز مشکل همینه‌ که‌ نمیدونم چطور میشه‌ این کارو کرد.
دوستان راهنمایی کردن گفتن id های کوئری اول رو تو یه‌ ارایه‌ بریزم به‌ این صورت اما جواب نداد

$Query1 = mysql_query( "Select * from `t_news` order by `id` DESC LIMIT 3" );
while( $r = mysql_fetch_assoc( $Query1 ) )
{
$ID[] = $r['id'];
echo "Latest News :<br />";
echo $r['title'];
echo "<br />";
}
echo "<hr />";
$Query2 = mysql_query( "Select * from `t_news` where `cat` = '1' order by `id` DESC LIMIT 3" );
while( $s = mysql_fetch_assoc( $Query2 ) )
{
if( ! in_array( $r['id'] , $ID ) )
{
echo "Latest News In Category 1 :<br />";
echo $s['title'];
echo "<br />";
}
}

امیـرحسین
جمعه 10 مهر 1388, 01:49 صبح
با همون IN درسته دیگه:
$sql = "SELECT * FROM`t_news` WHERE`cat` = '1' AND id NOT IN(" .join(',', $ID). ") order by `id` DESC LIMIT 3";
$Query2 = mysql_query($sql);

omedonline
جمعه 10 مهر 1388, 17:54 عصر
دستتون درد نکنه‌ فقط یک توضیح کوچولو هم بدین که‌ این کارش چیه‌؟


(" .join(',', $ID). ")

خیلی ممنون میشم

امیـرحسین
جمعه 10 مهر 1388, 22:09 عصر
تابع join (http://ir.php.net/manual-lookup.php?pattern=join&src=) از آرایه لیست درست می کنه:
$array = array('lastname', 'email', 'phone');

$comma_separated = join(",", $array);
echo $comma_separated; // lastname,email,phone

$pipe_separated = join("|", $array);
echo $pipe_separated; // lastname|email|phone