Code-Snippets » Umfrage mit PHP ohne Datenbank

Umfrage mit PHP ohne Datenbank

Um eine einfache Umfrage mit PHP und AJAX zu erstellen und die Antworten in einer txt-Datei zu speichern, können wir den folgenden Ansatz verfolgen:

1. Erstellen der Umfrage-Seite (index.php):

Code anklicken zum kopieren

<!DOCTYPE html>
<html lang="de">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<title>Umfrage</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
// AJAX-Funktion zum Speichern der Antwort
function saveAnswer(answer) {
$.ajax({
type: 'POST',
url: 'save_answer.php',
data: { answer: answer },
success: function(response) {
alert("Danke für Ihre Teilnahme!");
},
error: function() {
alert("Fehler beim Speichern der Antwort.");
}
});
}

// Event-Handler für Antwort-Buttons
$('.answer-btn').click(function() {
var answer = $(this).attr('data-answer');
saveAnswer(answer);
});
});
</script>
</head>
<body>
<h1>Umfrage</h1>
<p>Welche Farbe gefällt Ihnen am besten?</p>
<button class="answer-btn" data-answer="Rot">Rot</button>
<button class="answer-btn" data-answer="Blau">Blau</button>
<button class="answer-btn" data-answer="Grün">Grün</button>
<p><a href="show_answers.php">Ergebnisse anzeigen</a></p>
</body>
</html>

Code anklicken zum kopieren


2. Erstellen des Skripts zum Speichern der Antwort (save_answer.php):

Code anklicken zum kopieren

<?php
// Sicherheitsmaßnahmen: Überprüfung der Daten
if(isset($_POST['answer'])) {
$answer = $_POST['answer'];

// Überprüfung auf schadhaften Code
$answer = strip_tags($answer); // HTML-Tags entfernen
$answer = htmlspecialchars($answer); // HTML-Sonderzeichen konvertieren

// Speichern der Antwort in einer txt-Datei
$file = 'answers.txt';
$current = file_get_contents($file);
$current .= $answer . "n";
file_put_contents($file, $current);

echo "success";
} else {
echo "error";
}
?>

Code anklicken zum kopieren


3. Erstellen der Seite zum Anzeigen der Antworten (show_answers.php):

Code anklicken zum kopieren

<!DOCTYPE html>
<html lang="de">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<title>Antworten anzeigen</title>
</head>
<body>
<h1>Antworten anzeigen</h1>
<?php
$file = 'answers.txt';
$answers = file($file, FILE_IGNORE_NEW_LINES);

// Antworten zählen
$answerCounts = array_count_values($answers);
$totalAnswers = count($answers);

// Antworten in Prozent umrechnen und auf eine Stelle nach dem Komma runden
$answerPercentages = array();
foreach ($answerCounts as $answer => $count) {
$percentage = round(($count / $totalAnswers) * 100, 1);
$answerPercentages[$answer] = $percentage;
}

// Antworten anzeigen
foreach ($answerPercentages as $answer => $percentage) {
echo "<p>$answer: $percentage%</p>";
}
?>
</body>
</html>

Code anklicken zum kopieren


Mit diesen Codes wird die ausgewählte Antwort über AJAX an das Skript "save_answer.php" gesendet, das die Antwort validiert, schadhaften Code entfernt und sie in die "answers.txt"-Datei anhängt. Es werden keine Cookies verwendet.

Um die Antworten anzuzeigen, kannst du einfach die "show_answers.php"-Datei aufrufen, ohne abstimmen zu müssen. Diese liest die Inhalte der "answers.txt"-Datei und zeigt sie in einer HTML-Liste an.

Stelle sicher, dass das Verzeichnis, in dem sich die "answers.txt"-Datei befindet, entsprechende Schreibrechte hat, damit die Antworten gespeichert werden können.

Dieses Beispiel verwendet jQuery und bindet dieses direkt über einen Link ein. Im Sinne des Datenschutztes solltest du jQuery lieber lokal auf deinem Webspace oder Server speichern und einbinden.


Du darfst dieses Snippet kostenlos und uneingeschränkt nutzen, einschließlich kommerzieller Zwecke! Ich würde mich sehr darüber freuen, wenn du als kleine Geste der Anerkennung einen Link zu meiner Webseite auf deiner eigenen Seite platzieren könntest. Vielen Dank! :)