diff --git a/cis/testtool/admin/bild.php b/cis/testtool/admin/bild.php index 500529d95..5be9eda48 100644 --- a/cis/testtool/admin/bild.php +++ b/cis/testtool/admin/bild.php @@ -43,6 +43,10 @@ if(isset($_GET['src']) && $_GET['src']=='frage' && isset($_GET['frage_id'])) { $qry = "SELECT bild FROM testtool.tbl_frage WHERE frage_id='".addslashes($_GET['frage_id'])."'"; } +elseif(isset($_GET['src']) && $_GET['src']=='vorschlag' && isset($_GET['vorschlag_id'])) +{ + $qry = "SELECT bild FROM testtool.tbl_vorschlag WHERE vorschlag_id='".addslashes($_GET['vorschlag_id'])."'"; +} else echo 'Unkown type'; diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 600365f46..4db182beb 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -23,6 +23,7 @@ require_once('../../config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/frage.class.php'); +require_once('../../../include/vorschlag.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); //wandelt einen String in HEX-Werte um @@ -63,7 +64,13 @@ if(isset($_GET['frage_id'])) $frage_id = $_GET['frage_id']; else $frage_id = ''; - + +if(isset($_GET['vorschlag_id'])) + $vorschlag_id = $_GET['vorschlag_id']; +else + $vorschlag_id = ''; + +$save_vorschlag_error=false; ?> @@ -106,19 +113,19 @@ if(isset($_POST['submitbild'])) $frage->bild = $content; $frage->new = false; if($frage->save()) - echo "Bild gespeichert"; + echo "Bild gespeichert
"; else - echo $frage->errormsg; + echo ''.$frage->errormsg.'
'; } else - echo $frage->errormsg; + echo ''.$frage->errormsg.'
'; } else - echo "
File ist kein gueltiges Bild
"; + echo "File ist kein gueltiges Bild
"; } } -//Speichern der Daten +//Speichern der Frage-Daten if(isset($_POST['submitdata'])) { $frage = new frage($conn); @@ -130,15 +137,88 @@ if(isset($_POST['submitdata'])) $frage->new = false; if($frage->save()) { - echo "Daten gespeichert"; + echo "Daten gespeichert
"; } else - echo $frage->errormsg; + echo ''.$frage->errormsg.'
'; } else - echo $frage->errormsg; + echo ''.$frage->errormsg.'
'; } +//Speichern eines Vorschlages +if(isset($_POST['submitvorschlag'])) +{ + $content=''; + if(isset($_FILES['bild']['tmp_name']) && is_uploaded_file($_FILES['bild']['tmp_name'])) + { + //Wenn File ein Bild ist + if (($_FILES['bild']['type']=="image/gif") || ($_FILES['bild']['type']=="image/jpeg") || ($_FILES['bild']['type']=="image/png")) + { + $filename = $_FILES['bild']['tmp_name']; + //File oeffnen + $fp = fopen($filename,'r'); + //auslesen + $content = fread($fp, filesize($filename)); + fclose($fp); + //in HEX-Werte umrechnen + $content = strhex($content); + } + else + echo "Datei ist kein Bild!
"; + } + + $vorschlag = new vorschlag($conn); + $error=false; + + if($_POST['vorschlag_id']!='') + { + if($vorschlag->load($_POST['vorschlag_id'])) + { + $vorschlag->new = false; + $vorschlag->vorschlag_id = $_POST['vorschlag_id']; + } + else + { + echo 'Fehler beim Laden des Datensatzes
'; + $error = true; + } + } + else + $vorschlag->new = true; + if($_POST['nummer']=='' || !is_numeric($_POST['nummer'])) + { + $error = true; + echo 'Nummer ist ungueltig
'; + } + + if(!$error) + { + $vorschlag->bild = $content; + $vorschlag->frage_id = $_GET['frage_id']; + $vorschlag->nummer = $_POST['nummer']; + $vorschlag->antwort = strtoupper($_POST['antwort']); + $vorschlag->text = $_POST['text']; + + if($vorschlag->save()) + echo "Vorschlag gespeichert
"; + else + { + $save_vorschlag_error=true; + echo ''.$vorschlag->errormsg.'
'; + } + } + else + $save_vorschlag_error=true; +} +//Vorschlag loeschen +if(isset($_GET['type']) && $_GET['type']=='delete' && isset($_GET['vorschlag_id'])) +{ + $vs = new vorschlag($conn); + if(!$vs->delete($_GET['vorschlag_id'])) + echo ''.$vs->errormsg.'
'; + $vorschlag_id=''; +} //Liste der Gebiete $qry = "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung"; $result = pg_query($conn, $qry); @@ -192,6 +272,8 @@ $frage = new frage($conn); $frage->getFrage($gebiet_id, $nummer, $gruppe_id); if($frage->frage_id!='') { + echo ""; - echo "
"; + //Fragen echo ""; echo ""; //Upload Feld fuer Bild @@ -215,16 +297,67 @@ if($frage->frage_id!='') echo ""; echo "
"; //Bei Aenderungen im Textfeld werden diese sofort in der Vorschau angezeigt - echo ""; + echo ""; echo ""; echo "
Demo demo?'checked':'')."> Lösung
"; echo ""; echo "
"; //Vorschau fuer das Text-Feld - echo "Vorschau:
$frage->text
"; + echo "Vorschau:
$frage->text
"; + echo ""; + echo ''; + + $vorschlag = new vorschlag($conn); + + if($vorschlag_id!='') + if(!$vorschlag->load($vorschlag_id)) + die($vorschlag->errormsg); + if($save_vorschlag_error) + { + $vorschlag->vorschlag_id = (isset($_POST['vorschlag_id'])?$_POST['vorschlag_id']:''); + $vorschlag->frage_id = $_GET['frage_id']; + $vorschlag->nummer = $_POST['nummer']; + $vorschlag->antwort = $_POST['antwort']; + $vorschlag->text = $_POST['text']; + $vorschlag->bild = ''; + } + //Vorschlag + echo 'Vorschlag

