Erweiterungen am Wettkampkalender:

- wettkampfkalenderlose Events

- neue Funktion zur Ausführung einer DatenbankAbfrage
	modified:   markdownExperiment/phpLib/cwsvJudo/miscAssis.php
- URL der Wettkämpfe um Wetkampfname erweitert
	modified:   markdownExperiment/phpLib/cwsvJudo/wkKalender.php
- events haben jetzt ein eigenes Datum und nehmen es nicht mehr aus
dem zugeordneten Wettkampf (für die events ohne zugehörigen Eintrag im
Wettkampfkalender)
	modified:   markdownExperiment/wkParticipo/addEvent.php
	modified:   markdownExperiment/wkParticipo/admin/addEvent.php
- In der Adminansicht eines Events können jetzt auch Starter eintfernt
werden; @todo: Was noch fehlt ist die Behandlung der Fahrten!
	modified:   markdownExperiment/wkParticipo/admin/showEvent.php
- dbQuery wurde in cwsvJudoe/miscAssis eingepflegt.
	modified:   markdownExperiment/wkParticipo/lib/wkParticipo-userAttribute.php
This commit is contained in:
marko
2019-01-09 07:31:52 +01:00
parent 1823d03ef9
commit 7c9f4b8baa
6 changed files with 93 additions and 51 deletions

View File

@@ -23,7 +23,7 @@ global $cwsvJudoConfig;
// Datenbankverbindung bereit stellen
try{
$db_connection = new PDO(
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],//.';charset=utf8',
$cwsvJudoConfig["db"]["user"],
$cwsvJudoConfig["db"]["password"]
);
@@ -161,4 +161,46 @@ function toAscii($str, $replace=array(), $delimiter='-') {
return $clean;
}
function dbQuery($aDbConnection, $aQueryString, $aBindArray = array(), $someOptions = array( "dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8" ) ){
//echo("Doing ".$aQueryString);
var_dump($aBindArray);
if( empty($someOptions['dbCharset']) ) $someOptions['dbCharset'] = "ISO-8859-1";
if( empty($someOptions['outCharset']) ) $someOptions['outCharset'] = "UTF-8";
/// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss
/// doch auch die Eingabe konvertiert werden. Aber das jetzt
/// umzustellen wird schwer! Die User m Wettkampfplaner sind ja z.B.
/// als UTF8 in latin1(?) gespeichert.
try{
$pdoStatement = $aDbConnection->prepare( $aQueryString );
foreach( $aBindArray as $bindName => $bind ){
$pdoStatement->bindValue(
$bindName,
$bind['value'],
(isset($bind['data_type'])?$bind['data_type']:PDO::PARAM_STR)
);
}
$pdoStatement->execute();
$ret = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $db_error){
print "Error!: " . $db_error->getMessage() . "<br/>";
return null;
}
//var_dump($ret);
// Zeichensatzkonvertierung
if( is_array($ret) ){
foreach($ret as &$entry){
array_walk(
$entry,
function (&$value, $key, $someOptions) {
$value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value);
},
$someOptions
);
}
}
return $ret;
}
?>

View File

@@ -200,7 +200,7 @@ $htmlWkTableString = "";
str_replace("mannschaft", "mann&shy;schaft", $wk['Veranstaltung']);
$htmlWkTableString .=
"<a href=\"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."\"><tr>".
"<a href=\"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."\"><tr>".
"<script type=\"application/ld+json\">".$wkJsonSd."</script>".
"<td data-title=\"Datum\" class=\"noWrap\">".
"<time class=\"kalenderDatum\" datetime=".$wk['Datum'].">".

View File

