PDA

View Full Version : سوال: مشکل در شمارش تعداد رکورد ها



terrorhell
یک شنبه 18 مرداد 1388, 22:39 عصر
سلام
بچه ها من یک مشکلی در جمع تعداد رکورد هایی که از دیتابیس میگیرم دارم و هر کاری کردم نفهمیدم مشکل از کجا بود

من از 3 حلقه وایل تو در تو استفاده کردم ، که حلقه سوم بر اساس اطلاعاتی که میگره یک کوئری رو اجرا میکنه و اطلاعات رو نمایش میده ،

مشکل من اینه که وقتی مثلاً اون کوئری 4 تا رکورد از جدول پیدا میکنه و نمایش میده و وقتی میخوام تعداد رکوردهایی که پیدا کرده رو بهم بگه واسه هر رکورد عدد 1 رو نسبت میده

مثلاً وقتی 4 رکورد از جدول پیدا میکنه و من دستور mysql_num_rows رو ازش میخوام اون 4 تا رکورد که پیدا کرده رو نمایش میده اما واسه دستور mysql_num_rows چهار تا یک نمایش میده
1111
و به همین صورت ( اگه 10 تا هم پیدا کنه نمایش میده و تعداد کل رکورد ها رو به این صورت نمایش میده 1111111111 )

ممنون میشم این کد رو ببینین و منو راهنمایی کنید .


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$user = $_GET['user'];
$sql = mysql_query("SELECT * FROM _users where username='$user'; ");
$row = mysql_fetch_assoc($sql);
$user_id = $row['id'];

$check = mysql_query("SELECT * FROM _friends where user_id='$user_id' ; ");



while($row1 = mysql_fetch_array($check))
{

$userid = $row1['user_id'];
$friendid = $row1['friend_id'];

$check2 = mysql_query("SELECT * FROM _friends WHERE user_id='$friendid' AND friend_id='$userid';");
$num2 = mysql_num_rows($check2);


if($num2 > 0 )
{
$row2 = mysql_fetch_array($check2);

$friend_show = $row2['user_id'];

$sql3 = mysql_query("SELECT * FROM _users where id='$friend_show'; ");
$row3 = mysql_fetch_assoc($sql3);

$frnd_user = $row3['username'];
$sql4 = mysql_query("SELECT * FROM _users WHERE username='$frnd_user'");
while($row4 = mysql_fetch_array($sql4))
{
$username_friend = $row4['username'];
$id_friend = $row4['id'];



$sql5 = mysql_query("SELECT * FROM profile WHERE user_id='$id_friend'");
while($row5 = mysql_fetch_array($sql5))
{
$num = mysql_num_rows($sql5);
echo $num; // age 5 ta record peida kone jame ro be in soorat minevise ( 11111 )




echo $username_friend; // etela@y ke az Database migire ma dorost namayesh mide

}



}

}
else
{
/////
}

}



?>

mrrajabi
دوشنبه 19 مرداد 1388, 07:52 صبح
$sql5 = mysql_query("SELECT * FROM profile WHERE user_id='$id_friend'");
خب این دستور یه رکورد بیشتر بر نمی گردونه

terrorhell
دوشنبه 19 مرداد 1388, 14:12 عصر
$sql5 = mysql_query("SELECT * FROM profile WHERE user_id='$id_friend'");
خب این دستور یه رکورد بیشتر بر نمی گردونه




سلام ، نه دیگه دوست عزیز این کوئری هر رکوردی که فیلد user_id اون با $id_friend مثلاً 1 برابر باشه نمایش میده

مثلاً 10 تا رکورد پیدا میکنه که user_id اونا 1 هست .

جناب آقای tarhebartar ، این کوئری هم جواب نمیده و همون مقدار 1 رو برمیگرده برای هر رکوردی که پیدا میکنه 1111


منتظر راهنمایی بقیه دوستان هم هستم چون این مشکل 5 روزه سرکارم گذاشته

ممنون دوستان

