PDA

View Full Version : سوال: ساخت نظر سنجی با php



salamu
پنج شنبه 26 بهمن 1391, 10:13 صبح
من یه نظر سنجی ساختم ولی این ارور رو میده:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


این هم کدیه که برا ذخیره کردن ازش استفاده می کنم:

<?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());
}
$yes=$_POST['yes'];
$no=$_POST['no'];
mysql_set_charset('utf8',$handle);
mysql_query("INSERT INTO nazar (yes, no) VALUES($yes,$no") or die(mysql_error());
$num=mysql_affected_rows($handle);
if($num==1){
echo "ارسال شد.";
}
else
if($num == 0){
echo "ارسال نشد";
}
mysql_close($handle);
}
?>


و این هم کد html صفحه هست:


<form dir="rtl" method="POST" action="saver.php">
<p align="right">آموزش خوبی بود؟</p>
<input type="radio" value="1" name="yes">بله<br>
<input type="radio" value="1" name="no">خیر<br>
<input type="submit" name="send" value="ثبت">
</form>


حالا لطفاً راهنمایی کنید چه کار کنم تا دیگه ارور نده.

2undercover
پنج شنبه 26 بهمن 1391, 10:38 صبح
این قسمت رو به این شکل تغییر بدید:
mysql_query("INSERT INTO nazar(yes, no) VALUES('$yes','$no')") or die(mysql_error());

salamu
پنج شنبه 26 بهمن 1391, 11:20 صبح
خیلی خیلی ممنون ولی یه چیزی کشف کردم! اونم اینه که کاربر می تونه هر دو گزینه رو انتخاب کنه!اگه name رو هم عوض کنم که نمیشه!کسی راجع به این چیزی نمی دونه؟یعنی به جز یکسان کردن name چه کار کنم تا کاربر فقط بتونه یک گزینه رو انتخاب کنه؟

Tarragon
پنج شنبه 26 بهمن 1391, 11:26 صبح
<select name="nazar">
<option value="yes">yes</option>
<option value="no">no</option>
</select>

mohsen6500
پنج شنبه 26 بهمن 1391, 11:43 صبح
سلام
دیگه چیکار می خوای بکنی؟
همون اسم هردو رادیو رو یکی درنظر می گیریم
یا اینکه یکی از اون هارو سلکت کنی که کاربر دیگه راهی نداشته باشه!


<input type="radio" selected="selected" value="1" name="nazar">بله
<input type="radio" value="1" name="nazar">خیر

و بعد مقدار ارسال شده رو چک می کنیم
فکر نکنم چیز دیگه ای بخواد!

mokha21
پنج شنبه 26 بهمن 1391, 11:54 صبح
شما باید name ها رو یک کنی و value هاشون رو تغییر بدی .

salamu
پنج شنبه 26 بهمن 1391, 13:37 عصر
ببخشید ولی اگه میشه راهنمایی کنید که چطوری value رو ارسال و تو فایل php در یافتش کنم؟مثل همون name هست؟

Tarragon
پنج شنبه 26 بهمن 1391, 13:39 عصر
بله مثله
$_POST['nazar'];

salamu
پنج شنبه 26 بهمن 1391, 14:22 عصر
اگه میشه کد php رو طوری تغییر بدید که این دستور رو درست بخونه و ثبت کنه چون من هر کاری کردم نشد و برای هر دو تو جدول 0 رو ثبت می کنه:

<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" value="yes" name="m1">بله</td>
<td><input type="radio" value="no" name="m1">خیر</td>
</tr>
</table>

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

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

Tarragon
پنج شنبه 26 بهمن 1391, 14:35 عصر
اين همون كد خودتون :

<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="poll" value="yes">بله</td>
<td><input type="radio" name="poll" value="no">خیر</td>
</tr>
</table>

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

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

<?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());
}
$poll=$_POST['poll'];
mysql_set_charset('utf8',$handle);
if($poll == 'yes')
mysql_query("INSERT INTO nazar (yes, no) VALUES(1,0)") or die(mysql_error());
elseif($poll == 'no')
mysql_query("INSERT INTO nazar (yes, no) VALUES(0,1)") or die(mysql_error());
$num=mysql_affected_rows($handle);
if($num==1){
echo "ارسال شد.";
}
else
if($num == 0){
echo "ارسال نشد";
}
mysql_close($handle);
}
?>
اما بنظر من بيايد يه سطر در نظر بگيريد و هر دفعه اونو بروز كنيد.

