Pemberitahuan masa nyata dan peringatan sistem pengundian dalam talian yang dibangunkan oleh PHP

WBOY
Lepaskan: 2023-08-08 08:16:01
asal
1048 orang telah melayarinya

Pemberitahuan masa nyata dan peringatan sistem pengundian dalam talian yang dibangunkan oleh PHP

Pemberitahuan dan peringatan masa nyata sistem pengundian dalam talian yang dibangunkan oleh PHP

Dalam masyarakat moden, sistem pengundian dalam talian digunakan secara meluas dalam pelbagai senario, seperti pembuatan keputusan dalaman syarikat, pemilihan kesatuan pelajar, dsb. Untuk meningkatkan pengalaman pengguna dan kecekapan sistem pengundian, kami selalunya perlu menambah pemberitahuan masa nyata dan fungsi peringatan pada sistem untuk segera memberitahu peserta mengundi tentang keputusan pengundian atau maklumat penting. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan sistem pengundian dalam talian dan menambah fungsi pemberitahuan dan peringatan masa nyata.

Pertama, kita perlu membina sistem pengundian dalam talian asas. Anda boleh menggunakan rangka kerja PHP seperti Laravel atau menulis kod PHP sendiri. Dalam artikel ini, kami akan menggunakan rangka kerja Laravel untuk menunjukkan.

  1. Buat pangkalan data sistem pengundian

Pertama, kita perlu mencipta pangkalan data sistem pengundian. Anda boleh menggunakan phpMyAdmin atau alat pengurusan pangkalan data lain untuk mencipta pangkalan data baharu dan membuat jadual undian dan jadual pengguna yang sepadan.

  1. Pendaftaran dan log masuk pengguna

Dalam sistem pengundian, pengguna perlu mendaftar dan log masuk sebelum mereka boleh mengambil bahagian dalam mengundi. Kita boleh menggunakan sistem pengesahan yang disertakan dengan rangka kerja Laravel untuk membina fungsi pendaftaran dan log masuk pengguna dengan cepat. Semasa mendaftar, kita perlu mendapatkan nombor telefon bimbit atau alamat e-mel pengguna sebagai maklumat hubungan.

  1. Buat tinjauan pendapat

Dalam sistem pengundian, pentadbir perlu membuat tinjauan pendapat dan menetapkan pilihan pengundian. Kita boleh membuat jadual data bernama undi untuk menyimpan maklumat pengundian. Jadual boleh mengandungi medan seperti berikut:

  • id: ID Mengundi
  • tajuk: Tajuk mengundi
  • perihalan: Perihalan mengundi
  • pilihan: Pilihan mengundi
  • status: Status pengundian (sedang berlangsung, tamat, dsb.
  • Ya Gunakan keupayaan pemindahan data Laravel untuk mencipta jadual dan model pangkalan data.

Mulakan pemberitahuan pengundian
  1. Selepas pentadbir membuat tinjauan pendapat, kami perlu menghantar pemberitahuan kepada semua pengguna yang log masuk untuk memaklumkan mereka bahawa terdapat tinjauan pendapat baharu untuk disertai. Fungsi pemberitahuan undian boleh dilaksanakan menggunakan acara dan pendengar dalam Laravel.

Pertama, kita perlu mencipta acara baharu, seperti VoteCreatedEvent. Acara itu boleh mengandungi maklumat pengundian, serta maklumat lain yang berkaitan yang diperlukan untuk menghantar pemberitahuan. Kami kemudiannya boleh membuat pendengar acara, VoteCreatedListener, di mana pemberitahuan dihantar kepada semua pengguna log masuk.

Berikut ialah contoh kod:

// VoteCreatedEvent.php
namespace AppEvents;
use IlluminateFoundationEventsDispatchable;
use IlluminateQueueSerializesModels;
class VoteCreatedEvent
{
    use Dispatchable, SerializesModels;
    public $vote;
    public function __construct($vote)
    {
        $this->vote = $vote;
    }
}

// VoteCreatedListener.php
namespace AppListeners;
use AppEventsVoteCreatedEvent;
use IlluminateContractsQueueShouldQueue;
use IlluminateQueueInteractsWithQueue;
use Notification;
use AppNotificationsNewVoteNotification;
class VoteCreatedListener implements ShouldQueue
{
    use InteractsWithQueue;
    public function handle(VoteCreatedEvent $event)
    {
        $vote = $event->vote;
        $users = User::all();
        Notification::send($users, new NewVoteNotification($vote));
    }
}

// NewVoteNotification.php
namespace AppNotifications;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateNotificationsMessagesMailMessage;
use IlluminateNotificationsNotification;

class NewVoteNotification extends Notification
{
    use Queueable;
    protected $vote;
    public function __construct($vote)
    {
        $this->vote = $vote;
    }
    public function via($notifiable)
    {
        return ['mail'];
    }
    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->line('新投票已发布,请尽快参与投票')
            ->line('投票标题:' . $this->vote->title)
            ->action('立即参与', url('/vote/' . $this->vote->id))
            ->line('感谢您的参与!');
    }
}
Salin selepas log masuk

