PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Poll ignoriert die 1. Abstimmung, erst der 2. Versuch funktioniert - wieso? (https://www.php-resource.de/forum/php-developer-forum/52097-poll-ignoriert-die-1-abstimmung-erst-der-2-versuch-funktioniert-wieso.html)

MichaelKS 19-03-2005 14:35

Poll ignoriert die 1. Abstimmung, erst der 2. Versuch funktioniert - wieso?
 
Hallo!
Habe in den letzten Tagen schon gute Hilfe von euch bekommen. Jetzt habe ich es fast geschafft, komme beim vermutlich letzten Problem aber nicht weiter:
Bei folgendem Poll muss ich immer 2x abstimmen, bevor die Wertung gezaehlt wird:
http://www.mkschubert.de/umfrage1/

Aus irgendwelchen Gruenden wird der Versuch komplett ignoriert.

Bei diesem Poll funktioniert es hingegen einwandfrei schon beim ersten Versuch:
http://www.mkschubert.de/umfrageusa/
Warum?
Ich habe immer und immer wieder geschaut. Ich kann keinen Fehler feststellen.

Hier ist der Quelltext der fehlerhaften php-Datei (umfrage1.php):

<?php
// Datei, in der die Bewertungen gespeichert werden:
$fname = "umfrage1.dat";

if (isset($_POST['r1'])) { $r1 = $_POST['r1']; }

$data = file($fname);
$entry_count = count($data);
$ip = $_SERVER["REMOTE_ADDR"];

$datum = date("d.m.Y");
$zeit = date("H:i");

// überprüfen, ob der User heute schon bewertet hat:
for ($i = 0; $i < $entry_count; $i++) {
$part = explode("|", $data[$i]);
if ($ip == $part[2] && $datum == $part[0]) { $schon="ja"; }
}
// ... wenn nicht, dann Bewertung speichern (falls Formulardaten gesendet wurden):
if (empty($schon) && isset($r1)) {
$eintrag = "$datum|$zeit|$ip|$r1|\n";
$fp = fopen($fname, 'a');
flock($fp, 2);
fwrite($fp, $eintrag);
flock($fp, 3);
fclose($fp);
}
// Auswertung der Bewertungs-Datei:
$data = file($fname);
$entry_count = count($data);
$spd_c = 0; $cdu_c = 0; $gruene_c = 0; $fdp_c = 0; $pds_c = 0; $sonst_c = 0; $dkp_c = 0; $csu_c = 0; $dvu_c = 0; $npd_c = 0;

for ($i = 0; $i < $entry_count; $i++) {
$part = explode("|", $data[$i]);
// zusammenzähen:
if ($part[3] == "spd") { $spd_c++; }
if ($part[3] == "cdu") { $cdu_c++; }
if ($part[3] == "gruene") { $gruene_c++; }
if ($part[3] == "fdp") { $fdp_c++; }
if ($part[3] == "pds") { $pds_c++; }
if ($part[3] == "sonst") { $sonst_c++; }
if ($part[3] == "dkp") { $dkp_c++; }
if ($part[3] == "csu") { $csu_c++; }
if ($part[3] == "dvu") { $dvu_c++; }
if ($part[3] == "npd") { $npd_c++; }
}
// Prozente berechnen:
if ($entry_count != 0) {
$spd = number_format(($spd_c / $entry_count) * 100, 1);
$cdu = number_format(($cdu_c / $entry_count) * 100, 1);
$gruene = number_format(($gruene_c / $entry_count) * 100, 1);
$fdp = number_format(($fdp_c / $entry_count) * 100, 1);
$pds = number_format(($pds_c / $entry_count) * 100, 1);
$sonst = number_format(($sonst_c / $entry_count) * 100, 1);
$dkp = number_format(($dkp_c / $entry_count) * 100, 1);
$csu = number_format(($csu_c / $entry_count) * 100, 1);
$dvu = number_format(($dvu_c / $entry_count) * 100, 1);
$npd = number_format(($npd_c / $entry_count) * 100, 1);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta name="robots" content="noindex, nofollow">
<title>Umfrage</title>
<style type="text/css">
<!--
body { color: #000000; background: #ffffff; margin: 20px; padding: 0px; }
.normal { font-family: verdana, arial, sans-serif; font-size: 13px; }
td { height: 20px; color: #000000; background: #ffffff; font-family: verdana, arial, helvetica, sans-serif; font-size: 10pt; }
.hinw { font-family: verdana, arial, sans-serif; font-size: 10pt; color: #ffffff; background: #ff0000; font-weight: bold; }
.gr { font-family: verdana, arial, sans-serif; font-size: 18px; font-weight: bold; }
-->
</style>
</head>
<body>
<?php if (isset($schon) && isset($r1)) {echo "<p><span class=\"hinw\">Es wurde bereits eine Bewertung aufgenommen!</span></p>"; } ?>
<?php if ($entry_count > 0) { ?>
<p class="normal">Auf welche Art reist Du am liebsten?<br>
(<?php echo $entry_count; ?> Stimmen insgesamt)</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><b>Flugzeug:&nbsp;</b></td>
<td><?php echo $spd; ?> %&nbsp;</td>
<td><img src="spd.gif" width="<?php echo number_format($spd,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Auto:&nbsp;</b></td>
<td><?php echo $cdu; ?> %&nbsp;</td>
<td><img src="cdu.gif" width="<?php echo number_format($cdu,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Bus:&nbsp;</b></td>
<td><?php echo $gruene; ?> %&nbsp;</td>
<td><img src="gruene.gif" width="<?php echo number_format($gruene,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Bahn:&nbsp;</b></td>
<td><?php echo $fdp; ?> %&nbsp;</td>
<td><img src="fdp.gif" width="<?php echo number_format($fdp,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Fahrrad:&nbsp;</b></td>
<td><?php echo $pds; ?> %&nbsp;</td>
<td><img src="pds.gif" width="<?php echo number_format($pds,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>zu Fuß:&nbsp;</b></td>
<td><?php echo $sonst; ?> %&nbsp;</td>
<td><img src="sonst.gif" width="<?php echo number_format($sonst,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Schiff:&nbsp;</b></td>
<td><?php echo $dkp; ?> %&nbsp;</td>
<td><img src="dkp.gif" width="<?php echo number_format($dkp,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Motorrad:&nbsp;</b></td>
<td><?php echo $csu; ?> %&nbsp;</td>
<td><img src="csu.gif" width="<?php echo number_format($csu,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Wohnmobil/Caravan:&nbsp;</b></td>
<td><?php echo $dvu; ?> %&nbsp;</td>
<td><img src="dvu.gif" width="<?php echo number_format($dvu,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
<tr>
<td><b>Andere:&nbsp;</b></td>
<td><?php echo $npd; ?> %&nbsp;</td>
<td><img src="npd.gif" width="<?php echo number_format($npd,0)*2+2; ?>" height="10" alt="" border="0"></td>
</tr>
</table>
<?php } else { ?><p class="normal">Es wurde noch keine Stimme abgegeben</p><?php } ?>
</body>
</html>

Meine Augen sind wohl nicht mehr gut genug, den Fehler zu entdecken.

Danke fuer euren Tipp!
Michael

Ueps 19-03-2005 14:43

Puhh... ne Menge Code... hier die stelle is aber interessant:


Code:

if ($ip == $part[2] && $datum == $part[0]) { $schon="ja"; }
}
if (empty($schon) && isset($r1)) {

probier mal:
Code:

if ($ip == $part[2] && $datum == $part[0]) { $schon=true; }
}
if ($schon && isset($r1)) {

wie gesagt nur so ein tipp ... aber ich schaue nochmal etwas genauer drüber =)

penizillin 19-03-2005 14:45

bitte beachten:
http://www.php-resource.de/forum/sho...threadid=50454

Ueps 19-03-2005 14:51

Hmm... habe mal die Pools ausprobiert.
Wo war genau der Fehler? Also ich kann nur einmal abstimmten und zwar beide beiden.

MichaelKS 19-03-2005 17:00

Hallo Ueps,

habe deinen Vorschlag auf einer Testseite probiert. Der Unterschied: Die erste Abstimmung funktioniert immer noch nicht, doch danach kann ich unbegrenzt abstimmen (die Sperre ist danach aufgehoben).

Falls es keine Loesung gibt:
Welchen Teil des Codes muss ich genau streichen, damit User unbegrenzt abstimmen koennen?
Ich habe den folgenden Teil geloescht...

// überprüfen, ob der User heute schon bewertet hat:
for ($i = 0; $i < $entry_count; $i++) {
$part = explode("|", $data[$i]);
if ($ip == $part[2] && $datum == $part[0]) { $schon=true; }
}
// ... wenn nicht, dann Bewertung speichern (falls Formulardaten gesendet wurden):
if ($schon && isset($r1)) {
$eintrag = "$datum|$zeit|$ip|$r1|\n";
$fp = fopen($fname, 'a');
flock($fp, 2);
fwrite($fp, $eintrag);
flock($fp, 3);
fclose($fp);
}

... aber danach wurde ueberhaupt keine Stimme mehr gezaehlt.

Es muss doch eine Loesung geben... oder?

Gruss
Michael

Shurakai 19-03-2005 17:58

Zitat:

Original geschrieben von penizillin
bitte beachten:
http://www.php-resource.de/forum/sho...threadid=50454

Bitte die [ PHP] [/ PHP] Tags benutzen.... sonst schauen sich den Code hier ne menge Leute net an..!


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG