Günümüzde web tabanlı uygulamalar, kullanıcı etkileşimini artırmak ve veri toplamak için anket sistemlerine sıklıkla başvuruyor. Bu yazıda, PHP kullanarak basit ama etkili bir dinamik anket sistemi oluşturmayı adım adım inceleyeceğiz. Bu sistem, kullanıcıların oy kullanmasını ve sonuçların görüntülenmesini sağlayacak. Hadi başlayalım!
Gerekli Araçlar ve Kurulum
Bu projeyi gerçekleştirmek için aşağıdaki araçlara ihtiyacınız olacak:
1. PHP (en az 7.0)
2. MySQL veya MariaDB
3. Web sunucusu (Apache veya Nginx)
4. Bir metin editörü (Notepad , Visual Studio Code gibi)
Adım 1: Veritabanı Oluşturma
İlk olarak, anketimizi saklayacağımız bir veritabanı oluşturmamız gerekiyor. Aşağıdaki SQL kodu ile `anket_db` adında bir veritabanı ve `anketler` tablosunu oluşturalım:
Kod:
CREATE DATABASE anket_db;
USE anket_db;
CREATE TABLE anketler (
id INT AUTO_INCREMENT PRIMARY KEY,
soru VARCHAR(255) NOT NULL,
secenekler TEXT NOT NULL,
oy_sayisi TEXT NOT NULL
);Adım 2: Anket Ekleme Formu
Şimdi anket eklemek için bir form oluşturmalıyız. Aşağıdaki kod parçası, basit bir anket ekleme formunu içeriyor:
Kod:
<html>
<head>
<title>Anket Ekle</title>
</head>
<body>
<h1>Anket Ekle</h1>
<form method="POST" action="anket_ekle.php">
Soru: <input type="text" name="soru" required><br>
Seçenekler (virgülle ayrılmış): <input type="text" name="secenekler" required><br>
<input type="submit" value="Ekle">
</form>
</body>
</html>Adım 3: Anketi Veritabanına Kaydetme
Oluşturduğumuz formdan gelen verileri veritabanına kaydetmek için `anket_ekle.php` adlı bir dosya oluşturmalıyız. Aşağıdaki kod ile kullanıcıdan alınan verileri tablomıza ekleyelim:
Kod:
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "parola";
$dbname = "anket_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$soru = $_POST['soru'];
$secenekler = $_POST['secenekler'];
$oy_sayisi = str_repeat('0', substr_count($secenekler, ',') 1);
$sql = "INSERT INTO anketler (soru, secenekler, oy_sayisi) VALUES ('$soru', '$secenekler', '$oy_sayisi')";
if ($conn->query($sql) === TRUE) {
echo "Yeni anket başarıyla eklendi!";
} else {
echo "Hata: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>Adım 4: Anketi Görüntüleme ve Oy Kullanma
Şimdi, eklenen anketleri görüntüleyip kullanıcıların oy kullanabileceği bir sayfa oluşturmalıyız. Örnek olarak `anket_goruntule.php` dosyası aşağıdaki gibi olmalıdır:
Kod:
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "parola";
$dbname = "anket_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
$sql = "SELECT * FROM anketler";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<h2>" . $row["soru"] . "</h2>";
$secenekler = explode(',', $row["secenekler"]);
$oy_sayisi = explode(',', $row["oy_sayisi"]);
foreach ($secenekler as $index => $secenek) {
echo "<form method='POST' action='oy_kullan.php'>";
echo "<input type='hidden' name='anket_id' value='" . $row["id"] . "'>";
echo "<input type='hidden' name='secenek_index' value='" . $index . "'>";
echo $secenek . "<input type='submit' value='Oy Ver'>";
echo "</form>";
}
}
} else {
echo "Henüz bir anket yok.";
}
$conn->close();
?>Adım 5: Oy Verme İşlemi
Kullanıcıların oy vermesi için `oy_kullan.php` adlı bir dosya oluşturmalıyız. Bu dosya, oy verme işlemini gerçekleştirecek:
Kod:
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "parola";
$dbname = "anket_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$anket_id = $_POST['anket_id'];
$secenek_index = $_POST['secenek_index'];
// Mevcut oy sayısını al
$sql = "SELECT oy_sayisi, secenekler FROM anketler WHERE id = $anket_id";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$oy_sayisi = explode(',', $row["oy_sayisi"]);
$oy_sayisi[$secenek_index] ;
$new_oy_sayisi = implode(',', $oy_sayisi);
// Yeni oy sayısını güncelle
$sql = "UPDATE anketler SET oy_sayisi = '$new_oy_sayisi' WHERE id = $anket_id";
if ($conn->query($sql) === TRUE) {
echo "Oyunuz başarıyla verildi!";
} else {
echo "Hata: " . $conn->error;
}
}
$conn->close();
?>Sonuç
Bu makalede PHP ile dinamik bir anket sistemi oluşturma adımlarını inceledik. Artık kullanıcılarınız anketlere oy verebilir ve sonuçları görebilir. Bu temel yapıyı geliştirerek daha ileri düzey özellikler ekleyebilir, örneğin kullanıcı autentikasyonu veya sonuçların grafiksel gösterimi gibi. PHP ile dinamik anket sistemleri oluşturmanın temelini öğrenmiş oldunuz. Başarılar!
)

