PDA

View Full Version : مبتدی: دستور while فقط یکبار اجرا بشه



chaown
شنبه 16 اردیبهشت 1391, 14:46 عصر
سلام
یه حلقه while دارم که 4 بار اجرا داره ولی نتیجه ای که من می خوام فقط در حلقه چهارم درسته پس سه حلقه اول رو نمی خوام
این چه جوریاست ؟

البته این چهاری که می گم ، متغیره ممکنه کمتر یا بیشتر باشه.
ممنون.

djsaeedkhan
شنبه 16 اردیبهشت 1391, 14:48 عصر
سلام
کارش یه If هست با continue
شما تعداد بگیر که کلا چند تا هست
بعد یکی ازش کم کنی میشه دفعه آخر
و تمام

MMSHFE
شنبه 16 اردیبهشت 1391, 14:51 عصر
البته درستش حلقه while هست ولی خوب چه کاریه؟ وقتی میدونید کدوم یکی درسته، خوب یک if بگذارین و تمام. دیگه چرا n بار تکرار کنید و فقط یکبار انجام بشه؟ هدف فقط اتلاف زمان هست؟

chaown
شنبه 16 اردیبهشت 1391, 15:24 عصر
این کار اشتباست و جواب درست نمی گیرم.
من یه سایت دارم که کارش ارسال پست برای دوستانه ( کسایی که تو جدول friends ) با کاربر جاری دوستن
من اول باید دوستان رو پیدا کنم بعد پست های اونا رو تو صفحه قرار بدم . که پست های هر شخص رو دوستان آن شخص ببینن ، مثل شبکه های اجتماعی
کاری که من کردم اینه :
اول با یه دستور دوستان کاربر جاری رو پیدا کردم :

$findFriend=mysql_query("select friend_Uname from friends where user='".$_SESSION["userName"]."' or friend_Uname='".$_SESSION["userName"]."'")or die(mysql_error());

بعد با یه حلقه while پست های ای دوستان رو پیدا کردم و چاپ کردم :


while($findFriendASSOC=mysql_fetch_assoc($findFrie nd))
{
$selectFriendsPost=mysql_query("select * from posts where postUser='".$findFriendASSOC['friend_Uname']."' or postUser='".$_SESSION['userName']."' ORDER BY date DESC LIMIT 10")or die(mysql_error());
چاپ مقادیر

while($selectFriendsPostASSOC=mysql_fetch_array($s electFriendsPost,MYSQL_ASSOC))
{
که این کار اشتباه است چون هر بار پست های یک دوست رو چاپ می کنه و توش پست ها تکراری هم هست.
چکارش کنم درست شه؟

MMSHFE
شنبه 16 اردیبهشت 1391, 17:01 عصر
$query = <<<EOT
SELECT DISTINCT *
FROM `posts`
WHERE (`postUser` IN
(SELECT DISTINCT `friend_name`
FROM `friends`
WHERE (`user`='{$_SESSION['userName']}')
) OR `postUser`='{$_SESSION['userName']}')
EOT;
$posts = mysql_query($query);
if($posts && mysql_num_rows($posts) > 0) {
while($post = mysql_fetch_assoc($posts)) {
echo '<pre>'.PHP_EOL;
print_r($post);
echo '</pre>'.PHP_EOL;
}
}

موفق باشید.