Hallo!
Den ganzen Tag recherchiert und nichts gefunden...
Hintergrund:
wir haben eine todo-Liste für einen Prof. in php/mysql geschrieben, in der erledigte Aufgaben mit einem Haken als erledigt gekennzeichnet werden.
In der Übersicht wird jeder Eintrag angezeigt, u.a. mit der Spalte checkbox erledigt. Klappt auch alles wunderbar.
Problem:
Nun wurden seine Bestandsdaten übernommen (fast 2.000 Einträge). Das Problem bei der Anzeige aller Einträge ist nun, dass jeder checked Eintrag einen Wert in die URL übergibt, was die Länge der URL klarerweise übersteigt.
Folge:
Request-URI Too Long.
Die URL sieht vor dem Crash ungefähr so aus:
http://DOMAIN/todo/todo.php?todorepo...on&erledigt=on
..... etc.
Im Quellcode wird der Eintrag aus der DB wie folgt geholt:
Dabei wird bei Klick auf die angezeigte Checkbox ein anderes Skript abgearbeitet, dass einen Haken in der DB setzt oder den Haken wieder löscht und nach Abschluss der Prozedur gelangt man wieder auf die Aufgabenübersicht zurück, was alles wunderbar funktioniert:
FRAGE:
Was können wir tun, damit der URL nicht mit unnötigen Infos wie "....&erledigt=on&erledigt=on&erledigt=on&erledigt =on&erledigt=on&erledigt=on&erledigt=on&erledigt=o n&erledigt=on&erledigt=on&erledigt=on&erledigt=on. ......" zugemüllt wird?
Anmerkung:
Eine Umstellung des forms auf POST ist leider nicht möglich weil wir auch mehrere Sortierungsmöglichkeiten anbieten, die mittels GET übergeben werden.
Den ganzen Tag recherchiert und nichts gefunden...
Hintergrund:
wir haben eine todo-Liste für einen Prof. in php/mysql geschrieben, in der erledigte Aufgaben mit einem Haken als erledigt gekennzeichnet werden.
In der Übersicht wird jeder Eintrag angezeigt, u.a. mit der Spalte checkbox erledigt. Klappt auch alles wunderbar.
Problem:
Nun wurden seine Bestandsdaten übernommen (fast 2.000 Einträge). Das Problem bei der Anzeige aller Einträge ist nun, dass jeder checked Eintrag einen Wert in die URL übergibt, was die Länge der URL klarerweise übersteigt.
Folge:
Request-URI Too Long.
Die URL sieht vor dem Crash ungefähr so aus:
http://DOMAIN/todo/todo.php?todorepo...on&erledigt=on
..... etc.
Im Quellcode wird der Eintrag aus der DB wie folgt geholt:
PHP-Code:
<!-- Spalte 8: Checkbox erledigt -->
<?php
if ($_SESSION['rechte'] == 1) // nur Leserechte
{
?>
<td onclick="window.location ='details.php?ID_aufgabe=<?php echo($row[0]);?>';">
<input type="checkbox" disabled="true" name="erledigt"<?php if (empty($row[6])) {
else {echo("checked");}
?>></td>
<!-- bis hierhin gibts keine Probleme weil die checkbox für "nur Leserechte" disabled ist
Anm.: Wenn man nachfolgend die checkbox disabled ist ebenfalls alles OK mit der URL; man kann dann nur leider nicht die Einträge aus der Liste direkt abhaken.
Ab hier folgt der Problem-Code: -->
<?php
}
else if ($_SESSION['rechte'] == 2) // mit Schreibrechten
{
?>
<td onclick= "window.location.href ='erledigt.php?ID_aufgabe=<?php echo($row[0]);?>&Datum=<?php echo($row[6]);?>'">
<input type="checkbox" name="erledigt" disabled="true"
<?php if (empty($row[6])) {echo("");} else {echo("checked");}
?>
>
</td>
<?php
}
?>
PHP-Code:
<?php //Update des erledigt Buttons auf der todo.php Seite
include("head.php");
include("mysqlconst.php");
$con = mysql_connect($db_host, $db_user, $db_pass);
if (isset($_GET['Datum']) && $_GET['Datum'] != "")
{
$erledigt = $_GET['Datum'];
$erledigt = 'NULL';
}
else
{
$timestamp = time();
$erledigt = '"' . date("Y-m-d",$timestamp) . '"';
}
$sql = 'UPDATE todo_aufgabe SET' .
' erledigtdatum = ' . $erledigt .
' WHERE ID_aufgabe = ' . $_GET ['ID_aufgabe'];
$update = mysql_query($sql, $con);
mysql_close($con);
?>
<html>
<head>
<script type="text/javascript" >
window.location.href = "todo.php";
</script>
</head></html>
FRAGE:
Was können wir tun, damit der URL nicht mit unnötigen Infos wie "....&erledigt=on&erledigt=on&erledigt=on&erledigt =on&erledigt=on&erledigt=on&erledigt=on&erledigt=o n&erledigt=on&erledigt=on&erledigt=on&erledigt=on. ......" zugemüllt wird?
Anmerkung:
Eine Umstellung des forms auf POST ist leider nicht möglich weil wir auch mehrere Sortierungsmöglichkeiten anbieten, die mittels GET übergeben werden.
Kommentar