salamu
پنج شنبه 26 بهمن 1391, 14:42 عصر
آقا ممنون ولی شما توجه نکردید که دوباره بعلت تفاوت نام ها هر دو رو میشه انتخاب کرد.لطفاً به جای دادن پست جدید پست قبلی رو ویرایش کنید تا مبحث بیخودی شلوغ نشه.برای بروز کردن سطر(افزودن به عدد)باید چی کار کنم؟

MMSHFE
پنج شنبه 26 بهمن 1391, 15:48 عصر
کد HTML :


<form action="saver.php" dir="rtl" method="post">
<p align="right">آموزش خوبی بود؟</p>
<input name="good" type="radio" value="yes"/>بله
<input name="good" type="radio" value="no"/>خیر
<input name="send" type="submit" value="ثبت"/>
</form>
کد PHP‌ :


<?php
if(isset($_POST['send'], $_POST['good'])) {
mysql_connect('mysql.xzn.ir', 'u866020542_1', 'zxczxc') or die('Connection error');
mysql_select_db('u866020542_poll') or die('Database error');
$yes = ($_POST['good'] == 'yes' ? '1' : '0');
$no = ($_POST['good'] == 'no' ? '1' : '0');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
mysql_query("INSERT INTO `nazar` (`yes`,`no`) VALUES ('{$yes}','{$no}')");
echo '<p>ارسال ' . (mysql_affected_rows() > 0 ? 'شد' : 'نشد') . '.</p>' . PHP_EOL;
mysql_close();
}
?>

اگه سؤالی بود در خدمتم.

salamu
پنج شنبه 26 بهمن 1391, 21:00 عصر
از همتون ممنونم.برای همین هم به همه یه تشکر دادم.دم همتون گرم.هرچی تشکر کنم بازم کمه!
حالا یه چیز دیگه چطوری نتایج رو بخونم؟

Tarragon
جمعه 27 بهمن 1391, 11:25 صبح
<?php
mysql_connect('mysql.xzn.ir', 'u866020542_1', 'zxczxc') or die('Connection error');
mysql_select_db('u866020542_poll') or die('Database error');
$yes = mysql_num_rows(mysql_query('SELECT * FROM `nazar` WHERE `yes` = \'yes\''));
$no = mysql_num_rows(mysql_query('SELECT * FROM `nazar` WHERE `no` = \'no\''));
echo "{$yes} نفر به سوال جواب مثبت و {$no} جواب منفی داده اند";

salamu
جمعه 27 بهمن 1391, 20:20 عصر
حالا اگه بخوایم آی پی رو ثبت و چک کنیم چه کار کنم؟البته ببخشید که دارم هی سوال می پرسم.

Tarragon
جمعه 27 بهمن 1391, 21:22 عصر
<?php
if(isset($_POST['send'], $_POST['good'])) {
mysql_connect('mysql.xzn.ir', 'u866020542_1', 'zxczxc') or die('Connection error');
mysql_select_db('u866020542_poll') or die('Database error');
$yes = ($_POST['good'] == 'yes' ? '1' : '0');
$no = ($_POST['good'] == 'no' ? '1' : '0');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
mysql_query("INSERT INTO `nazar` (`yes`,`no`,ip) VALUES ('{$yes}','{$no}','{$_SERVER['SERVER_ADDR']}')");
echo '<p>ارسال ' . (mysql_affected_rows() > 0 ? 'شد' : 'نشد') . '.</p>' . PHP_EOL;
mysql_close();
}
?>

eshpilen
شنبه 28 بهمن 1391, 07:43 صبح
SERVER_ADDR
فکر کنم منظورت remote address بوده.

salamu
شنبه 28 بهمن 1391, 14:42 عصر
آقا ممنون ولی این کد شما هم برای yes و هم برای no مقدار صفر رو ذخیره می کنه و موقع دیدن نتایج برای هر دو یکی اضافه کرده!یه بار چکش کنید ممنون میشم.

salamu
یک شنبه 29 بهمن 1391, 16:07 عصر
اونو حلش کردم.حالا چطوری چک کنم که آی پی تکراری نباشه؟یه سوال دیگه هم این که چطوری بفهمیم چند نفر رأی دادند؟

Tarragon
یک شنبه 29 بهمن 1391, 18:05 عصر
:لبخند::لبخند::لبخند::لبخند:: بخند::لبخند:
همین طور مرحله به مرحله کد رو کامل کنید :ي

