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):
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>
2. Erstellen des Skripts zum Speichern der Antwort (save_answer.php):
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";
}
?>
3. Erstellen der Seite zum Anzeigen der Antworten (show_answers.php):
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>
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 kannst dieses Snippet frei nutzen, auch kommerziell. Ein Link zu meiner Webseite wäre als Dankeschön toll. Vielen Dank! :)
Fehler entdeckt? Schreib mir!
Werbung
Du suchst einen günstigen Anbieter für Webhosting? Netcup hat alles, was du suchst!
Sichere dir jetzt einen 5€-Gutschein für Neukunden!