terrorhell
دوشنبه 19 مرداد 1388, 14:20 عصر
راستش من میخوام تعداد کل رکوردها رو بگیرم تا بتونم جدولی که این اطلاعات داخلش هست رو کنترل کنم که تو یک جدول مثلاً یک <tr> بزنه و 2 رکورد رو کنار هم نمایش بده و باز دوباره یک <tr> دیگه بزنه و بقیه اطلاعات رو به صورت 2 به 2 نمایش بده

مثلاً فرض میکنیم 5 تا رکورد پیدا کرده و اونارو به این صورت داخل یک <table> قرار بده :

رکورد 1 | رکورد 2
رکورد 3 | رکورد 4
رکورد 5

ممنون میشم اگر راهی باشه که بتونم این کارو انجام بدم دیگه کاری با اون شمارش کل رکوردها کاری ندارم

terrorhell
دوشنبه 19 مرداد 1388, 15:18 عصر
من نمی دونم یعنی می خوای چه کنی اگر مقدار های عددی رو می خوای جمع کنی مقدار فیلد رو بگیر اینجوری کن :

$fldNum = 0;
while($queryResult = mysql_fetch_array($query))
{
$fldNum += $queryResult['fldNum'];
}

echo $fldNum;

ببین دوست عزیز ، این کد داخل یک سری اطلاعات رو میگیره و نمایش میده ( مثلاً یوزر کاربرا )


$sql5 = mysql_query("SELECT * FROM profile WHERE user_id='$id_friend'");
while($row5 = mysql_fetch_array($sql5))
{



echo $username_friend."-";


}
حالا مثلاً اگه 4 تا یوزر نمایش بده به این صورت میشه

terrorhell-google-yahoo-barnamenevis

حالا من میخوام این اطلاعات داخل یک جدول قرار بگیره که اطلاعات رو به صورت 2 به 2 نمایش بده
<table>
<tr>
<td> terrorhell </td> <td> google </td>
</tr>
<tr>
<td> yahoo </td> <td> barnamenevis </td
</tr>
</table>

فکر کنم تونستم منظورمو برسومنم

terrorhell
سه شنبه 20 مرداد 1388, 17:45 عصر
کسی راهی واسه این کار نداره !؟

terrorhell
سه شنبه 20 مرداد 1388, 23:30 عصر
این کد رو نگاه کنید !


<?php
$user = $_GET['user'];
$sql = mysql_query("SELECT * FROM _users where username='$user'; ");
$row = mysql_fetch_assoc($sql);
$user_id = $row['id'];

$check = mysql_query("SELECT * FROM _friends where user_id='$user_id' ; ");
$num = mysql_num_rows($check);
//echo $num; // این متغیر تعداد کل رکوردهایی که پیدا میکنه چاپ میکنه . مثلاً 4


while($row1 = mysql_fetch_array($check))
{

$userid = $row1['user_id'];
$friendid = $row1['friend_id'];

$check2 = mysql_query("SELECT * FROM _friends WHERE user_id='$friendid' AND friend_id='$userid';");
$num2 = mysql_num_rows($check2);
if($num2 > 0 )
{
echo $num2; // این متغییر اگه مثلاً 4 تا رکورد پیدا کنه ، چهار تا 1 نمایش میده ( 1111)
}
}

?>

همینجور که تو کد کامنت زدم متغیر اول ($num = mysql_num_rows($check);) جمع کل رکورد ها درست نشون میده اما موقعی که اون کوئری رو در حلقه میزارم و میخوام تعداد کل رکوردها رو به دست بیارم مثلاً برای هر رکورد 1 رو برمیگردونه و اگه 4 تا رکورد پیدا کنه چهار تا 1 میزنه

باید چیکار کنم که جمع کل رکوردها رو تو حلقه نشون بده ،

در ضمن من میخوام کلاً این کارو انجام بدم

متغیر $_GET['user']; مثلاً مقدار 20 داره و میریم تو دیتابیس چک مکینیم آیا وجود داره یا نه اگه وجود داره تو حلقه باید چک کنم که آیا برعکس اون رکوردی که پیدا کرده هم وجود داره

مثلاً اگر user_id = 20 بود و friend_id = 10 بود ، چک کنه که آیا برعکس همین هم وجود داره ، یعنی : friend_id = 20 و user_id = 10

ممنون میشم راهنمایی کنید