PHP – نظرسنجی با AJAX

این مثال نشان می‌دهد که چگونه می‌توانید با استفاده از AJAX و PHP، یک نظرسنجی ساده را پیاده‌سازی کنید که نتایج آن بدون بارگذاری مجدد صفحه نمایش داده می‌شود.

صفحه HTML

هنگامی که کاربر یک گزینه را انتخاب می‌کند، تابع getVote() اجرا می‌شود. این تابع با استفاده از AJAX رأی کاربر را به سرور ارسال کرده و نتایج نظرسنجی را به‌روزرسانی می‌کند.

<html>
<head>
<script>
function getVote(int) {
  var xmlhttp = new XMLHttpRequest(); // ایجاد شی XMLHttpRequest
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("poll").innerHTML = this.responseText; // به‌روزرسانی محتویات عنصر با ID "poll"
    }
  }
  xmlhttp.open("GET", "poll_vote.php?vote=" + int, true); // ارسال درخواست GET به فایل PHP
  xmlhttp.send(); // ارسال درخواست
}
</script>
</head>
<body>

<div id="poll">
<h3>آیا از PHP و AJAX تا به حال خوش‌تان آمده است؟</h3>
<form>
بله: <input type="radio" name="vote" value="0" onclick="getVote(this.value)"><br>
خیر: <input type="radio" name="vote" value="1" onclick="getVote(this.value)">
</form>
</div>

</body>
</html>

فایل PHP (poll_vote.php)

فایل PHP که از طرف JavaScript فراخوانی می‌شود، رأی کاربر را دریافت کرده و نتایج نظرسنجی را به‌روزرسانی می‌کند:

<?php
$vote = $_REQUEST['vote']; // دریافت رأی از URL

// دریافت محتوای فایل متنی
$filename = "poll_result.txt";
$content = file($filename);

// قرار دادن محتویات در آرایه
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];

if ($vote == 0) {
  $yes = $yes + 1; // افزایش تعداد رأی‌های "بله"
}
if ($vote == 1) {
  $no = $no + 1; // افزایش تعداد رأی‌های "خیر"
}

// نوشتن رأی‌ها به فایل متنی
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>

<h2>نتیجه:</h2>
<table>
<tr>
<td>بله:</td>
<td><img src="poll.gif" width='<?php echo(100*round($yes/($no+$yes),2)); ?>' height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>خیر:</td>
<td><img src="poll.gif" width='<?php echo(100*round($no/($no+$yes),2)); ?>' height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>

فایل متنی (poll_result.txt)

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

0||0

عدد اول نمایانگر تعداد رأی‌های “بله” و عدد دوم نمایانگر تعداد رأی‌های “خیر” است.

توجه: اطمینان حاصل کنید که وب‌سرور شما اجازه ویرایش این فایل متنی را دارد. فقط به وب‌سرور (PHP) اجازه دسترسی بدهید و به هیچ‌کس دیگری اجازه ندهید.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.