PHP-Programm

egokyniker

Grünschnabel
Hallo
Ich habe ein PHP-Programm , das mir Probleme bereitet. Ich arbeite an einer Klausurenverwaltung, das menü besteht unter anderem aus


kluasur_1
studentenkartei
neuer eintrag

In den neuem eintrag konnte man neue studenten anlegen mit Punkten etc.
aber er zeigt mir die Einagebfelder nicht merh an , da steht nur noch die Überschrift " Eintrag"

Da drüber steht.
string(14) "lib_kartei.php" wuffwuff

die Datei liegt aber im richtigen Ordner : public_html/klausurenverwaltung/lib
sie ist drin und ich weiß nicht warum er diese nicht mehr anzeigt
karteil.JPG karteil.JPG karteil.JPG kartei_1.JPG kartei_2.JPG

vorher hat es funktioniert. wo liegt der fehler????
PHP:
<?php
/**
* @brief Studentenkartei
*
* @param $dbh PDO DB handle
* @param $parameter Die Parameter die vom Menue übergeben werden
* @param &$smarty die Referenz auf das Smarty Objekt
*/

function kartei__laden($dbh, $parameter, &$smarty)
{
$klausur = klausur_lesenId($dbh, $parameter['klausurid']);
// Changes an Smarty schicken
$smarty->assign('klausurchanges', $klausur['changes']);

global $global_fachrichtungen;

$smarty->assign('fachrichtungen',$global_fachrichtungen);

$url = $_SERVER['REQUEST_URI'];
$url = rtrim($url,'/');
$url = rtrim($url,'0123456789');

$laden = true;

// Studenten ID
$id = (int) trim($parameter['urlparams'], '/');

// Formular verarbeiten, d.h. speichern oder löschen
if (filter_input(INPUT_POST, 'formular') === 'student_speichern') {
// soll Student gelöscht werden?
$filter = filter_input(INPUT_POST, 'loeschen');
if (!empty($filter)) {
if (filter_input(INPUT_POST, 'wirklich') === 'ja') {
$res = student_loeschen($dbh, $parameter['klausurid'], $id);

if ($res === false) {
$smarty->assign('meldung', 'Student konnte nicht geloescht werden.');
}
else {
$_SESSION['sess_meldung'] = 'Student erfolgreich gelöscht.';

header('Location: '.$url);
exit();
}
}
else {
$smarty->assign('meldung', 'Student nicht gelöscht, da "wirklich" nicht angekreuzt war.');
}
}
// Student speichern
elseif((bool) filter_input(INPUT_POST, 'neu') !== true) {
$save = true;
$student = student_lesenId($dbh, $parameter['klausurid'], $id);

$hash = md5($student['vorname'].$student['name'].$student['wiederholer'].$student['fachrichtung'].$student['matrikelnummer'].$student['punkte'].$student['semester'].$student['id']);

if ($hash != $_POST['student_hash'])
{
$_SESSION['sess_meldung'] = 'Nicht gespeichert, da der Student seit dem Laden dieser Seite verändert wurde.';

header('Location: '.$url.$id.'/');
exit();
}

$punkte = array();
for($i = 0; $i < 12; $i++)
{
$p = filter_input(INPUT_POST, 'punkte'.$i, FILTER_SANITIZE_STRING);
if ($p == '' && $p != '0')
$p = '-';
if ($p != '-')
$p = str_replace(',', '.', $p);

if ($p != '-' && !is_numeric($p))
{
$_SESSION['sess_meldung'] = 'Nicht gespeichert, da ein ungültiges Punkteformat angegeben war.';

header('Location: '.$url.$id.'/');
exit();
}
else
{
$punkte[$i] = $p;
}
}

if ($_POST['name'] == '')
{
$smarty->assign('meldung', 'Bitte einen Namen angeben.');
$save = false;
}

if ($_POST['vorname'] == '')
{
$smarty->assign('meldung', 'Bitte einen Vornamen angeben.');
$save = false;
}

if ($_POST['matrikelnummer'] == '')
{
$smarty->assign('meldung', 'Bitte eine Matrikelnummer angeben.');
$save = false;
}

if ($save) {
if (student_aendern($dbh, $parameter['klausurid'], $id, array('name' => filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING),
'vorname' => filter_input(INPUT_POST, 'vorname', FILTER_SANITIZE_STRING),
'matrikelnummer' => filter_input(INPUT_POST, 'matrikelnummer', FILTER_SANITIZE_STRING),
'semester' => filter_input(INPUT_POST, 'semester', FILTER_SANITIZE_STRING),
'wiederholer' => filter_input(INPUT_POST, 'wiederholer', FILTER_SANITIZE_STRING),
'fachrichtung' => filter_input(INPUT_POST, 'fachrichtung', FILTER_SANITIZE_STRING),
'punkte' => $punkte)))
$_SESSION['sess_meldung'] = 'Student gespeichert';
else
$_SESSION['sess_meldung'] = 'Änderungen wurden nicht gespeichert. Bitte korrekte Werte angeben oder die Klausur ist gesperrt.';

// Speichern und (weiter|vor|nix)
$filter_wei = filter_input(INPUT_POST, 'submitwei');
$filter_vor = filter_input(INPUT_POST, 'submitvor');
if (!empty($filter_wei)) {
$next = $id;
switch ($_SESSION['filter'])
{
case 'info': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "fachrichtung='info'"); break;
case 'ninfo': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "NOT(fachrichtung='info')"); break;
case 'all': default: $studenten = student_alleLesen($dbh, $parameter['klausurid']); break;
}
for ($i = 0; $i < count($studenten); $i++)
if ($studenten[$i]['id'] == $id)
{
if ($i < count($studenten) - 1)
$next = $studenten[$i + 1]['id'];
break;
}
header('Location: '.$url.$next.'/');
}
elseif (!empty($filter_vor))
{
$last = $id;
switch ($_SESSION['filter'])
{
case 'info': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "fachrichtung='info'"); break;
case 'ninfo': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "NOT(fachrichtung='info')"); break;
case 'all': default: $studenten = student_alleLesen($dbh, $parameter['klausurid']); break;
}
for ($i = 0; $i < count($studenten); $i++)
if ($studenten[$i]['id'] == $id)
{
if ($i > 0)
$last = $studenten[$i - 1]['id'];
break;
}
header('Location: '.$url.$last.'/');
}
}
}
// Student erzeugen
elseif ((bool) filter_input(INPUT_POST, 'neu') === true) {
$save = true;

$punkte = array();
for($i = 0; $i < 12; $i++)
{
$p = filter_input(INPUT_POST, 'punkte'.$i, FILTER_SANITIZE_STRING);
if ($p == '' && $p != '0')
$p = '-';
if ($p != '-')
$p = str_replace(',', '.', $p);

if ($p != '-' && !is_numeric($p))
{
$_SESSION['sess_meldung'] = 'Nicht gespeichert, da ein ungültiges Punkteformat angegeben war.';

header('Location: '.$url.'neu/');
exit();
}
else
{
$punkte[$i] = $p;
}
}

if ($_POST['name'] == '')
{
$smarty->assign('meldung', 'Bitte einen Namen angeben.');
$save = false;
}

if ($_POST['vorname'] == '')
{
$smarty->assign('meldung', 'Bitte einen Vornamen angeben.');
$save = false;
}

if ($_POST['matrikelnummer'] == '')
{
$smarty->assign('meldung', 'Bitte eine Matrikelnummer angeben.');
$save = false;
}

if ($save)
{

$id = student_anlegen($dbh, $parameter['klausurid'], array( 'name' => filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING),
'vorname' => filter_input(INPUT_POST, 'vorname', FILTER_SANITIZE_STRING),
'matrikelnummer' => filter_input(INPUT_POST, 'matrikelnummer', FILTER_SANITIZE_STRING),
'semester' => filter_input(INPUT_POST, 'semester', FILTER_SANITIZE_STRING),
'wiederholer' => filter_input(INPUT_POST, 'wiederholer', FILTER_SANITIZE_STRING),
'fachrichtung' => filter_input(INPUT_POST, 'fachrichtung', FILTER_SANITIZE_STRING),
'punkte' => $punkte));

if ($id === false) {
$_SESSION['sess_meldung'] = 'Student konnte nicht angelegt werden: Matrikelnummer existiert bereits für diese Klausur!';
}
else {
$_SESSION['sess_meldung'] = 'Student gespeichert';
}

$parameter['neu'] == true;
header('Location: '.$url.'/');
}
}
}
// Anzeigen
if($laden) {
if (array_key_exists('sess_meldung', $_SESSION) && !empty($_SESSION['sess_meldung'])) {
$smarty->assign('meldung', $_SESSION['sess_meldung']);
$_SESSION['sess_meldung'] = '';
} 
// Keine ID übergeben -> Übersicht anzeigen
if ($id === 0 && !(array_key_exists('neu', $parameter) && $parameter['neu'])) {
if (filter_input(INPUT_POST, 'formular') === 'filter')
{
$_SESSION['filter'] = $_POST['filter'];
}
elseif (!array_key_exists('filter', $_SESSION)) {
$_SESSION['filter'] = 'all';
}


$smarty->assign('filter', $_SESSION['filter']);

switch ($_SESSION['filter'])
{
case 'info': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "fachrichtung='info'"); break;
case 'ninfo': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "NOT(fachrichtung='info')"); break;
case 'all': default: $studenten = student_alleLesen($dbh, $parameter['klausurid']); break;
}