Dalam kod di atas, VoteCreatedEvent mewakili acara penciptaan undi, VoteCreatedListener ialah pendengar untuk acara pengundian dan NewVoteNotification ialah maklumat pemberitahuan yang dihantar. Kami menggunakan kelas Pemberitahuan Laravel dalam VoteCreatedListener untuk menghantar pemberitahuan e-mel kepada semua pengguna yang log masuk Kandungan pemberitahuan termasuk tajuk undian dan pautan penyertaan.

Lawati halaman pengundian
  1. Selepas pengguna menerima pemberitahuan pengundian, mereka boleh melawati halaman pengundian dengan mengklik pautan dalam pemberitahuan untuk melaksanakan operasi pengundian. Kami boleh menambah fungsi kemas kini masa nyata pada halaman undian untuk memaparkan keputusan pengundian semasa tepat pada masanya.

Anda boleh menggunakan fungsi Penyiaran Laravel untuk mencapai fungsi kemas kini masa nyata. Pertama, kita perlu mengkonfigurasi pemacu dan saluran siaran Laravel. Kami kemudiannya boleh menggunakan pustaka Echo Laravel untuk melanggan saluran undian dan menggunakan kod JavaScript dalam halaman untuk mengemas kini keputusan pengundian dalam masa nyata.

Berikut ialah contoh kod:

// resources/js/app.js
import Echo from 'laravel-echo';
window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: 'http://localhost:6001',
});
Salin selepas log masuk
// routes/channels.php
use IlluminateSupportFacadesBroadcast;
Broadcast::channel('vote.{voteId}', function ($user, $voteId) {
    return true;
});
Salin selepas log masuk
// VoteController.php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsVote;
class VoteController extends Controller
{
    public function show($id)
    {
        $vote = Vote::findOrFail($id);
        return view('vote.show', ['vote' => $vote]);
    }
}
Salin selepas log masuk
e
<!-- resources/views/vote/show.blade.php -->
<!DOCTYPE html>
<html>
<head>
    <title>投票</title>
    <script src="{{ asset('js/app.js') }}"></script>
</head>
<body>
    <h1>{{ $vote->title }}</h1>
    <p>{{ $vote->description }}</p>
    <ul>
    @foreach($vote->options as $option)
        <li>{{ $option }}</li>
    @endforeach
    </ul>
    <script>
        window.Echo.channel('vote.{{ $vote->id }}')
            .listen('.vote.updated', (data) => {
                console.log(data);
                // 更新投票结果的显示
            });
    </script>
</body>
</html>
Salin selepas log masuk

Dalam kod di atas, kami menyusun kod JavaScript dalam halaman undian melalui Laravel Mix dan memperkenalkannya ke dalam halaman. Apabila halaman dimuatkan, kami menggunakan pustaka Echo untuk melanggan saluran undian (undi.{voteId}) dan mendengar acara .vote.updated. Apabila keputusan pengundian dikemas kini, halaman akan menerima data yang dikemas kini dan memaparkannya dengan sewajarnya.

Melalui langkah di atas, kami telah berjaya menambah fungsi pemberitahuan dan peringatan masa nyata sistem pengundian dalam talian. Pengguna boleh mendapatkan pemberitahuan pengundian dalam masa nyata dalam sistem dan melihat keputusan pengundian serta-merta. Sistem sedemikian bukan sahaja meningkatkan pengalaman pengguna, tetapi juga meningkatkan kecekapan dan keadilan pengundian.

Ringkasnya, kami telah berjaya menambahkan fungsi pemberitahuan dan peringatan masa nyata pada sistem pengundian dalam talian yang dibangunkan menggunakan PHP, dan menyediakan contoh kod yang sepadan. Fungsi ini bukan sahaja membolehkan pengguna mengikuti maklumat terkini pengundian, tetapi juga memperoleh keputusan pengundian dalam masa nyata, membawa kemudahan dan keadilan kepada proses pengundian.

Atas ialah kandungan terperinci Pemberitahuan masa nyata dan peringatan sistem pengundian dalam talian yang dibangunkan oleh PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!