<?php
mysql_connect('mysql.xzn.ir', 'u866020542_1', 'zxczxc') or die('Connection error');
mysql_select_db('u866020542_poll') or die('Database error');
$ip = mysql_num_rows(mysql_query("SELECT * FROM `nazar` WHERE `ip` = '{$_SERVER['SERVER_ADDR']}'"));
if($ip != 0){echo "شما قبلا رای داده اید.";}
else{
$yes = ($_POST['good'] == 'yes' ? '1' : '0');
$no = ($_POST['good'] == 'no' ? '1' : '0');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
mysql_query("INSERT INTO `nazar` (`yes`,`no`,ip) VALUES ('{$yes}','{$no}','{$_SERVER['SERVER_ADDR']}')");
echo '<p>ارسال ' . (mysql_affected_rows() > 0 ? 'شد' : 'نشد') . '.</p>' . PHP_EOL;
}

salamu
یک شنبه 29 بهمن 1391, 19:27 عصر
با این که درست کار میکنه ولی آی پی ها رو تو php my admin که ببینی با وجود تکراری بودن جلو گیری نشدن و نظرات با آی پی تکراری ثبت شدند!و یه چیز دیگه اون هم این که چی کار کنم وقتی که چهار گزینه می زارم به جای 2 تا و برای عالی عدد 20 و خوب 15 و ضعیف 10 و خیلی ضعیف 5 رو ثبت می کنه و موقع خوندن همه رو 1 حساب می کنه چی کار کنم تا درست شه؟

salamu
دوشنبه 30 بهمن 1391, 15:50 عصر
بهتره واضح تر بگم توی جدول my sql یه ردیف به نام id هست که فقط مقدار یک رو می پذیره،یه ردیف دیگه به نام ip هست که ip کاربر توش ثبت میشه، ردیف سوم هم با نام point امتیاز رو که همون 20,15,10,5 هست رو کاملاً درست ثبت می کنه.حالا چطوری این مقادیر رو بخونم.ممنون میشم اگه جواب بدید.

honda.moji
سه شنبه 31 اردیبهشت 1392, 16:02 عصر
سلام دوستان

من یه سوال بسیار بسیار بسیار مهم دارم ... !

من الان یه سیستم نظرسنجی ساختم با html ... الان یه مشکلی دارک که من میخام نتایج این نظر سنجی رو روی یک نمودار تو سایتم نشون بدم ... !

کد html :





• قدرت پاسگاری

<form>
<select name="country">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>
</P>
<P>

• دریبل زدن
<form>
<select name="country">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>
</P>
<P>
• شوت زدن

<form>
<select name="country">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>
</P>
<P>
• سانتر کردن

<form>
<select name="country">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>
</P>
<P>
• هد زدن

<form>
<select name="country">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>


</P>
<P>
• گل زدن

<form>
<select name="country">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
</select>


</form>






بهتره واضح تر بگم توی جدول my sql یه ردیف به نام id هست که فقط مقدار یک رو می پذیره،یه ردیف دیگه به نام ip هست که ip کاربر توش ثبت میشه، ردیف سوم هم با نام point امتیاز رو که همون 20,15,10,5 هست رو کاملاً درست ثبت می کنه.حالا چطوری این مقادیر رو بخونم.ممنون میشم اگه جواب بدید.

این جدول my sgl کجاست ؟


سطح برنامه نویسی = افتضاح !!!

honda.moji
سه شنبه 31 اردیبهشت 1392, 16:53 عصر
آپ فوری .... !


برای ساخت همچین چیزی من هزینه هم میدم دوستان کمک ... ! ببخشید از اسپم !!

Tarragon
سه شنبه 31 اردیبهشت 1392, 17:47 عصر
با ایدیم تماس بگیرید تا راهنمایی کنم.

MMSHFE
چهارشنبه 01 خرداد 1392, 00:15 صبح
توی تاپیک Snippetهای PHP دنبال کدی که برای ساخت نمودار با PHP گذاشتم بگردین.

honda.moji
چهارشنبه 01 خرداد 1392, 21:42 عصر
بیشتر راهنمایی کنید

من 8 تا بازیکن دارم مثلا نام های a1 a2 a3 a4 a5 ... ! داخل هرکدوم از صفحه های این بازیکن ها 6 تا امتیاز وجود داره b1 b2 b3 b4 b5 b6 ... !

حالا من میخام جمع نمره های (b1 b2 b3 b4 b5 b6) بازیکن های (a1 a2 a3 a4 a5) رو نمودار کنار هم نشون داده بشه !


همین !!!