Smarty Forum Index Smarty
The discussions here are for Smarty, a template engine for the PHP programming language.

Template/PHP/Postgresql

 
Post new topic   Reply to topic    Smarty Forum Index -> General
View previous topic :: View next topic  
Author Message
egokyniker
Smarty Rookie


Joined: 24 Oct 2015
Posts: 10

PostPosted: Wed Aug 24, 2016 8:04 am    Post subject: Template/PHP/Postgresql Reply with quote

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>&nbsp;</h2>
<p>&nbsp;</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 );

}
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Smarty Forum Index -> General All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP