Hi, für unseren regelmäßigen Hallenfussballabend wollte ich ein kleines Programm programmieren, wo sich jeder ein- und austragen können soll, so dass die Planung besser klappt.
Auf meinem PC mit Firefox klappt das ganze Script auch sehr gut - auf meinem IE, meinem iPhone und einem Macbook werden die Änderungen, die man auf der Seite per Formular abschickt, aber einfach nicht aktualisert (und irgendwie auch nur manchmal überhaupt abgeschickt. Beim ersten Mal klappt es, danach nicht mehr).
Der Grundaufbau meiner Seite ist so:
Eine Hauptseite, auf der alles dargestellt wird mit insgesamt 3 Formularen (eins zum Erstellen neuer Spieler, eins, um alle Änderungen an bestehenden Spielern zu übermitteln und eins zum Aktualisieren des Kommentar-Textfelds).
Wird ein Formular per Submit-Button abgeschickt, leite ich es auf die entsprechenden Seiten um (new.php, edit.php, comment.php), wo dann der MySQL Eintrag vorgenommen wird und nach 1 Sekunde per meta-Tag auf die Hauptseite zurückverlinkt wird.
Das ist sicherlich nicht die eleganteste Möglichkeit, wenn ich alle Prozesse aber in einer einzigen Datei speichere, muss die Seite erst jedes mal neu aufgerufen werden, bevor die Änderungen der Daten sichtbar werden, weshalb ich das so gelöst habe.
Außerdem klappt es auf meinem Firefox ja auch absolut tadellos, nur alles andere macht scheinbar Mucken.
Ihr könnt euch gern selbst ein Bild machen:
*****
Stört euch nicht an den Textausgaben in der edit.php, die habe ich nur für mich als Fehlerfinder eingebaut und werden später entfernt.
Irgendwie scheinen die Änderungen im Firefox sofort, in den anderen Browsern aber erst verzögert aufzutauchen, so als hätte er eine Untergrenze für Refreshrate der Seite. Sehr merkwürdig.
Falls ihr das für die Lösung des Problems braucht, hier gerne der Code:
fussball.php:
PHP-Code:
<html>
<head>
<title>Fussball Manager</title>
</head>
<body>
<form method="post" action="edit.php">
<table border="1">
<tr>
<th align="left">Name</th><th align="left">Tel.</th><th align="left">E-Mail</th><th align="left">Kommt?</th><th align="left">Nächste Woche?</th><th align="left">Löschen?</th>
</tr>
<?php
$db = mysqli_connect("...");
if(!$db)
{
exit("Verbindungsfehler: ".mysqli_connect_error());
}
$abfrage = mysqli_query($db, "SELECT * FROM Spieler ORDER BY No ASC");
$sicherdiese = "0";
$backupdiese = "0";
$unsicherdiese = "0";
$sichernext = "0";
$backupnext = "0";
$unsichernext = "0";
$tester = "0";
while($zeile = mysqli_fetch_object($abfrage))
{
$spielernr = $zeile->No;
$name = $zeile->NAME;
$telefon = $zeile->TELEFON;
$email = $zeile->EMAIL;
$selected = "0";
$selected2 = "0";
if($zeile->KOMMT == "1") {
$kommt = "Ja";
$sicherdiese++;
$selected = "1";
} elseif($zeile->KOMMT == "2") {
$kommt = "Bei Bedarf";
$backupdiese++;
$selected = "2";
} elseif($zeile->KOMMT == "3") {
$kommt = "Unsicher";
$unsicherdiese++;
$selected = "3";
} elseif($zeile->KOMMT == "0") {
$kommt = "Nein";
$selected = "0";
} else {
$kommt = "Fehler";
}
if($zeile->NEXT == "1") {
$next = "Ja";
$sichernext++;
$selected2 = "1";
} elseif($zeile->NEXT == "2") {
$next = "Bei Bedarf";
$backupnext++;
$selected2 = "2";
} elseif($zeile->NEXT == "3") {
$next = "Unsicher";
$unsichernext++;
$selected2 = "3";
} elseif($zeile->NEXT == "0") {
$next = "Nein";
$selected2 = "0";
} else {
$next = "Fehler";
}
// NEUE AUSGABE
echo "<tr>";
echo '<td><input type="hidden" name="no[]" value="'.$spielernr.'"><input type="text" name="var1[]" value="'.$name.'"></td><td><input type="text" name="var2[]" value="'.$telefon.'"></td><td><input type="text" size="30" name="var3[]" value="'.$email.'"></td><td>';
// Überprüfen des Wertes HEUTE
if($selected=="0") {
echo '<select name="var4[]">
<option value="0" selected>Nein</option>
<option value="1">Ja</option>
<option value="2">Bei Bedarf</option>
<option value="3">Unsicher</option>
</select>';
} elseif($selected=="1") {
echo '<select name="var4[]">
<option value="0">Nein</option>
<option value="1" selected>Ja</option>
<option value="2">Bei Bedarf</option>
<option value="3">Unsicher</option>
</select>';
} elseif($selected=="2") {
echo '<select name="var4[]">
<option value="0">Nein</option>
<option value="1">Ja</option>
<option value="2" selected>Bei Bedarf</option>
<option value="3">Unsicher</option>
</select>';
} elseif($selected=="3") {
echo '<select name="var4[]">
<option value="0">Nein</option>
<option value="1">Ja</option>
<option value="2">Bei Bedarf</option>
<option value="3" selected>Unsicher</option>
</select>';
}
echo '</td>
<td>';
// Überprüfen des Wertes NÄCHSTE WOCHE
if($selected2=="0") {
echo '<select name="var5[]">
<option value="0" selected>Nein</option>
<option value="1">Ja</option>
<option value="2">Bei Bedarf</option>
<option value="3">Unsicher</option>
</select>';
} elseif($selected2=="1") {
echo '<select name="var5[]">
<option value="0">Nein</option>
<option value="1" selected>Ja</option>
<option value="2">Bei Bedarf</option>
<option value="3">Unsicher</option>
</select>';
} elseif($selected2=="2") {
echo '<select name="var5[]">
<option value="0">Nein</option>
<option value="1">Ja</option>
<option value="2" selected>Bei Bedarf</option>
<option value="3">Unsicher</option>
</select>';
} elseif($selected2=="3") {
echo '<select name="var5[]">
<option value="0">Nein</option>
<option value="1">Ja</option>
<option value="2">Bei Bedarf</option>
<option value="3" selected>Unsicher</option>
</select>';
}
echo '</td><td><input type="hidden" name="lassen[]" value="ja"><input type="checkbox" name="del[]" value="'.$spielernr.'"></td></tr>';
$tester++;
}
echo "<tr><td>Teilnahmen:</td><td></td><td></td><td>".$sicherdiese." (+".$backupdiese.")</td><td>".$sichernext." (+".$backupnext.")</td></tr>";
// Neue Einträge machen
?>
<tr><td></td><td></td><td></td><td></td><td><input type="Submit" name="update" value="Übernehmen"></td></tr>
</form>
<form method="post" action="new.php">
<tr><td><input type="text" name="spieler" value=""></td><td><input type="text" name="tel" value=""></td>
<td><input type="text" name="mail" value=""></td><td><input type="Submit" name="senden" value="Hinzufügen"></td><td></td></tr>
</form>
</table><br /><br /><br />
<?php
$abfrage2 = mysqli_query($db, "SELECT Text FROM Kommentar WHERE id = '1'");
while($comment = mysqli_fetch_object($abfrage2)) {
$inhalt = $comment->Text;
}
?>
<form method="post" action="comment.php">
<textarea name="text" rows="10" cols="80"><? echo $inhalt; ?></textarea>
<input type="submit" name="kommentieren" value="Speichern">
</form>
</body>
</html>
new.php:
PHP-Code:
<html>
<head>
<title>Fussball Manager</title>
<meta http-equiv="refresh" content="1; url=http://www.domain.com/fussball.php">
</head>
<body>
<?php
$db = mysqli_connect("...");
if(!$db)
{
exit("Verbindungsfehler: ".mysqli_connect_error());
}
// Spieler hinzufügen
if ($_POST["senden"]) {
$spieler = $_POST["spieler"];
$tel = $_POST["tel"];
$mail = $_POST["mail"];
$eintrag = "INSERT INTO Spieler (NAME, TELEFON, EMAIL) VALUES
('$spieler', '$tel', '$mail')";
$eintragen = mysqli_query($db, $eintrag);
}
?>
edit.php:
PHP-Code:
<html>
<head>
<title>Fussball Manager</title>
<meta http-equiv="refresh" content="1; url=http://www.domain.com/fussball.php">
</head>
<body>
<?php
$db = mysqli_connect("...");
if(!$db)
{
exit("Verbindungsfehler: ".mysqli_connect_error());
}
// Einträge ändern
$erase = array();
if ($_POST["update"]) {
for($k=0; $k<count($_POST['no']);$k++){
for($j=0; $j<count($_POST['del']);$j++) {
if($_POST['no'][$k] == $_POST['del'][$j]) {
echo $_POST['var1'][$k].' könnte gelöscht werden';
$erase[$j] = $_POST['no'][$k];
}
}
}
$m = "0";
while($m<=count($erase)) {
$remove = "DELETE FROM Spieler WHERE No = '".$erase[$m]."'";
mysqli_query($db, $remove);
$m++;
}
for($i=0; $i<count($_POST['no']);$i++){
$var1 = $_POST['var1'][$i];
$var2 = $_POST['var2'][$i];
$var3 = $_POST['var3'][$i];
$var4 = $_POST['var4'][$i];
$var5 = $_POST['var5'][$i];
$no = $_POST['no'][$i];
if($_POST['del'][$i]) {
$del = $_POST['del'][$i];
} else {
$del = 'fehler';
}
echo $i.': '.$var1.'+'.$no.'+'.$del.'<br>';
$sql = "UPDATE Spieler SET NAME = '".$var1."', TELEFON = '".$var2."', EMAIL = '".$var3."', KOMMT = '".$var4."', NEXT = '".$var5."' WHERE No = '".$no."'";
mysqli_query($db, $sql);
}
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo "<pre>";
print_r($erase);
echo "</pre>";
}
?>
</body>
</html>
<? /*
echo "<pre>";
print_r($_POST);
echo "</pre>";
for($i=0;$i<count($_POST['no']);$i++){
$sql = "UPDATE Spieler
SET NAME = '".$_POST['var1'][$i]."'
WHERE No = '$_POST['no'][$i]';";
mysql_query($sql);
}
*/ ?>
comment.php:
PHP-Code:
<html>
<head>
<title>Fussball Manager</title>
<meta http-equiv="refresh" content="1; url=http://www.domain.com/fussball.php">
</head>
<body>
<?php
$db = mysqli_connect("...");
if(!$db)
{
exit("Verbindungsfehler: ".mysqli_connect_error());
}
if ($_POST["kommentieren"]) {
$text = $_POST["text"];
$eintrag = "UPDATE Kommentar SET Text = '".$text."' WHERE id = '1'";
$eintragen = mysqli_query($db, $eintrag);
}
?>
</body>
</html>
Das ist sicherlich alles furchtbar ineffizient, unsicher und insgesamt schlecht geschrieben, aber ich habe mich jahrelang nicht mehr damit befasst und war nie sonderlich gut.
Die Sicherheitsproblematik sollte bei einem einfachen Zeitmanagement-Tool auch nicht so wichtig sein :-)
Danke schon mal für die Hilfe!