'; + echo "
"; + echo ""; + echo ''; + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + //Upload Feld fuer Bild + echo ""; + echo ""; + echo ""; + echo ""; + echo "
Antwort
Text:
Bild:
Nummer:
"; + echo "
"; + + echo ''; + + $vorschlag = new vorschlag($conn); + $vorschlag->getVorschlag($frage->frage_id); + $i=0; + if(count($vorschlag->result)>0) + { + echo ''; + + foreach ($vorschlag->result as $vs) + { + $i++; + echo ""; + } + echo '
NummerAntwortTextBild
$vs->nummer$vs->antwort$vs->texteditdelete
'; + } } diff --git a/include/vorschlag.class.php b/include/vorschlag.class.php new file mode 100644 index 000000000..8cc9d4852 --- /dev/null +++ b/include/vorschlag.class.php @@ -0,0 +1,203 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class vorschlag +{ + //Tabellenspalten + var $vorschlag_id; + var $frage_id; + var $nummer; + var $antwort; + var $text; + var $bild; + + // ErgebnisArray + var $result=array(); + var $num_rows=0; + var $errormsg; + var $new; + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional einen vorschlag + // * @param $conn Datenbank-Connection + // * $frage_id Frage die geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function vorschlag($conn, $vorschlag_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($vorschlag_id != null) + $this->load($vorschlag_id); + } + + // *********************************************************** + // * Laedt Vorschlag mit der uebergebenen ID + // * @param $vorschlag_id ID des Vorschlages der geladen werden soll + // *********************************************************** + function load($vorschlag_id) + { + $qry = "SELECT * FROM testtool.tbl_vorschlag WHERE vorschlag_id='".addslashes($vorschlag_id)."'"; + + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + $this->vorschlag_id = $row->vorschlag_id; + $this->frage_id = $row->frage_id; + $this->antwort = $row->antwort; + $this->nummer = $row->nummer; + $this->text = $row->text; + $this->bild = $row->bild; + return true; + } + else + { + $this->errormsg = "Kein Eintrag gefunden fuer $vorschlag_id"; + return false; + } + } + else + { + $this->errormsg = "Fehler beim laden: $qry"; + return false; + } + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + return true; + } + + // ****************************************************************** + // * Speichert die Benutzerdaten in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt + // * ansonsten der Datensatz mit $uid upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ****************************************************************** + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE + { + $qry = 'INSERT INTO testtool.tbl_vorschlag (frage_id, nummer, antwort, text, bild) VALUES('. + "'".addslashes($this->frage_id)."',". + $this->addslashes($this->nummer).",". + $this->addslashes($this->antwort).",". + $this->addslashes($this->text).",". + $this->addslashes($this->bild).");"; + } + else + { + $qry = 'UPDATE testtool.tbl_vorschlag SET'. + ' frage_id='.$this->addslashes($this->frage_id).','. + ' nummer='.$this->addslashes($this->nummer).','. + ' antwort='.$this->addslashes($this->antwort).','. + ' text='.$this->addslashes($this->text); + if($this->bild!='') + $qry.=' , bild='.$this->addslashes($this->bild); + $qry.=" WHERE vorschlag_id='".addslashes($this->vorschlag_id)."';"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Frage:'.$qry; + return false; + } + } + + function getVorschlag($frage_id) + { + $qry = "SELECT * FROM testtool.tbl_vorschlag WHERE frage_id='".addslashes($frage_id)."' ORDER BY nummer"; + + if($result = pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $vs = new vorschlag($this->conn); + $vs->vorschlag_id = $row->vorschlag_id; + $vs->frage_id = $row->frage_id; + $vs->nummer = $row->nummer; + $vs->antwort = $row->antwort; + $vs->text = $row->text; + $vs->bild = $row->bild; + + $this->result[] = $vs; + + } + return true; + } + else + { + $this->errormsg = 'Fehler beim laden der Daten'; + return false; + } + } + function delete($vorschlag_id) + { + $qry = "DELETE FROM testtool.tbl_vorschlag WHERE vorschlag_id='".addslashes($vorschlag_id)."'"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim loeschen'; + return false; + } + } +} +?>