@@ -3,7 +3,7 @@
require_once('../local/wkParticipoConf.php.inc');
$message = array();
if(!empty($_POST)){
if( empty($_POST['f']['wkId']) || empty($_POST['f']['meldefrist']) ){
if( empty($_POST['f']['wkId']) || empty($_POST['f']['meldefrist']) || empty($_POST['f']['datum']) ){
$message['error'] = 'Es wurden nicht alle Felder ausgefüllt.';
}
else{
@@ -12,12 +12,13 @@
$message['error'] = 'Datenbankverbindung fehlgeschlagen: ' . $mysqli->connect_error;
}
$query = sprintf(
"INSERT INTO wkParticipo_Events (wkId, meldefrist)
SELECT * FROM (SELECT '%s', '%s') as new_event
"INSERT INTO wkParticipo_Events (wkId, datum, meldefrist)
SELECT * FROM (SELECT '%s', '%s', '%s') as new_event
WHERE NOT EXISTS (
SELECT wkId FROM wkParticipo_Events WHERE wkId = '%s'
) LIMIT 1;",
$mysqli->real_escape_string($_POST['f']['wkId']),
$mysqli->real_escape_string($_POST['f']['datum']),
$mysqli->real_escape_string($_POST['f']['meldefrist']),
$mysqli->real_escape_string($_POST['f']['wkId'])
);
@@ -55,6 +56,7 @@
<fieldset>
<legend>Benutzerdaten</legend>
<div><label for="wkId">wkId</label> <input type="text" name="f[wkId]" id="wkId"<?php echo isset($_POST['f']['wkId']) ? ' value="' . htmlspecialchars($_POST['f']['wkId']) . '"' : '' ?> /></div>
<div><label for="datum">datum</label> <input type="text" name="f[datum]" id="datum" <?php echo isset($_POST['f']['datum']) ? ' value="' . htmlspecialchars($_POST['f']['datum']) . '"' : '' ?> /></div>
<div><label for="meldefrist">meldefrist</label> <input type="text" name="f[meldefrist]" id="meldefrist" <?php echo isset($_POST['f']['meldefrist']) ? ' value="' . htmlspecialchars($_POST['f']['meldefrist']) . '"' : '' ?> /></div>
</fieldset>
<fieldset>

View File

@@ -10,6 +10,7 @@
$message['wkData'] = "";
$eventWkId = isset($_POST['f']['wkId']) ? $_POST['f']['wkId'] : "";
$eventMeldefrist = isset($_POST['f']['date']) ? $_POST['f']['date'] : "";
$eventMeldefrist = isset($_POST['f']['meldefrist']) ? $_POST['f']['meldefrist'] : "";
// echo $_POST['f']['wkId']; echo $eventWkId; echo $eventMeldefrist; die();
@@ -38,7 +39,7 @@
if(!empty($_POST)){
// print_r($_POST);
if( empty($_POST['f']['wkId']) || empty($_POST['f']['meldefrist']) ){
if( empty($_POST['f']['wkId']) || empty($_POST['f']['date']) || empty($_POST['f']['meldefrist']) ){
// echo $_POST['f']['wkId']." aber ".$_POST['f']['meldefrist'];
$message['notice'] .= "Alle Felder ausfüllen und abschicken!<br />";
// print_r($message);
@@ -67,6 +68,7 @@
"</ul></li>".
"</ul>";
// $message['notice'] .= "eventWkDatum: ".$eventWkResult['Datum']."<br />";
$date=$eventWkResult['Datum'];
$meldefrist = date(
"Y-m-d",
strtotime(
@@ -93,12 +95,13 @@
}
else{
$query = sprintf(
"INSERT INTO wkParticipo_Events (wkId, meldefrist)
SELECT * FROM (SELECT '%s', '%s') as new_event
"INSERT INTO wkParticipo_Events (wkId, date, meldefrist)
SELECT * FROM (SELECT '%s', '%s', '%s') as new_event
WHERE NOT EXISTS (
SELECT wkId FROM wkParticipo_Events WHERE wkId = '%s'
) LIMIT 1;",
$mysqli->real_escape_string($_POST['f']['wkId']),
$mysqli->real_escape_string($_POST['f']['date']),
$mysqli->real_escape_string($_POST['f']['meldefrist']),
$mysqli->real_escape_string($_POST['f']['wkId'])
);
@@ -148,6 +151,10 @@
<fieldset>
<legend>Eventdaten</legend>
<div><label for="wkId">wkId</label> <input type="text" name="f[wkId]" id="wkId"<?php echo isset($_POST['f']['wkId']) ? ' value="' . htmlspecialchars($_POST['f']['wkId']) . '"' : "";?> /></div>
<div>
<label for="date">date</label>
<input type="text" name="f[date]" id="date" <?php echo $date != "" ? "value=\"".htmlspecialchars($date)."\" " : "";?> />
</div>
<div>
<label for="meldefrist">meldefrist</label>
<input type="text" name="f[meldefrist]" id="meldefrist" <?php echo $meldefrist != "" ? "value=\"".htmlspecialchars($meldefrist)."\" " : "";?> />

View File

@@ -1,4 +1,11 @@
<?php
$basePath = "/users/cwsvjudo/www";
require_once($basePath."/config/cwsvJudo.config.php");
require_once($basePath."/ressourcen/phpLib/cwsvJudo/miscAssis.php");
require_once('../local/wkParticipoConf.php.inc');
require_once('../auth.php');
require_once('../local/db.php.inc');
@@ -16,7 +23,6 @@
}
else{
if( (string)(int)$_POST['f']['eventId'] == $_POST['f']['eventId'] ){
$mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
if ($mysqlConn->connect_error) {
$sqlMessage['error'] .= 'Datenbankverbindung fehlgeschlagen: ' . $mysqlConn->connect_error;
@@ -33,7 +39,30 @@
}
}
}
else $message['error'] = "Fehler: eventId ist kein Int (".$_POST['f']['eventId'].")";
//var_dump($_POST);
if( $_POST['action'] == "deleteStarter" ){
try{
$dbConnection = new PDO(
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],
$cwsvJudoConfig["db"]["user"],
$cwsvJudoConfig["db"]["password"]
);
if($_POST['action']=="deleteStarter"){
echo("DELETE FROM `wkParticipo_Starter` WHERE id=:starterId;");
$deleteStarterQuery = $dbConnection->prepare(
"DELETE FROM `wkParticipo_Starter` WHERE id=:starterId;"
);
$deleteStarterQuery->bindParam(':starterId', $_POST['starterId'], PDO::PARAM_INT);
if($deleteStarterQuery->execute());
else echo("FEHLER\n");
}
}
catch(PDOException $db_error){
die( "Error!: " . $db_error->getMessage() );
}
}
else echo("NoActionDeleteStarter\n");
}
}
?>
@@ -132,6 +161,9 @@
<li>type: <?php echo($startTyp[$starter['type']]);?></li>
<li>fahrtId: <?php echo $starter['fahrtId']; ?></li>
<li>
<form action="./showEvent.php" method="post"><input type="hidden" name="starterId" id="starterId" value="<?php echo($starter['id']);?>"><input type="hidden" name="action" id="action" value="deleteStarter"><input type="hidden" name="f[eventId]" value="<?php echo($starter['eventId']);?>" /><button type="submit">Austragen</button></form>
</li>
<li>
<?php
if(empty($starter['fahrtId'])){
//$fahrten = array();

View File

@@ -9,47 +9,6 @@ $basePath = "/users/cwsvjudo/www";
require_once($basePath."/ressourcen/phpLib/cwsvJudo/miscAssis.php");
function dbQuery($aDbConnection, $aQueryString, $aBindArray = array(), $someOptions = array( "dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8" ) ){
//echo("Doing ".$aQueryString);
var_dump($aBindArray);
if( empty($someOptions['dbCharset']) ) $someOptions['dbCharset'] = "ISO-8859-1";
if( empty($someOptions['outCharset']) ) $someOptions['outCharset'] = "UTF-8";
/// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss
/// doch auch die Eingabe konvertiert werden. Aber das jetzt
/// umzustellen wird schwer! Die User m Wettkampfplaner sind ja z.B.
/// als UTF8 in latin1(?) gespeichert.
try{
$pdoStatement = $aDbConnection->prepare( $aQueryString );
foreach( $aBindArray as $bindName => $bind ){
$pdoStatement->bindValue(
$bindName,
$bind['value'],
(isset($bind['data_type'])?$bind['data_type']:PDO::PARAM_STR)
);
}
$pdoStatement->execute();
$ret = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $db_error){
print "Error!: " . $db_error->getMessage() . "<br/>";
return null;
}
//var_dump($ret);
// Zeichensatzkonvertierung
if( is_array($ret) ){
foreach($ret as &$entry){
array_walk(
$entry,
function (&$value, $key, $someOptions) {
$value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value);
},
$someOptions
);
}
}
return $ret;
}
function array2htmlTableString($anArray){
$ret = "";
if( !is_array($anArray) )