$smarty->assign('modus', 'uebersicht');
$smarty->assign('studenten', $studenten);

return;
}
// ID übergeben -> Student anzeigen
elseif ($id > 0 && !(array_key_exists('neu', $parameter) && $parameter['neu'])) {
$student = student_lesenId($dbh, $parameter['klausurid'], $id);

if ($student === false)
{
$smarty->assign('meldung', 'Konnte den Student nicht finden.');
return;
}

$punkte = explode(':', $student['punkte']);
for ($i = 0; $i < 12; $i++)
if ($punkte[$i] === '-')
$punkte[$i] = '';
else
$punkte[$i] = str_replace('.', ',', $punkte[$i] / 10);

$hash = md5($student['vorname'].$student['name'].$student['wiederholer'].$student['fachrichtung'].$student['matrikelnummer'].$student['punkte'].$student['semester'].$student['id']);

$smarty->assign('filter', $_SESSION['filter']);

switch ($_SESSION['filter'])
{
case 'info': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "fachrichtung='info'"); break;
case 'ninfo': $studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "NOT(fachrichtung='info')"); break;
case 'all': default: $studenten = student_alleLesen($dbh, $parameter['klausurid']); break;
}

for ($i = 0; $i < count($studenten); $i++)
if ($studenten[$i]['id'] == $id)
break;
$smarty->assign('studenten_index', $i);
$smarty->assign('studenten_anzahl', count($studenten));

