Folgendes Problem habe ich gerade:
Übersicht -> Editierungsseite -> Verarbeitungsskript
Auf der Übersichtsseite wird eine Tabelle generiert. Im ganz rechten Feld jeder Tabellenreihe kann man über Icons bestimmte Aktionen durchführen. Etwa einen Nutzer zu aktivieren, zu deaktivieren oder zu löschen.
Beim Editieren von zB Userdaten leite ich auf eine Editierseite um. Wenn dort neue Daten eingetragen bzw alte geändert wurden leitet dieses Script die Daten an das Verarbeitungsskript weiter, dass in einer untergeordneten Ordnerebene liegt.
Dieses bearbeitet das ganze, schreibt die Daten in die Datenbanktabelle und leitet via header an die Übersicht zurück.
Das funktioniert auch alles wunderbar.
Allerdings möchte ich eigentlich auf die Editierungsseite zurückleiten, was ja eigentlich gehen sollte. Nur bringt er mir da einen SQL-Fehler in der Ausführung. Das macht mich natürlich stutzig, da das Skript ja fehlerfrei funktioniert, wenn ich zur Übersicht umleite.
Vielleicht könnt ihr mir ja sagen, woran das liegen könnte.
Verwendet wird eine Datenbankklasse, die der in den Tutorials sehr ähnlich ist. Die Seiten werden über die URL includiert (so wie es beim Tutorial "wie geht das mit index.php?section=xxx" beschrieben wird)
Nun noch die Quelltexte:
Übersicht: (admin1.php)
Editierungsseite (edit_admin.php)
Verarbeitungsskript (edit_admin.php -> im Adminordner)
Übersicht -> Editierungsseite -> Verarbeitungsskript
Auf der Übersichtsseite wird eine Tabelle generiert. Im ganz rechten Feld jeder Tabellenreihe kann man über Icons bestimmte Aktionen durchführen. Etwa einen Nutzer zu aktivieren, zu deaktivieren oder zu löschen.
Beim Editieren von zB Userdaten leite ich auf eine Editierseite um. Wenn dort neue Daten eingetragen bzw alte geändert wurden leitet dieses Script die Daten an das Verarbeitungsskript weiter, dass in einer untergeordneten Ordnerebene liegt.
Dieses bearbeitet das ganze, schreibt die Daten in die Datenbanktabelle und leitet via header an die Übersicht zurück.
Das funktioniert auch alles wunderbar.
Allerdings möchte ich eigentlich auf die Editierungsseite zurückleiten, was ja eigentlich gehen sollte. Nur bringt er mir da einen SQL-Fehler in der Ausführung. Das macht mich natürlich stutzig, da das Skript ja fehlerfrei funktioniert, wenn ich zur Übersicht umleite.
Vielleicht könnt ihr mir ja sagen, woran das liegen könnte.
Verwendet wird eine Datenbankklasse, die der in den Tutorials sehr ähnlich ist. Die Seiten werden über die URL includiert (so wie es beim Tutorial "wie geht das mit index.php?section=xxx" beschrieben wird)
Nun noch die Quelltexte:
Übersicht: (admin1.php)
PHP:
<?php
session_start();
require ('./inc/login.inc.php');
if(is_logged_in())
{
echo "<h3>Administratorenübersicht</h3>";
//Statusbericht
require ('./inc/status.inc.php');
if ($_REQUEST['status']) { echo "<p class=\"status\">"; status($_REQUEST['status']); echo "</p>"; }
elseif ($_REQUEST['error']) { echo "<p class=\"error\">"; error($_REQUEST['error']); echo "</p>"; }
//Variablen laden
require_once('./inc/config.inc.php');
require_once('./class/class_db.php');
//Datenbankverbindung aufbauen
$connection = new datenbank($db_host, $db_user, $db_pass, $db_name);
$connection->datenbankQuery("SELECT id, nummer, benutzer, nachname, vorname, mail, pw, UNIX_TIMESTAMP(datetime) AS datetime, UNIX_TIMESTAMP(datetime2) AS datetime2, active FROM admin ORDER BY id ASC");
echo "<table>";
echo "<thead>";
echo "<tr>";
echo "<th>#</th>";
echo "<th>Nummer</th>";
echo "<th>Benutzer</th>";
echo "<th>Nachname</th>";
echo "<th>Vorname</th>";
echo "<th>Registriert</th>";
echo "<th>letzte Änderung</th>";
echo "<th>Aktiv?</th>";
echo "<th>Aktion</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>";
//Daten holen
$id = 0;
while($ausgabe = $connection->ressourceHolen())
{
//ID inkrementieren
$id++;
echo "<tr>";
echo "<td>$id</td>";
echo "<td>$ausgabe[nummer]</td>";
echo "<td>$ausgabe[benutzer]</td>";
echo "<td>$ausgabe[nachname]</td>";
echo "<td>$ausgabe[vorname]</td>";
//Datumsformatierung
$datum1 = StrFTime('%d.%m.%Y-%H:%M:%S Uhr',$ausgabe[datetime]);
echo "<td>$datum1</td>";
//Datumsformatierung
$datum = StrFTime('%d.%m.%Y-%H:%M:%S Uhr',$ausgabe[datetime2]);
echo "<td>$datum</td>";
//Aktivitätsabfrage
if ($ausgabe[active] == 0) {
$active = "<img src=\"../udb/pics/user_on.gif\" border=\"0\" alt=\"Administrator aktiv\" title=\"Administrator aktiv\">"; }
elseif ($ausgabe[active] == -2) {
$active = "<img src=\"../udb/pics/user_off.gif\" border=\"0\" alt=\"Administrator inaktiv - inaktive Benutzer dürfen sich nicht mehr im System anmelden\" title=\"Administrator inaktiv - inaktive Benutzer dürfen sich nicht mehr im System anmelden\">"; }
echo "<td>$active</td>";
//Aktionenfeld
echo "<td><a href=\"index.php?section=activate_admin&id=$ausgabe[id]&name=$ausgabe[nachname]\"><img src=\"pics/thread.gif\" border=\"0\" alt=\"Administrator $ausgabe[nachname] aktivieren\" title=\"Administrator $ausgabe[nachname] aktivieren\"></a> <a href=\"index.php?section=inactivate_admin&id=$ausgabe[id]&name=$ausgabe[nachname]\"><img src=\"pics/thread_lock.gif\" border=\"0\" alt=\"Administrator $ausgabe[nachname] deaktivieren\" title=\"Administrator $ausgabe[nachname] deaktivieren\"></a> <a href=\"index.php?section=delabfrage2&id=$ausgabe[id]&name=$ausgabe[nachname]\"><img src=\"pics/delete.png\" border=\"0\" alt=\"Administrator $ausgabe[nachname] löschen\" title=\"Administrator $ausgabe[nachname] löschen\"></a> <a href=\"mailto:$ausgabe[mail]\"><img src=\"pics/mail.gif\" border=\"0\" alt=\"Administrator $ausgabe[nachname] eine E-Mail senden\" title=\"Administrator $ausgabe[nachname] eine E-Mail senden\"></a> <a href=\"index.php?section=edit_admin&id=$ausgabe[id]\"><img src=\"pics/edit.png\" border=\"0\" alt=\"Administratordaten von $ausgabe[nachname] editieren\" title=\"Administratordaten von $ausgabe[nachname] editieren\"></a> <a href=\"index.php?section=new_pw&id=$ausgabe[id]&name=$ausgabe[nachname]\"><img src=\"pics/lock.gif\" border=\"0\" alt=\"Neues Passwort für $ausgabe[nachname] erzeugen\" title=\"Neues Passwort für $ausgabe[nachname] erzeugen\"></a>";
echo "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
}
?>
PHP:
<?php
session_start();
require_once('./inc/login.inc.php');
if (is_logged_in()) {
echo '<h3>Admindaten ändern:</h3>';
require_once('./inc/config.inc.php');
require_once('./class/class_db.php');
echo "<form action=\"admin/edit_admin.php?id=".$_REQUEST['id']."\" method=\"post\">";
echo "<fieldset><legend><b>Nutzerdaten</b></legend>";
require ('./inc/status.inc.php');
if ($_REQUEST['status']) { echo "<p class=\"status\">"; status($_REQUEST['status']); echo "</p>"; }
elseif ($_REQUEST['error']) { echo "<p class=\"error\">"; error($_REQUEST['error']); echo "</p>"; }
$connection = new datenbank($db_host, $db_user, $db_pass, $db_name);
$connection->datenbankQuery("SELECT id, nummer, benutzer, nachname, vorname, mail, UNIX_TIMESTAMP(datetime) AS datetime, active FROM admin WHERE id = ".$_REQUEST['id']."");
$ausgabe = $connection->ressourceHolen();
echo "<p>";
echo "<label for=\"nummer\">Nummer</label>";
echo "<input type=\"text\" name=\"nummer\" id=\"nummer\" value=\"$ausgabe[nummer]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"nummer2\"></label>";
echo "<input type=\"hidden\" name=\"nummer2\" id=\"nummer2\" value=\"$ausgabe[nummer]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"vname\">Vorname</label>";
echo "<input type=\"text\" name=\"vname\" id=\"vname\" value=\"$ausgabe[vorname]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"vname2\"></label>";
echo "<input type=\"hidden\" name=\"vname2\" id=\"vname2\" value=\"$ausgabe[vorname]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"name\">Nachname</label>";
echo "<input type=\"text\" name=\"name\" id=\"name\" value=\"$ausgabe[nachname]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"name2\"></label>";
echo "<input type=\"hidden\" name=\"name2\" id=\"name2\" value=\"$ausgabe[nachname]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"mail\">E-Mail</label>";
echo "<input type=\"text\" name=\"mail\" id=\"mail\" value=\"$ausgabe[mail]\"/>";
echo "</p>";
echo "<p>";
echo "<label for=\"mail2\"></label>";
echo "<input type=\"hidden\" name=\"mail2\" id=\"mail2\" value=\"$ausgabe[mail]\"/>";
echo "</p>";
echo "</fieldset>";
echo "<fieldset><legend><b>Bestätigung</b></legend>";
echo "<p>";
echo "<input type=\"submit\" class=\"submit\" value=\"Administratordaten ändern\">";
echo "</p>";
echo "</fieldset>";
echo "</form>";
}
?>
PHP:
<?php
session_start();
require ('./inc/login.inc.php');
if(is_logged_in())
{
if ($_REQUEST['nummer'] == $_REQUEST['nummer2'] && $_REQUEST['name'] == $_REQUEST['name2'] && $_REQUEST['vname'] == $_REQUEST['vname2'] && $_REQUEST['mail'] == $_REQUEST['mail2'])
{
header("Location: /udb/index.php?section=admin1&error=error10");
} else {
//Variablen laden
require_once('./inc/config.inc.php');
require_once('./class/class_db.php');
//Datenbankverbindung aufbauen
$connection = new datenbank($db_host, $db_user, $db_pass, $db_name);
$timestamp = time();
//Update
$connection->datenbankQuery("UPDATE admin SET
nummer = '".$_REQUEST['nummer']."',
vorname = '".$_REQUEST['vname']."',
nachname = '".$_REQUEST['name']."',
mail = '".$_REQUEST['mail']."',
datetime2 = FROM_UNIXTIME($timestamp)
WHERE id = ".$_REQUEST['id']."");
//Protokoll schreiben
$connection->datenbankQuery("INSERT INTO protokoll (
nummer,
nachname,
vorname,
datetime,
prot
) VALUES (
'".$_SESSION['nummer']."',
'".$_SESSION['username']."',
'".$_SESSION['vorname']."',
FROM_UNIXTIME($timestamp),
'Administratordaten von ".$_REQUEST['name2']." in ".$_REQUEST['name']." geändert')");
header("Location: /udb/index.php?section=admin1&status=status8");
}
}
?>