egokyniker Smarty Rookie
Joined: 24 Oct 2015 Posts: 10
|
Posted: Wed Aug 24, 2016 8:04 am Post subject: Template/PHP/Postgresql |
|
|
Hello
i have a problem :
there is a software (not from me) made with smarty, php and postgresql.
I have to add a website and i add a template and the php code and opened the new database for it with phpPgAdmin.
But when i filled up the boxes and pushed the button save. Nothing happend.
The page reloaded and the boxes were empty.
Please what i have to do: How can i say him, to save the values in the boxes und put them there again. how can i say it to smarty, and how smarty put the walues to the database.
here the template
Code: |
<h1>Globale Einstellungen</h1>
{if $meldung neq ''}<p><span class="formmeldung">{$meldung}</span></p>{/if}
<form action="{$self}" method="post">
<h2>Notenvergabe</h2>
<p>Hier können die Punktgrenzen für die jeweiligen Noten vergeben werden (nur ganzzahlige Grenzen erlaubt).</p>
<p>Die Punkte werden so angegeben, dass sie jeweils die <i>untere</i> Grenze angeben, bei der man diese
Note "gerade noch" bekommt. Ist die Punktzahl also niedriger als die angegebene, erhält man eine schlechtere Note
(die obere Grenze ergibt sich automatisch aus der unteren Grenze der benachberten Note).<br/>
Ist die Punktzahl unter der bei "4.7" angegebenen Grenze, wird automatisch eine 5.0 vergeben.
</p>
<table border="0" cellspacing="0" cellpadding="3" summary="Tabelle für die Notenskala-Eingabe">
<tr><th>Note</th><th>Punkte</th></tr>
<tr><td>4.7</td><td><input type="text" name="klausur_grenze4_7" size="3" value="{$klausur_grenze4_7}" /></td></tr>
<tr><td>4.0</td><td><input type="text" name="klausur_grenze4_0" size="3" value="{$klausur_grenze4_0}" /></td></tr>
<tr><td>3.7</td><td><input type="text" name="klausur_grenze3_7" size="3" value="{$klausur_grenze3_7}" /></td></tr>
<tr><td>3.3</td><td><input type="text" name="klausur_grenze3_3" size="3" value="{$klausur_grenze3_3}" /></td></tr>
<tr><td>3.0</td><td><input type="text" name="klausur_grenze3_0" size="3" value="{$klausur_grenze3_0}" /></td></tr>
<tr><td>2.7</td><td><input type="text" name="klausur_grenze2_7" size="3" value="{$klausur_grenze2_7}" /></td></tr>
<tr><td>2.3</td><td><input type="text" name="klausur_grenze2_3" size="3" value="{$klausur_grenze2_3}" /></td></tr>
<tr><td>2.0</td><td><input type="text" name="klausur_grenze2_0" size="3" value="{$klausur_grenze2_0}" /></td></tr>
<tr><td>1.7</td><td><input type="text" name="klausur_grenze1_7" size="3" value="{$klausur_grenze1_7}" /></td></tr>
<tr><td>1.3</td><td><input type="text" name="klausur_grenze1_3" size="3" value="{$klausur_grenze1_3}" /></td></tr>
<tr><td>1.0</td><td><input type="text" name="klausur_grenze1_0" size="3" value="{$klausur_grenze1_0}" /></td></tr>
</table>
<p><input type="submit" value="Linear interpolieren" name="linear" /> (dazu werden nur die Angaben bei 1.0 und 4.0 berücksichtigt)</p>
<h2>Angaben zu der Klausur</h2>
<p></p>
<table border="0" cellspacing="0" cellpadding="3" summary="Tabelle für Scheineinstellungen">
<tr><td>Institut</td>
<td><input type="text" size="30" name="klausur_institut" value="{$klausur_institut}" /></td></tr>
<tr><td>Vorlesung</td>
<td><input type="text" size="30" name="klausur_vorlesung" value="{$klausur_vorlesung}" /></td></tr>
<tr><td>Dozent</td><td><input type="text" size="30" name="klausur_dozent" value="{$klausur_dozent}" /></td></tr>
<tr><td>Semester</td><td><input type="text" size="30" name="klausur_semester" value="{$klausur_semester}" /></td></tr>
</table>
<p></p>
<h2> </h2>
<p> </p>
<input type="hidden" name="formular" value="speichern" />
<input type="submit" value="Alles Speichern" name="speichern" />
</form>
|
here the php code
Code: |
<?php
global $einstellungen_post_keys;
$einstellungen_post_keys = array('klausur_grenze1_0', 'klausur_grenze1_3', 'klausur_grenze1_7', 'klausur_grenze2_0', 'klausur_grenze2_3',
'klausur_grenze2_7', 'klausur_grenze3_0', 'klausur_grenze3_3', 'klausur_grenze3_7', 'klausur_grenze4_0', 'klausur_grenze4_7',
'klausur_institut', 'klausur_vorlesung', 'klausur_dozent', 'klausur_semester');
function einstellungen_speichern(PDO $dbh, $parameter, &$smarty) {
global $einstellungen_post_keys, $posts_ok, $tut_cfg_file;
$posts_ok = true;
if (filter_input(INPUT_POST, 'formular') != 'speichern' || filter_input(INPUT_POST, 'speichern') == '') {
return;
}
$posts = $einstellungen_post_keys;
//Werte in Config-Array aufnehmen:
$config = array();
foreach ($posts as $key) {
$config[$key] = $_POST[$key];
}
//Prüfen, ob Werte in Ordnung:
foreach ($config as $key => $v) {
if (preg_match('/^klausur_grenze\d_\d$/', $key)) {
if (!is_numeric($v)) {
$posts_ok = false;
$smarty->assign('meldung', 'Werte nicht gespeichert, da bei Notenskala nicht alle Werte numerisch');
return;
} else {
//Werte runden:
$v = round($v);
$config[$key] = $v;
$punkte[substr($key, 10)] = $v;
}
}
}
//Monotone Verteilung der Noten/Punktezuordnung?
//Nach Keys (1_0, 1_3,...) sortieren:
if(empty($punkte)){
return array();
}
ksort ($punkte);
return $punkte;
$valt = 10000;
$monoton = true;
foreach ($punkte as $k => $v) {
if ($v >= $valt)
$monoton = false;
$valt = $v;
}
if (!$monoton) {
$posts_ok = false;
$smarty->assign('meldung', 'Die Notenskala ist nicht streng monoton (bzw. in falscher Richtung)');
return;
}
if (!is_numeric($_POST['tut_blattanzahl'])) {
$posts_ok = false;
$smarty->assign('meldung', 'Werte nicht gespeichert, da bei Blattanzahl kein numerischer Wert angegeben');
return;
}
$_POST['tut_blattanzahl'] = round($_POST['tut_blattanzahl']);
//alles ok; speichern:
if (db2_vorlesung_aendern($dbh, $_SESSION['v_vorid'], array('v_config' => serialize($config)))) {
//Neue Werte jetzt übernehmen; dazu einfach nochmal die Vorlesung auswählen:
if (!db2_setvorid($_SESSION['v_vorid']))
die('Fehler bei setzen der vorid');
$smarty->assign('meldung', 'Neue Werte gespeichert');
} else
die('interner Fehler beim Speichern der Daten');
}
function einstellungen_laden(PDO $dbh, $parameter, &$smarty) {
einstellungen_speichern($dbh, $parameter, $smarty);
global $posts_ok, $einstellungen_post_keys;
//die Schlüssel der Post-Werte (die gleichzeitig auch die Smarty-Namen und PHP-Variablen sind):
$post_keys = $einstellungen_post_keys;
if (filter_input(INPUT_POST, 'linear') != '') {
//alle Daten wie bisher, zusätzlich linear interpolieren
$punkte1_0 = $_POST['klausur_grenze1_0'];
$punkte4_0 = $_POST['klausur_grenze4_0'];
if (!(is_numeric($punkte1_0) and is_numeric($punkte4_0))) {
$posts_ok = false;
$smarty->assign('meldung', 'Kann nicht interpolieren, da die erforderlichen Daten nicht (richtig) angegeben wurden');
}
$punkte1_0 = round($punkte1_0);
$punkte4_0 = round($punkte4_0);
if ($punkte1_0 == $punkte4_0) {
$posts_ok = false;
$smarty->assign('meldung', 'Kann nicht linear interpolieren, da die Funktion Note(Punkte) nicht wohldefiniert wäre');
}
if ($punkte1_0 < $punkte4_0) {
$posts_ok = false;
$smarty->assign('meldung', 'Also, ich bin schon der Meinung, dass man mit mehr Punkten eine ' .
' bessere Note erhalten sollte und nicht umgekehrt (Werte nicht gespeichert)');
}
if ($posts_ok) {
//wir können weiter machen mit dem Interpolieren.
//Stelle dazu Punkte als lineare Funktion der Note dar:
// Punkte(note) = f(x) = ax + b
$a = ($punkte4_0 - $punkte1_0) / (4.0 - 1.0);
$b = $punkte4_0 - $a * 4.0;
//alle nun berechnen (außer 4.7, falls schon eingegeben):
$smarty->assign('klausur_grenze1_0', round($a * 1.0 + $b));
$smarty->assign('klausur_grenze1_3', round($a * 1.3 + $b));
$smarty->assign('klausur_grenze1_7', round($a * 1.7 + $b));
$smarty->assign('klausur_grenze2_0', round($a * 2.0 + $b));
$smarty->assign('klausur_grenze2_3', round($a * 2.3 + $b));
$smarty->assign('klausur_grenze2_7', round($a * 2.7 + $b));
$smarty->assign('klausur_grenze3_0', round($a * 3.0 + $b));
$smarty->assign('klausur_grenze3_3', round($a * 3.3 + $b));
$smarty->assign('klausur_grenze3_7', round($a * 3.7 + $b));
$smarty->assign('klausur_grenze4_0', round($a * 4.0 + $b));
if (is_numeric($_POST['klausur_grenze4_7'])) {
$smarty->assign('klausur_grenze4_7', $_POST['klausur_grenze4_7']);
} else {
$smarty->assign('klausur_grenze4_7', round($a * 4.7 + $b));
}
$smarty->assign('meldung', 'Linear interpoliert (die Werte wurden noch nicht gespeichert!)');
//restliche Werte des Formulars übernehmen:
foreach ($post_keys as $key) {
if (!preg_match('/^klausur_grenze\d_\d$/', $key))
$smarty->assign($key, $_POST[$key]);
}
}
}
elseif ($posts_ok) { //aktuelle Einstellungen zu smarty schicken:
foreach ($post_keys as $key) {
global ${$key};
$smarty->assign($key, ${$key});
}
}
if (!$posts_ok) {
//Posts nicht ok => Daten nochmals wie gepostet anzeigen:
foreach ($post_keys as $key) {
$smarty->assign($key, $_POST[$key]);
}
}
error_reporting ( -1 );
ini_set ( 'display_errors', true );
}
|
|
|