PDA

View Full Version : سوال: جمع چند عدد از جدول my sql



salamu
چهارشنبه 02 اسفند 1391, 19:06 عصر
من با دستور زیر عددی رو به صفحه ی php با نام saver.php می فرستم و توسط اون تو پایگاه داده ذخیرش می کنم:

کد html:

<form dir="rtl" method="POST" action="saver.php">
<table align="right" border="2" cellpadding="4" cellspacing="4">
<tr>
<td align="right">رفتار</td>
<td><input type="radio" name="point" value="20">عالی</td>
<td><input type="radio" name="point" value="15">خوب</td>
<td><input type="radio" name="point" value="10">متوسط</td>
<td><input type="radio" name="point" value="5">ضعیف</td>
</tr>
</table>

</br>
</br>
</br>

<input type="submit" name="send" value="ثبت">
</form>

<form dir="rtl" method="POST" action="result.php">
<input type="submit" name="send" value="دیدن نتایج">
</form>


کد PHP:

<?php
if(isset($_POST['send'])){
$handle=mysql_connect("mysql.xzn.ir", "u866020542_1", "zxczxc");
if($handle==false){
die(mysql_error());
}

$db=mysql_select_db("u866020542_poll");
if($db==false){
die(mysql_error());
}
$point=$_POST['point'];
mysql_set_charset('utf8',$handle);

mysql_query("INSERT INTO nazar (point, ip, id) VALUES($point,'{$_SERVER['SERVER_ADDR']}', 1)") or die(mysql_error());

$num=mysql_affected_rows($handle);
if($num==1){
echo "ارسال شد.";
}
else
if($num == 0){
echo "ارسال نشد";
}
mysql_close($handle);
}
?>


بعد با دستور زیر تعداد آرا و امتیاز های ثبت شده رو می خونم:

<?php
$con = mysql_connect("mysql.xzn.ir", "u866020542_1", "zxczxc");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("u866020542_poll", $con);
$people = mysql_num_rows(mysql_query('SELECT * FROM `nazar` WHERE `id` = \'1\''));

$result = mysql_query("SELECT * FROM nazar");


echo "نفر به سوال جواب داده اند {$people}";
echo "<اینجا این متن برای حفظ ظاهر هست و جزو دستور نیست br />";
while($row = mysql_fetch_row($result))
{
echo $row['point'] . " ";
}

mysql_close($con);
?>


حالا مشکلم اینه که این دستور اگه مثلاً یه 15 و یه 10 و... ثبت شده باشن،اونا رو به طور جدا جدا نشون میده و من می خوام به جای این همه رو جمع بزنه و یه مجموع عدد به ما بده.اگه نمونه کدی دارید ممنون میشم.

omid_student
پنج شنبه 03 اسفند 1391, 18:16 عصر
سلام
خوب بنویس select SUM(point) from nazar
این دستور کل امتیازات هر نظر رو جمع میکنه بهت میده
نمیدونم حالا منظورتون این هست یا نه

سميه اميني
پنج شنبه 03 اسفند 1391, 19:35 عصر
از گروه بندی استفاده کنین
یه همچین چیزی :


select SUM(point) from nazar group by point

MRmoon
جمعه 04 اسفند 1391, 07:41 صبح
نگا حالا نمیدونم این روش منطقیه یا نه اما میشه با دستورم while میشه جمع کرد نگا این مثلا یه نمونست:



<?PHP
$query = mysql_query("SELECT id FROM comment ",$this->connect()) or die(mysql_error());
$point = 0;
while($s = mysql_fetch_assoc($query))
{
$point += $s['id'];
}
echo $point;
؟>

salamu
جمعه 04 اسفند 1391, 11:44 صبح
ممنون میشم اگه راجع به SUM یه کم توضیح بدین.چون وقتی کد زیر رو می نویسم این پیام رو میده:Resource id #12


$point = mysql_query("SELECT SUM(point) FROM `nazar`");
echo "{$point}";

salamu
جمعه 04 اسفند 1391, 14:04 عصر
یعنی کسی توضیحی نداره؟هر دو دستور نوشته شده توسط SUM رو امتحان کردم ولی پیام Resource id #12 رو میده.چی کار کنم؟

MRmoon
جمعه 04 اسفند 1391, 14:18 عصر
دوستور while , امتحان کردی؟
من نوشتم درست بود همه رو هم جمع میکرد

Tarragon
جمعه 04 اسفند 1391, 15:09 عصر
$point = mysql_fetch_array(mysql_query("SELECT SUM(counter) FROM `visits`"));
echo $point['SUM(counter)'];

salamu
شنبه 05 اسفند 1391, 14:51 عصر
آقا هیچی نشون نمیده!

Tarragon
شنبه 05 اسفند 1391, 15:15 عصر
من تست کردم نشون داد
اینو تست کنید :
$point = mysql_fetch_array(mysql_query("SELECT SUM(counter) as _SUM FROM `visits`"));
echo $point['_SUM'];

salamu
شنبه 05 اسفند 1391, 15:21 عصر
دمت گرم همون درست بود!مشکل از سرور بود!در ضمن من توصیه می کنم که هیچ وقت از حلقه چه for چه while چه ... رو در هیچ زبانی برای جمع اعداد استفاده نکنید چون معمولاً مشکل پیش میاره.