$url = $_SERVER['REQUEST_URI'];
$url = rtrim($url,'/');
$url = rtrim($url,'0123456789');

$links = array();
if ($i - 100 >= 0)
$links[] = array('link' => $url.$studenten[$i - 100]['id'].'/', 'text' => '&lt; 100');

if ($i - 50 >= 0)
$links[] = array('link' => $url.$studenten[$i - 50]['id'].'/', 'text' => '&lt; 50');

for ($j = $i - 10; $j < $i; $j++)
if ($j >= 0)
$links[] = array('link' => $url.$studenten[$j]['id'].'/', 'text' => '&lt; '.($i - $j));

for ($j = $i + 1; $j < $i + 11; $j++)
if ($j < count($studenten))
$links[] = array('link' => $url.$studenten[$j]['id'].'/', 'text' => '&gt; '.($j - $i));

if ($i + 50 < count($studenten))
$links[] = array('link' => $url.$studenten[$i + 50]['id'].'/', 'text' => '&gt; 50');

if ($i + 100 < count($studenten))
$links[] = array('link' => $url.$studenten[$i + 100]['id'].'/', 'text' => '&gt; 100');

$smarty->assign('links', $links);

$smarty->assign('student', $student);
$smarty->assign('punkte', $punkte);
$smarty->assign('hash', $hash);

$smarty->assign('modus', 'formular');

return;
}

// Neu Formular?
elseif (array_key_exists('neu', $parameter) && $parameter['neu'] || $id === 0)
{
$smarty->assign('modus', 'formular');
$smarty->assign('neu', true);

return;
}
} 
}
 
Struktur

lib/: Hier liegen sämtliche Dateien, die die Funktionalität des System geben. Unter
anderem findet man hier die config.php, welche sämtliche Umgebungsvariablen enthält,
die eingestellt werden müssen um das System zu benutzen.
Auch die Datei access.conf findet man hier, in der die Zugangsadressen der Rechner
eingetragen sind, die Zugriff auf das System erlaubt haben.
lib/smarty/: Hier findet man die Smarty Template Bibliothek
Auf dieses Verzeichnis ist in der Datei lib/config.php verwiesen.
tpl/templates/: Hier liegen die HTML Templates des Systems. Diese werden von Smarty
interpretiert und an den Browser geschickt.
tpl/templates_c/: Smarty legt hier die kompilierten Templates ab

logischer aufbau

Jeder Seitenaufruf wird über die index.php getätigt. Diese liegt im Hauptverzeichnis / des
Klausursystems. Hier wird lediglich ein weiterer Aufruf auf die Datei lib/entrypoint.php
gemacht.
Hier werden nun sämtliche Dateien eingebunden, die die Konfiguration (lib/config.php), die
Menüverwaltung (lib/menue.php) und sämtliche Funktionen die die einzelnen Systembereiche
(lib/sql.php, lib/webAdmin.php) betreffen.


Sämtliche Funktionen, abgesehen von den Seitenspezifischen, welche sich in den lib/lib_*.php
Dateien finden und allesamt *__laden() heißen, finden sich die Verwaltungsfunktionen in der
lib/webAdmin.php.

meine Fragen:
1. warum erscheint nichts mehr unter dem menüpunkt 'studentenkartei' und 'neuer eintrag'
2. ich möchte den menüpunkt 'platzkarten' ausblenden, also dieser soll im hauptmenü nicht mehr erscheinen
 
Zuletzt bearbeitet:
Zurück