assign('ueberschrift','Zeiten eingeben'); if(!$erlaubt){ $_inh = T_KEINZUGRIFF; } else{ $_GET['aktion'] = isset($_GET['aktion'])?$_GET['aktion']:''; switch($_GET['aktion']){ case 'protokoll': if(!pruefeRechte('z_eingeben_protokoll')){ $_inh = T_KEINZUGRIFF; break; } if(isset($_POST['wkwechseln'])){ unset($_SESSION['zeiteneing_protokoll']); } if(isset($_POST['confzuruecksetzen'])){ unset($_SESSION['zeiteneing_protokoll']['conf']); } if(isset($_SESSION['zeiteneing_protokoll'])){ $_tmpl->assign('ueberschrift','Protokoll eingeben ('.$_SESSION['zeiteneing_protokoll']['wettkampftitel'].')'); $_laengen = array( 25 => '25', 50 => '50', 100 => '100', 200 => '200', 400 => '400', 800 => '800', 1500 => '1500' ); } if(!isset($_SESSION['zeiteneing_protokoll']) or !isset($_SESSION['zeiteneing_protokoll']['wettkampfid'])){ # Wettkampf wählen $query = "SELECT CONCAT(DATE_FORMAT(datum,'%d.%m.%Y'), ' - ', titel) as titel, id FROM ".DB_PREFIX."wettkaempfe WHERE datum <= NOW() ORDER BY datum DESC"; $_db->holeDaten($query); $wettkaempfe = $_db->baueArray('titel','id'); $_bahnlaengen = array( '25' => 'Kurzbahn (25m)', '50' => 'Langbahn (50m)', 'x' => 'sonstige' ); if(isset($_POST['weiter1'])){ require_once('func/pruefen.inc.php'); $f = ''; if($_POST['waehlen'] != '-'){ # vorhandenen Wettkampf wählen $f .= pruefen($_POST['waehlen'],'wertemenge','der gewählte Wettkampf ist ungültig',array_keys($wettkaempfe)); } else{ # Wettkampf anlegen $d = &$_POST['anlegen']; $f .= pruefen($d['titel'],'leer','Der Titel fehlt'); $f .= pruefen($d['titel'],'minlaenge','Der Titel ist zu kurz (min 2 Zeichen)',2); $f .= pruefen($d['titel'],'maxlaenge','Der Titel ist zu lang (max 100 Zeichen)',100); $f .= pruefen($d['kurztitel'],'leer','Der Kurztitel fehlt'); $f .= pruefen($d['kurztitel'],'minlaenge','Der Kurztitel ist zu kurz (min 2 Zeichen)',2); $f .= pruefen($d['kurztitel'],'maxlaenge','Der Kurztitel ist zu lang (max 40 Zeichen)',40); $f .= pruefen($d['ort'],'maxlaenge','Der Ort ist zu lang (max 30 Zeichen)',30); $f .= pruefen($d['datum'],'leer','Das Datum fehlt'); $f .= pruefen($d['datum'],'datum','Das Datum ist ungültig'); $f .= pruefen($d['bahnlaenge'],'wertemenge','Die Bahnlänge ist ungültig',array_keys($_bahnlaengen)); } if(empty($f)){ if($_POST['waehlen'] != '-'){ # vorhandenen Wettkampf wählen $wkid = $_POST['waehlen']; } else{ $query = "INSERT INTO ".DB_PREFIX."wettkaempfe SET titel = '".text_format($_POST['anlegen']['titel'],'db')."', kurztitel = '".text_format($_POST['anlegen']['kurztitel'],'db')."', ort = '".text_format($_POST['anlegen']['ort'],'db')."', datum = '".text_format($_POST['anlegen']['datum'],'dbdatum')."', bahnlaenge = '".$_POST['anlegen']['bahnlaenge']."'"; $_db->fuehreQueryAus($query); $wkid = $_db->ergebnis['insertid']; } $query = "SELECT id as wettkampfid, CONCAT(DATE_FORMAT(datum,'%d.%m.%Y'), ' - ', titel) as wettkampftitel, datum as dbdatum FROM ".DB_PREFIX."wettkaempfe WHERE id = ".$wkid.""; $_db->holeDaten($query); $_SESSION['zeiteneing_protokoll'] = $_db->holeZeile(); weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } else{ $_tmpl->assign('fehler',$f); $_tmpl->assign('anlegen',$_POST['anlegen']); } } $_tmpl->assign('wettkaempfe',$wettkaempfe); $_tmpl->assign('_bahnlaengen',$_bahnlaengen); $_inh .= $_tmpl->fetch('zeiten/52.protokoll-wettkampfwaehlen.inc.html'); } elseif(!isset($_SESSION['zeiteneing_protokoll']['conf'])){ # Einstellungen setzen if(isset($_POST['weiter2'])){ $genauigkeit = (isset($_POST['genauigkeit']) and in_array($_POST['genauigkeit'],array('hundertstel','zehntel')))? $_POST['genauigkeit']:'hundertstel'; $mitgliedersuche = (isset($_POST['mitgliedersuche']) and in_array($_POST['mitgliedersuche'],array('mehrere','ein')))? $_POST['mitgliedersuche']:'mehrere'; $staffelzwzeiten = (isset($_POST['staffelzwischenzeiten']) and in_array($_POST['staffelzwischenzeiten'],array('aufsummiert','einzelne')))? $_POST['staffelzwischenzeiten']:'aufsummiert'; $_SESSION['zeiteneing_protokoll']['conf'] = array( 'genauigkeit' => $genauigkeit, 'mitgliedersuche' => $mitgliedersuche, 'staffelzwischenzeiten' => $staffelzwzeiten ); weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } $_inh .= $_tmpl->fetch('zeiten/52.protokoll-einstellungen.inc.html'); } elseif(!isset($_SESSION['zeiteneing_protokoll']['strecke'])){ # Strecke wählen if(isset($_POST['weiter3'])){ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['anzahl'],'leer','Die Schwimmeranzahl fehlt'); $f .= pruefen($_POST['anzahl'],'zahl','Die Schwimmeranzahl ist ungültig'); if($_POST['anzahl'] < 1 or $_POST['anzahl'] > 20){ $f .= 'Die Schwimmeranzahl muss zwischen 1 und 20 liegen'; } $f .= pruefen($_POST['laenge'],'leer','Die Streckenlänge fehlt'); $f .= pruefen($_POST['laenge'],'wertemenge','Die Streckenlänge ist ungültig',array_keys($_laengen)); $f .= pruefen($_POST['lage'],'leer','Die Lage fehlt'); $f .= pruefen($_POST['lage'],'wertemenge','Die Lage ist ungültig',array_keys($_lagen)); $f .= pruefen($_POST['mw'],'leer','Das Geschlecht fehlt'); $f .= pruefen($_POST['mw'],'wertemenge','Das Geschlecht ist ungültig',array_keys($_geschlechter)); if($_POST['anzahl'] == 1 and $_POST['mw'] == 'x'){ $f .= 'Das Geschlecht darf nur bei Staffeln mixed sein'; } if(!empty($f)){ $_tmpl->assign('fehler',$f); } else{ $_SESSION['zeiteneing_protokoll']['strecke'] = array( 'laenge' => $_POST['laenge'], 'lage' => $_POST['lage'], 'mw' => $_POST['mw'] ); if($_POST['anzahl'] > 1){ $_SESSION['zeiteneing_protokoll']['strecke']['staffelschwimmer'] = $_POST['anzahl']; $_SESSION['zeiteneing_protokoll']['staffelzeiten'] = array(); for($i=1;$i<=$_POST['anzahl'];$i++){ $_SESSION['zeiteneing_protokoll']['staffelzeiten'][$i] = array('zeit' => '','mid' => ''); } } else{ # vorhandene Zeiten holen $s = $_SESSION['zeiteneing_protokoll']['strecke']; $query = "SELECT m.id as id, CONCAT(m.nachname,', ',m.vorname,' (',m.mw,', ',YEAR(gebdatum),')') as name, z.zeit FROM ".DB_PREFIX."zeiten as z LEFT JOIN ".DB_PREFIX."staffeln_zeiten as sz ON z.id=sz.zeitid, ".DB_PREFIX."mitglieder as m WHERE z.mitgliedid = m.id AND wettkampfid = ".$_SESSION['zeiteneing_protokoll']['wettkampfid']." AND disziplin = ".$s['lage']." AND streckenlaenge = ".$s['laenge']." AND m.mw = '".$s['mw']."' AND staffelid IS NULL ORDER BY nachname, vorname"; $_db->holeDaten($query); if($_db->ergebnis['anzahl'] > 0){ $daten = array(); $ids = array(); foreach($_db->ergebnis['daten'] as $row){ $ids[] = $row['id']; $daten[$row['id']] = $row['name'].' - '.text_format($row['zeit'],'schwimmzeit'); } $_SESSION['zeiteneing_protokoll']['vorhandene_zeiten'] = $daten; $_SESSION['zeiteneing_protokoll']['vorhandene_ids'] = $ids; } else{ $_SESSION['zeiteneing_protokoll']['vorhandene_zeiten'] = array(); $_SESSION['zeiteneing_protokoll']['vorhandene_ids'] = array(); } } weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } } $_tmpl->assign('_laengen',$_laengen); $_tmpl->assign('_lagen',$_lagen); $_tmpl->assign('_geschlechter',$_geschlechter); $_inh .= $_tmpl->fetch('zeiten/52.protokoll-wkwaehlen.inc.html'); } else{ # Zeiten eingeben $dat = &$_SESSION['zeiteneing_protokoll']; if(isset($_POST['wkzureucksetzen'])){ # Strecke zurücksetzen unset($dat['strecke']); unset($dat['vorhandene_zeiten']); unset($dat['vorhandene_ids']); if(isset($dat['zeiten'])){ unset($dat['zeiten']); } weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } if(isset($_POST['zeiteneingeben'])){ # von Mitgliedersuche auf Zeiteneingabe umschalten unset($dat['mitgliederwaehlen']); } if(isset($_POST['mitgliedwaehlen'])){ # von Zeiteneingabe auf Mitgliedersuche umschalten (dabei ggf. eingegebene Daten sichern) if(isset($dat['strecke']['staffelschwimmer']) and isset($_POST['staffelzeiten'])){ require_once('func/pruefen.inc.php'); foreach($_POST['staffelzeiten'] as $i => $zeit){ if($dat['strecke']['mw'] == 'x' and (in_array($zeit['mid'],array_keys($dat['kader']['m'])) or in_array($zeit['mid'],array_keys($dat['kader']['w'])))){ $dat['staffelzeiten'][$i]['mid'] = $zeit['mid']; } elseif(in_array($zeit['mid'],array_keys($dat['kader'][$dat['strecke']['mw']]))){ $dat['staffelzeiten'][$i]['mid'] = $zeit['mid']; } if(empty($zeit['zeit'])){ continue; } if($dat['conf']['genauigkeit']=='zehntel' and substr($zeit['zeit'],-1) != '0'){ $zeit['zeit'] .= '0'; } pruefen($zeit['zeit'],'schwimmzeit','-'); $dat['staffelzeiten'][$i]['zeit'] = $zeit['zeit']; } if(!isset($dat['staffeldaten'])){ $dat['staffeldaten'] = array(); } if(!empty($_POST['staffeldaten']['geszeit'])){ pruefen($_POST['staffeldaten']['geszeit'],'schwimmzeit','-'); $dat['staffeldaten']['geszeit'] = $_POST['staffeldaten']['geszeit']; } if(isset($_POST['staffeldaten']['weitere'])){ $dat['staffeldaten']['weitere'] = 1; } elseif(isset($dat['staffeldaten']['weitere'])){ unset($dat['staffeldaten']['weitere']); } } if(isset($_POST['zeiten']) and is_array($_POST['zeiten'])){ require_once('func/pruefen.inc.php'); if(!isset($dat['zeiten'])){ $dat['zeiten'] = array(); } foreach($_POST['zeiten'] as $mid => $zeit){ if(!in_array($mid,array_keys($dat['kader'][$dat['strecke']['mw']])) or empty($zeit)){ continue; } if($dat['conf']['genauigkeit']=='zehntel' and substr($zeit,-1) != '0'){ $zeit .= '0'; } pruefen($zeit,'schwimmzeit','-'); $dat['zeiten'][$mid] = $zeit; } } $dat['mitgliederwaehlen'] = 1; } if(isset($dat['mitgliederwaehlen'])){ if(isset($_GET['id'])){ $query = "SELECT id, CONCAT(nachname,', ',vorname,' (',mw,', ',YEAR(gebdatum),')') as name, mw FROM ".DB_PREFIX."mitglieder WHERE id = '".text_format($_GET['id'],'id')."'"; $_db->holeDaten($query); if($_db->holeAnzahl() == 1){ $row = $_db->holeZeile(); $dat['kader'][$row['mw']][$row['id']] = $row['name']; asort($dat['kader'][$row['mw']]); if($dat['conf']['mitgliedersuche'] == 'ein'){ unset($dat['mitgliederwaehlen']); weiterleiten('/zeiten/eingeben.html?aktion=protokoll','Das Mitglied wurde gespeichert'); } else{ $_SESSION['hinweis'] = 'Das Mitglied wurde gespeichert'; } } } require_once('func/mitgliedwaehlen.inc.php'); $_inh .= mitgliedwaehlen('/zeiten/eingeben.html', 'aktion=protokoll'); $_inh .= '

'; $_inh .= '

'; break; } if(isset($dat['strecke']['staffelschwimmer'])){ # Staffel if(isset($_POST['staffelzeiten'])){ require_once('func/pruefen.inc.php'); $f = ''; foreach($_POST['staffelzeiten'] as $i => $zeit){ if($dat['strecke']['mw'] == 'x' and (in_array($zeit['mid'],array_keys($dat['kader']['m'])) or in_array($zeit['mid'],array_keys($dat['kader']['w'])))){ $dat['staffelzeiten'][$i]['mid'] = $zeit['mid']; } elseif(in_array($zeit['mid'],array_keys($dat['kader'][$dat['strecke']['mw']]))){ $dat['staffelzeiten'][$i]['mid'] = $zeit['mid']; } if(empty($zeit)){ continue; } if($dat['conf']['genauigkeit']=='zehntel' and substr($zeit['zeit'],-1) != '0'){ $zeit['zeit'] .= '0'; } $f .= pruefen($zeit['zeit'],'schwimmzeit','mindestens eine Zeit ist ungültig'); $dat['staffelzeiten'][$i]['zeit'] = $zeit['zeit']; } if(!isset($dat['staffeldaten'])){ $dat['staffeldaten'] = array(); } if(!empty($_POST['staffeldaten']['geszeit']) and (int)$_POST['staffeldaten']['geszeit'] != 0){ if($dat['conf']['genauigkeit']=='zehntel' and substr($_POST['staffeldaten']['geszeit'],-1) != '0'){ $_POST['staffeldaten']['geszeit'] .= '0'; } $f .= pruefen($_POST['staffeldaten']['geszeit'],'schwimmzeit','die Gesamtzeit ist ungültig'); $dat['staffeldaten']['geszeit'] = $_POST['staffeldaten']['geszeit']; } if(isset($_POST['staffeldaten']['weitere'])){ $dat['staffeldaten']['weitere'] = 1; } elseif(isset($dat['staffeldaten']['weitere'])){ unset($dat['staffeldaten']['weitere']); } # prüfen $zwzeiten = $dat['conf']['staffelzwischenzeiten']; # Gesamtzeit $f .= pruefen($dat['staffeldaten']['geszeit'], 'leer', 'Die Gesamtzeit fehlt'); # Zwischenzeiten $schwimmer = array(); $angegebenenzwischenzeiten = 0; $startzeit = 0; foreach($dat['staffelzeiten'] as $i => $zeit){ if(!empty($zeit['zeit'])){ $angegebenenzwischenzeiten++; } if($zeit['zeit'] > $dat['staffeldaten']['geszeit']){ $f .= 'Die Zwischenzeiten dürfen nicht größer sein als die Gesamtzeit
'; } if(empty($zeit['mid'])){ $f .= 'Es müssen alle Schwimmer ausgewählt werden
'; } else{ if(in_array($zeit['mid'],$schwimmer)){ $f .= 'Jeder Schwimmer kann nur einmal in der Staffel schwimmen
'; } $schwimmer[] = $zeit['mid']; } if($zwzeiten == 'aufsummiert'){ if($i == 1){ # Startschwimmer # keine Prüfung, nur Zeit an $startzeit zuweisen $startzeit = $zeit['zeit']; } else{ if($zeit['zeit'] <= $startzeit){ $f .= 'Die Zwischenzeit eines Schwimmers muss kleiner sein als die des Vorgängers
'; } if(!isset($dat['staffelzeiten'][($i+1)]) and $zeit['zeit'] != $dat['staffeldaten']['geszeit']){ $f .= 'Die Zeit des letzten Schwimmers muss der Gesamtzeit entsprechen
'; } $startzeit = $zeit['zeit']; } } else{ $startzeit += $zeit['zeit']; } } if($zwzeiten == 'aufsummiert' and $angegebenenzwischenzeiten < $dat['strecke']['staffelschwimmer']){ $f .= 'Es müssen alle Zwischenzeiten angegeben werden
'; } if($zwzeiten == 'einzelne'){ if($angegebenenzwischenzeiten > $dat['strecke']['staffelschwimmer']){ $f .= 'Es sind zu viele Zwischenzeiten angegeben'; } if($angegebenenzwischenzeiten <= $dat['strecke']['staffelschwimmer'] and $startzeit > $dat['staffeldaten']['geszeit']){ $f .= 'Die Summe der Einzelzeiten ist größer als die Gesamtzeit'; } } if(!empty($f)){ $_tmpl->assign('fehler',$f); } else{ # Staffel $query = "INSERT INTO ".DB_PREFIX."staffeln SET wettkampfid = ".$dat['wettkampfid'].", disziplin = ".$dat['strecke']['lage'].", anzahl = ".$_SESSION['zeiteneing_protokoll']['strecke']['staffelschwimmer'].", laenge = ".$dat['strecke']['laenge'].", mw = '".$_SESSION['zeiteneing_protokoll']['strecke']['mw']."', gesamtzeit = ".$dat['staffeldaten']['geszeit'].""; $_db->fuehreQueryAus($query); $staffelid = $_db->ergebnis['insertid']; $vorher = 0; $lagen2einzel = array(1=>3,2=>2,3=>4,4=>1); # einzelne Zeiten foreach($dat['staffelzeiten'] as $i => $s){ if($zwzeiten=='aufsummiert' and !empty($s['zeit'])){ $zeit = $s['zeit']-$vorher; $vorher = $s['zeit']; } elseif(!empty($s['zeit'])){ $zeit = $s['zeit']; } else{ $zeit = 'NULL'; } if($dat['strecke']['lage'] == 5){ $disziplin = $lagen2einzel[$i]; } else{ $disziplin = $dat['strecke']['lage']; } $query = "INSERT INTO ".DB_PREFIX."zeiten SET mitgliedid = ".$s['mid'].", datum = '".$dat['dbdatum']."', zeit = ".$zeit.", disziplin = ".$disziplin.", streckenlaenge = ".$dat['strecke']['laenge'].", wettkampfid = ".$dat['wettkampfid'].", bestenliste = ".($i==1?1:0).""; $_db->fuehreQueryAus($query); $zeitid = $_db->ergebnis['insertid']; $query = "INSERT INTO ".DB_PREFIX."staffeln_zeiten SET staffelid = ".$staffelid.", zeitid = ".$zeitid.", schwimmernr = ".$i.""; $_db->fuehreQueryAus($query); $dat['staffelzeiten'][$i] = array('mid'=>'','zeit'=>''); } if(isset($dat['staffeldaten']['weitere'])){ $dat['staffeldaten']['geszeit'] = ''; } else{ unset($dat['staffeldaten']); unset($dat['staffelzeiten']); unset($dat['strecke']); weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } } } $eingebbare = array(); if($dat['strecke']['mw'] == 'x'){ if(isset($dat['kader']['w'])){ $eingebbare += $dat['kader']['w']; } if(isset($dat['kader']['m'])){ $eingebbare += $dat['kader']['m']; } } elseif(isset($dat['kader'][$dat['strecke']['mw']])){ if(isset($dat['kader'][$dat['strecke']['mw']])){ $eingebbare = $dat['kader'][$dat['strecke']['mw']]; } } if(count($eingebbare)<$dat['strecke']['staffelschwimmer']){ $dat['mitgliederwaehlen'] = 1; weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } if(isset($dat['staffeldaten'])){ $_tmpl->assign('staffeldaten',$dat['staffeldaten']); } $_tmpl->assign('zeiten',$dat['staffelzeiten']); $_tmpl->assign('eingebbare',$eingebbare); } else{ # Einzelstrecke if(isset($_POST['zeiten']) and is_array($_POST['zeiten'])){ if(!isset($dat['zeiten'])){ $dat['zeiten'] = array(); } require_once('func/pruefen.inc.php'); $querys = array(); $f = ''; foreach($_POST['zeiten'] as $mid => $zeit){ if(!in_array($mid,array_keys($dat['kader'][$dat['strecke']['mw']])) or empty($zeit)){ unset($_POST['zeiten'][$mid]); continue; } if($dat['conf']['genauigkeit']=='zehntel' and substr($zeit,-1) != '0'){ $zeit .= '0'; } $f .= pruefen($zeit,'schwimmzeit','mindestens eine Zeit ist ungültig'); $dat['zeiten'][$mid] = $zeit; } if(empty($f)){ foreach($_POST['zeiten'] as $mid => $zeit){ $querys[] = "INSERT INTO ".DB_PREFIX."zeiten (mitgliedid, datum, zeit, disziplin, streckenlaenge, wettkampfid, bestenliste) VALUES (".$mid.", '".$dat['dbdatum']."', ".$dat['zeiten'][$mid].", ".$dat['strecke']['lage'].", ".$dat['strecke']['laenge'].", ".$dat['wettkampfid'].", 1)"; } if(count($querys)>0){ foreach($querys as $query){ $_db->fuehreQueryAus($query); } } unset($dat['strecke']); unset($dat['vorhandene_zeiten']); unset($dat['vorhandene_ids']); if(isset($dat['zeiten'])){ unset($dat['zeiten']); } weiterleiten('/zeiten/eingeben.html?aktion=protokoll','die Zeiten wurden gespeichert'); } else{ $_tmpl->assign('fehler',$f); } } $_tmpl->assign('vorhandene',$dat['vorhandene_zeiten']); $eingebbare = array(); if(!isset($dat['kader'][$dat['strecke']['mw']])){ $dat['mitgliederwaehlen'] = 1; weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } foreach($dat['kader'][$dat['strecke']['mw']] as $mid => $name){ if(in_array($mid,$dat['vorhandene_ids'])){ continue; } else{ $eingebbare[$mid] = $name; } } if(count($eingebbare)<1){ $dat['mitgliederwaehlen'] = 1; weiterleiten('/zeiten/eingeben.html?aktion=protokoll'); } if(isset($dat['zeiten'])){ $_tmpl->assign('zeiten',$dat['zeiten']); } $_tmpl->assign('eingebbare',$eingebbare); } $_tmpl->assign('strecke',(isset($dat['strecke']['staffelschwimmer'])?$dat['strecke']['staffelschwimmer'].'x':'').$dat['strecke']['laenge'].'m '.$_lagen[$dat['strecke']['lage']].' '.$_geschlechter[$dat['strecke']['mw']]); $_inh .= $_tmpl->fetch('zeiten/52.protokoll-zeiteneingeben.inc.html'); } break; case 'staffel': $_tmpl->assign('ueberschrift','Staffel anlegen'); if(!pruefeRechte('z_eingeben_staffeln')){ $_inh = T_KEINZUGRIFF; break; } if(isset($_GET['wkzuruecksetzen'])){ unset($_SESSION['zeiteneing_staffeln']['wkid']); unset($_SESSION['zeiteneing_staffeln']['str_wk']); } if(!isset($_SESSION['zeiteneing_staffeln']['wkid'])){ # Wettkampf wählen require_once('class/wettkaempfe.inc.php'); $wk = new wettkaempfe; $wk->tmpl = $_tmpl; $wk->db = $_db; $wk->conf = array('lagen'=>$_lagen,'wkarten'=>$_wkarten,'altersklassen'=>$_altersklassen,'_gleinst'=>$_gleinst); $wettkaempfe = $wk->holeWettkampfliste(true,'neu','vergangene interpoliertetraining'); if(isset($_POST['wettkampf'])){ $f = ''; if(!in_array($_POST['wettkampf'],array_keys($wettkaempfe))){ $f .= 'Bitte Wettkampf wählen
'; } if(!ctype_digit($_POST['anzschwimmer']) or $_POST['anzschwimmer'] > 15 or $_POST['anzschwimmer'] < 2){ $f .= 'Die Anzahl der Schwimmer ist ungültig
'; } if(empty($f)){ $_SESSION['zeiteneing_staffeln']['wkid'] = $_POST['wettkampf']; $_SESSION['zeiteneing_staffeln']['str_wk'] = $wettkaempfe[$_POST['wettkampf']]; $tmp = array( 'anzschwimmer' => $_POST['anzschwimmer'], 'disziplin' => '', 'laenge' => '', 'gesamtzeit' => '', 'datum' => substr($_SESSION['zeiteneing_staffeln']['str_wk'],-10), 'aufsummiert' => 'aufsummiert', '_schwimmer' => array() ); for($i=1;$i<=$_POST['anzschwimmer'];$i++){ $tmp['_schwimmer'][$i] = array( 'nr' => $i, 'mid' => '', 'name' => '', 'zwischenzeit' => '' ); } $_SESSION['zeiteneing_staffeln']['daten'] = $tmp; weiterleiten('/zeiten/eingeben.html?aktion=staffel'); } else{ $_tmpl->assign('fehler',$f); } } $_tmpl->assign('wettkaempfe',$wettkaempfe); $_inh .= $_tmpl->fetch('zeiten/52.staffeln-wkwaehlen.inc.html'); break; } if(isset($_GET['waehlen'])){ $suchen = true; if(!isset($_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['waehlen']]) or (isset($_GET['id']) and ctype_digit($_GET['id']))){ $query = "SELECT CONCAT(nachname, ', ', vorname, ' (', mw, ', ', YEAR(gebdatum), ')') as name, mw FROM ".DB_PREFIX."mitglieder WHERE id = ".$_GET['id'].""; $_db->holeDaten($query); $suchen = ($_db->ergebnis['anzahl'] != 1); if(!$suchen){ foreach($_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'] as $row){ if($row['mid'] == $_GET['id']){ $suchen = true; $_SESSION['hinweis'] = 'Das Mitglied ist bereits in der Staffel eingetragen.'; break; } } if(!$suchen){ $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['waehlen']]['mid'] = $_GET['id']; $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['waehlen']]['name'] = $_db->holeWert('name'); $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['waehlen']]['mw'] = $_db->holeWert('mw'); } } } if($suchen){ require_once('func/mitgliedwaehlen.inc.php'); $_inh .= mitgliedwaehlen('/zeiten/eingeben.html', 'aktion=staffel&waehlen='.$_GET['waehlen']); break; } } if(isset($_GET['zuruecksetzen']) and isset($_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['zuruecksetzen']])){ $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['zuruecksetzen']]['mid'] = ''; $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$_GET['zuruecksetzen']]['name'] = ''; } $nrarray = range(1,$_SESSION['zeiteneing_staffeln']['daten']['anzschwimmer']); unset($_lagen[6]); $conf = array( 'aufsummiert' => array('aufsummiert'=>'aufsummiert','einzeln'=>'einzeln'), 'lagen' => $_lagen ); if(isset($_POST['post'])){ require_once('func/pruefen.inc.php'); $f = ''; # Disziplin $tmp = pruefen($_POST['disziplin'], 'wertemenge', 'Die Disziplin ist ungültig', array_keys($conf['lagen'])); if(!empty($tmp)){ $f .= $tmp; } else{ $_SESSION['zeiteneing_staffeln']['daten']['disziplin'] = $_POST['disziplin']; } # Laenge $f .= pruefen($_POST['laenge'], 'leer', 'Die Länge fehlt'); $f .= pruefen($_POST['laenge'], 'regexpr', 'Die Länge ist ungültig', '^[1-9][0-9]{1,2}$'); $_SESSION['zeiteneing_staffeln']['daten']['laenge'] = $_POST['laenge']; # Gesamtzeit $tmp = ''; $tmp .= pruefen($_POST['gesamtzeit'], 'leer', 'Die Gesamtzeit fehlt'); $tmp .= pruefen($_POST['gesamtzeit'], 'schwimmzeit', 'Die Gesamtzeit ist ungültig'); $_SESSION['zeiteneing_staffeln']['daten']['gesamtzeit'] = $_POST['gesamtzeit']; $geszeit = empty($tmp)?$_POST['gesamtzeit']:''; $f .= $tmp; # aufsummiert $tmp = pruefen($_POST['aufsummiert'], 'wertemenge', 'Sind die Zwischenzeiten aufsummiert oder Einzelzeiten?', array_keys($conf['aufsummiert'])); if(!empty($tmp)){ $f .= $tmp; } else{ $_SESSION['zeiteneing_staffeln']['daten']['aufsummiert'] = $_POST['aufsummiert']; } # Datum $f .= pruefen($_POST['datum'], 'leer', 'Das Datum fehlt'); $f .= pruefen($_POST['datum'], 'datum', 'Das Datum ist ungültig'); $_SESSION['zeiteneing_staffeln']['daten']['datum'] = $_POST['datum']; # Zwischenzeiten $zwzeiten = array(); foreach($_POST['_schwimmer'] as $nr => $s){ $tmp = pruefen($_POST['_schwimmer'][$nr]['zwischenzeit'], 'schwimmzeit', 'Die Zwischenzeit für Schwimmer Nr. '.$nr.' ist ungültig'); if(empty($tmp) and !empty($s['zwischenzeit'])){ $zwzeiten[$nr] = $_POST['_schwimmer'][$nr]['zwischenzeit']; } else{ $f .= $tmp; } if($_POST['_schwimmer'][$nr]['zwischenzeit'] > $_POST['gesamtzeit']){ $f .= 'Die Zwischenzeit von Schwimmer Nr. '.$nr.' ist größer als die Gesamtzeit
'; } $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$nr]['zwischenzeit'] = $_POST['_schwimmer'][$nr]['zwischenzeit']; $f .= pruefen($_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$nr]['mid'], 'leer', 'Der Schwimmer Nr. '.$nr.' muss noch gewählt werden.'); } # Zwischenzeiten/Gesamtzeit vergleichen (abhaenging von 'aufsummiert') if(count($zwzeiten) == $_SESSION['zeiteneing_staffeln']['daten']['anzschwimmer']){ if($_POST['aufsummiert'] == 'einzeln'){ $zwges = 0; foreach($zwzeiten as $z){ $zwges += $z; } if($zwges != $geszeit){ $f .= 'Die Summe der Zwischenzeiten muss die Gesamtsumme ergeben (sie ist um '.text_format(abs($zwges-$geszeit),'schwimmzeit'); $f .= ' zu '.($zwges>$geszeit?'groß':'klein').')
'; } } else{ if($zwzeiten[$_SESSION['zeiteneing_staffeln']['daten']['anzschwimmer']] != $geszeit){ $f .= 'Die Zwischenzeit des letzten Schwimmers muss der Gesamtzeit entsprechen
'; } $tmp = 0; foreach($zwzeiten as $nr => $zeit){ if($zeit < $tmp){ $f .= 'Die Zwischenzeit des Schwimmers '.$nr.' darf nicht kleiner sein als die des Schwimmers '.($nr-1).'
'; } $tmp = $zeit; } } } elseif($_POST['aufsummiert'] == 'einzeln' and count($zwzeiten) > 0 and !empty($geszeit)){ $zwges = 0; foreach($zwzeiten as $z){ $zwges += $z; } if($zwges > $geszeit){ $f .= 'Die Summe der Zwischenzeiten kann nicht größer sein als die Gesamtzeit
'; } } elseif($_POST['aufsummiert'] == 'aufsummiert' and count($zwzeiten) > 0){ $f .= 'Bei aufsummierten Zwischenzeiten müssen alle Zwischenzeiten angegeben werden.
'; } if(empty($f)){ $datum = text_format($_SESSION['zeiteneing_staffeln']['daten']['datum'],'dbdatum'); # Staffel # Geschlecht der Staffel bestimmen $_mw = ''; foreach($_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'] as $s){ if(empty($_mw)){ $_mw = $s['mw']; } if($_mw != $s['mw']){ $_mw = 'x'; break; } } # Staffel eintragen $query = "INSERT INTO ".DB_PREFIX."staffeln SET wettkampfid = ".$_SESSION['zeiteneing_staffeln']['wkid'].", disziplin = ".$_SESSION['zeiteneing_staffeln']['daten']['disziplin'].", anzahl = ".$_SESSION['zeiteneing_staffeln']['daten']['anzschwimmer'].", laenge = ".$_SESSION['zeiteneing_staffeln']['daten']['laenge'].", mw = '".$_mw."', gesamtzeit = ".$_SESSION['zeiteneing_staffeln']['daten']['gesamtzeit'].""; $_db->fuehreQueryAus($query); $staffelid = $_db->ergebnis['insertid']; $vorher = 0; $lagen2einzel = array(1=>3,2=>2,3=>4,4=>1); # einzelne Zeiten foreach($_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'] as $s){ if($_SESSION['zeiteneing_staffeln']['daten']['aufsummiert']=='aufsummiert' and !empty($s['zwischenzeit'])){ $zeit = $s['zwischenzeit']-$vorher; $vorher = $s['zwischenzeit']; } elseif(!empty($s['zwischenzeit'])){ $zeit = $s['zwischenzeit']; } else{ $zeit = 'NULL'; } if($_SESSION['zeiteneing_staffeln']['daten']['disziplin'] == 5){ $disziplin = $lagen2einzel[$s['nr']]; } else{ $disziplin = $_SESSION['zeiteneing_staffeln']['daten']['disziplin']; } $query = "INSERT INTO ".DB_PREFIX."zeiten SET mitgliedid = ".$s['mid'].", datum = '".$datum."', zeit = ".$zeit.", disziplin = ".$disziplin.", streckenlaenge = ".$_SESSION['zeiteneing_staffeln']['daten']['laenge'].", wettkampfid = ".$_SESSION['zeiteneing_staffeln']['wkid'].", bestenliste = ".($s['nr']==1?1:0).""; $_db->fuehreQueryAus($query); $zeitid = $_db->ergebnis['insertid']; $query = "INSERT INTO ".DB_PREFIX."staffeln_zeiten SET staffelid = ".$staffelid.", zeitid = ".$zeitid.", schwimmernr = ".$s['nr'].""; $_db->fuehreQueryAus($query); $_SESSION['zeiteneing_staffeln']['daten']['_schwimmer'][$s['nr']] = array('nr'=>$s['nr'],'mid'=>'','name'=>'','zwischenzeit'=>''); } $_SESSION['zeiteneing_staffeln']['daten']['gesamtzeit'] = ''; weiterleiten('/zeiten/eingeben.html?aktion=staffel','Die Staffel wurde gespeichert.'); } else{ $_tmpl->assign('fehler',$f); } } $_tmpl->assign('aufsummiert',$conf['aufsummiert']); $_tmpl->assign('daten',$_SESSION['zeiteneing_staffeln']['daten']); $_tmpl->assign('lagen',$conf['lagen']); $_inh .= $_tmpl->fetch('zeiten/52.staffeln-formular.inc.html'); break; case 'einzelne': if(!pruefeRechte('z_eingeben_einzelne')){ $_inh = T_KEINZUGRIFF; break; } $_tmpl->assign('ueberschrift','Zeiten eingeben (einzelne Zeiten)'); if(isset($_GET['wechseln']) and isset($_SESSION['zeiteneing'])){ switch($_GET['wechseln']){ case 'mitgliedwechseln': unset($_SESSION['zeiteneing']['mid']); unset($_SESSION['zeiteneing']['str_m']); break; case 'wettkampfwechseln': unset($_SESSION['zeiteneing']['wkid']); unset($_SESSION['zeiteneing']['str_wk']); break; default: break; } } if(!isset($_SESSION['zeiteneing']['wkid'])){ # Wettkampf wählen require_once('class/wettkaempfe.inc.php'); $wk = new wettkaempfe; $wk->tmpl = &$_tmpl; $wk->db = &$_db; $wk->conf = array('lagen'=>$_lagen,'wkarten'=>$_wkarten,'altersklassen'=>$_altersklassen); $wettkaempfe = $wk->holeWettkampfliste(true,'neu','vergangene nurwettkaempfe'); $wettkaempfe[2] = 'interpolierte Zeiten'; $wettkaempfe[3] = 'Trainingszeiten'; $wettkaempfe[7] = 'Rekordversuche (25m-Bahn)'; $wettkaempfe[8] = 'Trainingszeiten (50m-Bahn)'; if(isset($_POST['wettkampf']) and $_POST['wettkampf'] != 0 and in_array($_POST['wettkampf'],array_keys($wettkaempfe))){ $_SESSION['zeiteneing']['wkid'] = $_POST['wettkampf']; $_SESSION['zeiteneing']['str_wk'] = $wettkaempfe[$_POST['wettkampf']]; weiterleiten('/zeiten/eingeben.html?aktion=einzelne'); if(isset($_SESSION['zeiteneing']['daten'])){ list(,$_SESSION['zeiteneing']['daten']['datum']) = explode(' - ',$_SESSION['zeiteneing']['str_wk']); } } unset($wettkaempfe[2],$wettkaempfe[3]); $_tmpl->assign('wettkaempfe',$wettkaempfe); $_inh .= $_tmpl->fetch('zeiten/52.eingeben-einzelne-wettkampfwaehlen.inc.html'); } elseif(!isset($_SESSION['zeiteneing']['mid'])){ # Mitglied wählen require_once('func/mitgliedwaehlen.inc.php'); $_inh .= mitgliedwaehlen('/zeiten/eingeben.html', 'aktion=einzelne'); if(isset($_GET['id']) and preg_match('~^[0-9]+$~',$_GET['id'])){ $_SESSION['zeiteneing']['mid'] = $_GET['id']; $query = "SELECT CONCAT(vorname,' ',nachname) as name FROM ".DB_PREFIX."mitglieder WHERE id = ".$_GET['id'].""; $_db->holeDaten($query); $_SESSION['zeiteneing']['str_m'] = $_db->holeWert(); weiterleiten('/zeiten/eingeben.html?aktion=einzelne'); } } else{ # Zeit eingeben if(!isset($_SESSION['zeiteneing']['daten'])){ $_SESSION['zeiteneing']['daten'] = array(); $_SESSION['zeiteneing']['daten']['laenge'] = 100; if($_SESSION['zeiteneing']['wkid'] < 10){ $_SESSION['zeiteneing']['daten']['datum'] = date('d.m.Y'); } else{ list(,$_SESSION['zeiteneing']['daten']['datum']) = explode(' - ',$_SESSION['zeiteneing']['str_wk']); } } $laengen = array( 25 => '25m', 50 => '50m', 100 => '100m', 200 => '200m', 400 => '400m', 800 => '800m', 1500 => '1500m' ); if(!isset($_POST['speichern'])){ $_tmpl->assign('daten',$_SESSION['zeiteneing']['daten']); } else{ require_once('func/pruefen.inc.php'); $f = ''; $f .= pruefen($_POST['datum'],'leer','Das Datum fehlt'); $f .= pruefen($_POST['datum'],'datum','Das Datum ist ungültig'); if(isset($_POST['disziplin']) and $_POST['disziplin'] != 0){ $f .= pruefen($_POST['disziplin'],'wertemenge','Die Disziplin ist ungültig oder fehlt',array_keys($_lagen)); } else{ $f .= 'Die Disziplin fehlt
'; } if(isset($_POST['laenge']) and $_POST['laenge'] != 0){ $f .= pruefen($_POST['laenge'],'ungleich','Die Streckenlänge fehlt',0); } else{ $f .= pruefen($_POST['laenge'],'wertemenge','Die Streckenlänge ist ungültig oder fehlt',array_keys($laengen)); } $f .= pruefen($_POST['zeit'],'leer','Die Zeit fehlt'); $f .= pruefen($_POST['zeit'],'schwimmzeit','Die Zeit ist ungültig','wert'); if(!empty($f)){ $_tmpl->assign('fehler',$f); $_tmpl->assign('daten',$_POST); } else{ $bestenliste = $_SESSION['zeiteneing']['wkid']<5?0:1; $query = "INSERT INTO ".DB_PREFIX."zeiten (mitgliedid, datum, zeit, disziplin, streckenlaenge, wettkampfid, bestenliste) VALUES (".$_SESSION['zeiteneing']['mid'].", '".text_format($_POST['datum'],'dbdatum')."', ".$_POST['zeit'].", ".$_POST['disziplin'].", ".$_POST['laenge'].", ".$_SESSION['zeiteneing']['wkid'].", ".$bestenliste.")"; $_db->fuehreQueryAus($query); unset($_POST['zeit']); $_SESSION['zeiteneing']['daten'] = $_POST; weiterleiten('/zeiten/eingeben.html?aktion=einzelne','Die Zeit wurde gespeichert'); } } $_tmpl->assign('laengen',$laengen); $_tmpl->assign('lagen',$_lagen); $_inh .= $_tmpl->fetch('zeiten/52.eingeben-einzelne-formular.inc.html'); } break; case 'trainingsgruppe': if(!pruefeRechte('z_eingeben_trainingsgruppe')){ $_inh = T_KEINZUGRIFF; break; } $_tmpl->assign('ueberschrift','Zeiten eingeben (Trainingszeiten für eine Trainingsgruppe)'); require_once('func/holetrainingsgruppen.inc.php'); $trainingsgruppen = holeTrainingsgruppen(true); $strecken = array( '50_1' => '50 '.$_lagen[1], '100_1' => '100 '.$_lagen[1], '200_1' => '200 '.$_lagen[1], '400_1' => '400 '.$_lagen[1], '800_1' => '800 '.$_lagen[1], '1500_1' => '1500 '.$_lagen[1], '50_2' => '50 '.$_lagen[2], '100_2' => '100 '.$_lagen[2], '200_2' => '200 '.$_lagen[2], '50_3' => '50 '.$_lagen[3], '100_3' => '100 '.$_lagen[3], '200_3' => '200 '.$_lagen[3], '50_4' => '50 '.$_lagen[4], '100_4' => '100 '.$_lagen[4], '200_4' => '200 '.$_lagen[4], '100_5' => '100 '.$_lagen[5], '200_5' => '200 '.$_lagen[5], '400_5' => '400 '.$_lagen[5] ); $_tmpl->assign('trainingsgruppen',$trainingsgruppen); $_tmpl->assign('strecken',$strecken); if(!isset($_POST['trainingsgruppe']) or !in_array($_POST['trainingsgruppe'],array_keys($trainingsgruppen)) or !isset($_POST['strecken'])){ $_inh .= $_tmpl->fetch('zeiten/52.eingeben-trainingsgruppe-auswaehlen.inc.html'); } else{ foreach($_POST['strecken'] as $strecke){ if(!in_array($strecke,array_keys($strecken))){ weiterleiten('/zeiten/eingeben.html?aktion=trainingsgruppe','eine oder mehrere Strecken war(en) ungültig'); } } $query = "SELECT id, nachname, vorname, mw, YEAR(gebdatum) as jg FROM ".DB_PREFIX."mitglieder as m, ".DB_PREFIX."mitglieder_trainingsgruppen as mt WHERE mt.mitgliedid=m.id AND mt.trainingsgruppenid = ".$_POST['trainingsgruppe']." ORDER BY nachname, vorname"; $_db->holeDaten($query); $mitglieder = $_db->baueArray('*','id'); if(!isset($_POST['speichern'])){ foreach($mitglieder as $mid => $row){ $mitglieder[$mid]['_zeiten'] = array(); foreach($_POST['strecken'] as $strecke){ $mitglieder[$mid]['_zeiten'][$strecke] = ''; } } } else{ require_once('func/pruefen.inc.php'); $f = ''; foreach($_POST['zeiten'] as $mid => $mzeiten){ foreach($mzeiten as $strecke => $zeit){ $tmp = pruefen($zeit,'schwimmzeit','Die Zeit »'.text_format($zeit,'htmlmaskieren').'« ist ungültig'); if(!empty($tmp)){ $zeit .= ',0'; $tmp = pruefen($zeit,'schwimmzeit','Die Zeit »'.text_format(substr($zeit,0,-2),'htmlmaskieren').'« ist ungültig'); if(!empty($tmp)){ $f .= $tmp; } else{ $_POST['zeiten'][$mid][$strecke] = $zeit; } } else{ $_POST['zeiten'][$mid][$strecke] = $zeit; } } } $f .= pruefen($_POST['datum'],'leer','Das Datum der Zeiten fehlt'); $f .= pruefen($_POST['datum'],'datum','Das Datum der Zeiten ist ungültig'); foreach($mitglieder as $mid => $row){ $mitglieder[$mid]['_zeiten'] = array(); foreach($_POST['strecken'] as $strecke){ $mitglieder[$mid]['_zeiten'][$strecke] = text_format($_POST['zeiten'][$mid][$strecke],'schwimmzeit'); } } if(empty($f)){ $queryteile = array(); $datum = text_format($_POST['datum'],'dbdatum'); foreach($_POST['zeiten'] as $mid => $zeiten){ foreach($zeiten as $strecke => $zeit){ if(empty($zeit)){ continue; } pruefen($zeit,'schwimmzeit','-'); list($laenge,$disziplin) = explode('_',$strecke,2); $queryteile[] = "(".$mid.", '".$datum."', ".$zeit.", ".$disziplin.", ".$laenge.", 3, 0)"; } } $anz = count($queryteile); if($anz == 0){ weiterleiten('/zeiten/eingeben.html?aktion=trainingsgruppe','Es wurden keine Zeiten eingegeben'); } $query = "INSERT INTO ".DB_PREFIX."zeiten (mitgliedid, datum, zeit, disziplin, streckenlaenge, wettkampfid, bestenliste) VALUES "; $query .= implode(', ',$queryteile); $_db->fuehreQueryAus($query); weiterleiten('/zeiten/eingeben.html?aktion=trainingsgruppe','es wurde'.($anz==1?' 1 Zeit':'n '.$anz.' Zeiten').' gespeichert'); } else{ $_tmpl->assign('fehler',$f); } } $_tmpl->assign('mitglieder',$mitglieder); $_inh .= $_tmpl->fetch('zeiten/52.eingeben-trainingsgruppe-formular.inc.html'); } break; default: $_inh .= $_tmpl->fetch('zeiten/52.eingeben-index.inc.html'); break; } } # Ende Rechte-else, EOF ?>