implemented the frontend stuff for the new auction type

main
hecht 7 years ago
parent 2eca292716
commit 3029796ae7

@ -43,20 +43,31 @@ $dir = $_GET['dir'];
$kategorie = $_GET['kategorie'];
function stelleBietenMaskeDar($userid,$auktionsid,$gebot){
if($gebot != NULL && $gebot != ''){
$errorMsg = biete($userid,$auktionsid,$gebot);
if($errorMsg == ''){
echo 'Es wurde erfolgreich f&uuml;r das Item geboten!<br><br>';
function stelleBietenMaskeDar($userid, $auktionsid, $gebot, $anzahl){
$auktionsdaten = getEntryInformation($auktionsid);
if ( $auktionsdaten['type'] == 1 ) {
stelleBietenMaskeDarNormal($userid, $auktionsdaten, $gebot);
} else if ($auktionsdaten['type'] == 2) {
stelleBietenMaskeDarInverse($userid, $auktionsdaten, $gebot, $anzahl);
} else {
echo 'Es ist beim Bieten ein Fehler aufgetreten: '.$errorMsg.'!<br><br>';
displayErrorMessage(NULL, 'Auktionstype nicht unterst&uuml;zt!!',displayHistoryBackLink());
}
}
$auktionsdaten = getEntryInformation($auktionsid);
function stelleBietenMaskeDarNormal($userid,$auktionsdaten,$gebot) {
if ($auktionsdaten === NULL) {
displayErrorMessage(NULL, 'Auktion ist nicht mehr verf&uuml;gbar!!',displayHistoryBackLink());
return;
}
if($gebot != NULL && $gebot != ''){
$errorMsg = biete($userid,$auktionsdaten['auktionsid'],$gebot);
if($errorMsg == ''){
echo 'Es wurde erfolgreich f&uuml;r das Item geboten!<br><br>';
} else{
echo 'Es ist beim Bieten ein Fehler aufgetreten: '.$errorMsg.'!<br><br>';
}
}
?>
<form action="" method=GET>
<input type="hidden" name="as" value="auktion"></input>
@ -110,9 +121,103 @@ function stelleBietenMaskeDar($userid,$auktionsid,$gebot){
</table>
</form>
<?php
}
function stelleBietenMaskeDarInverse($userid,$auktionsdaten,$gebot,$anzahl){
if ($auktionsdaten === NULL) {
displayErrorMessage(NULL, 'Auktion ist nicht mehr verf&uuml;gbar!!',displayHistoryBackLink());
return;
}
if($gebot != NULL && $gebot != ''){
$errorMsg = biete($userid,$auktionsdaten['auktionsid'],$gebot, $anzahl);
if($errorMsg == ''){
echo 'Es wurde erfolgreich f&uuml;r das Item geboten!<br><br>';
} else{
echo 'Es ist beim Bieten ein Fehler aufgetreten: '.$errorMsg.'!<br><br>';
}
}
$listing = array();
$qry = db_query('select range_from, range_to from inverse_auktion_gebote WHERE bieter = '.$userid.' and auktionsid = '.$auktionsdaten['auktionsid'].' order by range_from asc');
while ($row = mysqli_fetch_assoc($qry)) {
if ($row['range_from'] == $row['range_to']) {
$listing[] = displayMoney($row['range_from']);
} else {
$listing[] = displayMoney($row['range_from']).'-'.displayMoney($row['range_to']);
}
}
?>
<script type="text/javascript">
<!--
function raise() {
var start_gebot = <?php echo $auktionsdaten['startgebot']?>;
if ( document.forms[0].elements["gebot"].value < start_gebot ) {
document.forms[0].elements["gebot"].value = start_gebot;
}
if ( document.forms[0].elements["anzahl"].value < start_gebot ) {
document.forms[0].elements["anzahl"].value = start_gebot;
}
if ( document.forms[0].elements["gebot"].value > document.forms[0].elements["anzahl"].value ) {
document.forms[0].elements["anzahl"].value = document.forms[0].elements["gebot"].value;
}
var fBase = start_gebot * 0.05;
var fFrom = parseInt(document.forms[0].elements["gebot"].value);
var fTo = parseInt(document.forms[0].elements["anzahl"].value);
var blubb = fBase * (fTo - fFrom + 1);
document.forms[0].elements["output"].value = blubb;
}
//-->
</script>
<form action="" method=GET>
<input type="hidden" name="as" value="auktion"></input>
<input type="hidden" name="action" value="1"></input>
<input type='hidden' name="auktionsid" value='<?php echo $auktionsdaten['auktionsid']; ?>'></input>
<table border="0" width="400" height="187" align="center">
<tr>
<th height="25" width="332" colspan="2" align="center">Item Auktion</th>
</tr>
<tr>
<td height="25" width="138" align="left"><b>Name</b></td>
<td height="25" width="178" align="left"><?php echo displayItemLink($auktionsdaten['tablename'], $auktionsdaten['itemid'], $auktionsdaten['itemname']); ?></td>
</tr>
<tr>
<td height="25" width="138" align="left"><b>Eigenes Gebot</b></td>
<td height="25" width="178" align="left"><?php echo join(',', $listing); ?></td>
</tr>
<tr>
<td height="25" width="138" align="left"><b>Startgebot</b></td>
<td height="25" width="178" align="left"><?php echo displayMoney($auktionsdaten['startgebot']); ?></td>
</tr>
<tr>
<td height="25" width="138" align="left"><b>Gebot</b></td>
<td height="25" width="200" align="left">
<input id="input1" class="input" type="number" name="gebot" style="width: 70px;" oninput="raise()" value="<?php echo $auktionsdaten['startgebot']; ?>" />
-
<input id="input2" class="input" type="number" name="anzahl" style="width: 70px;" oninput="raise()" value="<?php echo $auktionsdaten['startgebot']; ?>"/>
</td>
</tr>
<tr>
<td height="25" width="138" align="left"><b>Gebühr</b></td>
<td height="25" width="200" align="left">
<input id="output" class="input" type="number" name="fee" disabled="disabled" style="width: 150px;" value="<?php echo round($auktionsdaten['startgebot'] * 0.05, 0); ?>"/>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td height="25" width="178" align="left"><input id="input" type="submit" value="bieten"></input></td>
</tr>
<tr>
<td height="25" colspan="2">INFO: Das kleinste einmalig abgegebene Gebot bekommt den Zuschlag. F&uuml;r jedes abgegebene Gebot muss eine Geb&uuml;hr bezahlt werden. Wird der Zuschlag erhalten wird auch noch der Kaufpreis f&auml;llig!</td>
</tr>
</table>
</form>
<?php
}
function stelleAuktionErstellenMaskeDar($userid,$id_db_mix, $anzahl, $startgebot){
// Maske in <html>
if($id_db_mix != '' && !is_null($id_db_mix)){
@ -239,14 +344,24 @@ function stelleAuktionsuebersichtDar($userid,$kategorie,$itemnamepart,$entries,$
else{
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=itemname&dir=ASC','Item'),$orderstring);
}
?>
</th>
<th height="31" valign="top" align="center">
<?php
if($order == 'type' && $dir == 'ASC'){
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=type&dir=DESC','Typ'),$orderstring);
} else{
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=type&dir=ASC','Typ'),$orderstring);
}
?>
</th>
<th height="31" valign="top" align="center">
<?php
if($order == 'aktuellesgebot' && $dir == 'ASC'){
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=aktuellesgebot&dir=DESC','Akuelles Gebot'),$orderstring);
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=aktuellesgebot&dir=DESC','Gebot'),$orderstring);
} else{
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=aktuellesgebot&dir=ASC','Akuelles Gebot'),$orderstring);
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=aktuellesgebot&dir=ASC','Gebot'),$orderstring);
}
?>
@ -261,9 +376,9 @@ function stelleAuktionsuebersichtDar($userid,$kategorie,$itemnamepart,$entries,$
</th>
<th height="31" valign="top" align="center">
<?php if($order == 'bietername' && $dir == 'ASC'){
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=bietername&dir=DESC','H&ouml;chstbietender'),$orderstring);
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=bietername&dir=DESC','Bieter'),$orderstring);
} else{
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=bietername&dir=ASC','H&ouml;chstbietender'),$orderstring);
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=bietername&dir=ASC','Bieter'),$orderstring);
}
?>
</th>
@ -293,6 +408,7 @@ function stelleAuktionsuebersichtDar($userid,$kategorie,$itemnamepart,$entries,$
while($aktionentries[$index] != NULL){
echo "\t\t\t\t".'<tr>'."\n";
echo "\t\t\t\t\t".'<td height="31" valign="top" align="center">'.displayItemLink($aktionentries[$index]['tablename'], $aktionentries[$index]['itemid'], $aktionentries[$index]['itemname']).'</td>'."\n";
echo "\t\t\t\t\t".'<td height="31" valign="top" align="center">'.($aktionentries[$index]['tablename']==1?'Normal':'Inverse').'</td>'."\n";
if($aktionentries[$index]['aktuellesgebot'] != NULL){
echo "\t\t\t\t\t".'<td height="31" valign="top" align="center">'.displayMoney($aktionentries[$index]['aktuellesgebot']).'</td>'."\n";
} else{
@ -396,7 +512,7 @@ function zieheAuktionZurueck($userid,$auktionsid,$pay){
if(isset($user_ida['id'])){
// Abfrage der uebergebenen Aktionen
if($action == 1){ // Bieten für eine Auktion
stelleBietenMaskeDar($user_ida['id'],$auktionsid, $gebot);
stelleBietenMaskeDar($user_ida['id'],$auktionsid, $gebot, $anzahl);
} else if($action == 2){ // Erstellen einer Auktion
stelleAuktionErstellenMaskeDar($user_ida['id'],$items,$anzahl,$start);
} elseif($action == 3){ // Zurueckziehen einer Auktion

@ -22,8 +22,9 @@ include_once(ROOT_PATH.'/include/config.inc.php');
include_once(ROOT_PATH.'/include/messagefunctions.inc.php');
include_once(ROOT_PATH.'/include/semaphore.inc.php');
include_once(ROOT_PATH.'/include/fehlerausgabe.inc.php');
include_once(ROOT_PATH.'/include/defines.inc.php');
defineIfNotDefined('AUCTION_FEE_FACTOR', 0.05);
// Funktion um das aktuelle Mindestgebot einer Auktion zu ermitteln!
// Returns Mindestgebot
@ -63,7 +64,7 @@ function getUserAvailableMoney($userid) {
// Funktion zum bieten für eine Auktion
// Returns '' wenn alles ok, ansonsten eine Fehlerausgabe
// @Return String
function biete($userid, $auktionsid, $gebot){
function biete($userid, $auktionsid, $gebot, $anzahl = 0){
// Keine Kommagebote!! Immer Abrunden!!
if(!is_numeric($gebot) || floor($gebot) <= 0){
return 'Gebot ung&uuml;ltig!';
@ -71,23 +72,35 @@ function biete($userid, $auktionsid, $gebot){
$gebot = floor($gebot);
$auktionsdaten = getEntryInformation($auktionsid);
$itemname = $auktionsdaten['itemname'];
$aktuellesgebot = $auktionsdaten['aktuellesgebot'];
$startgebot = $auktionsdaten['startgebot'];
$deadline = $auktionsdaten['deadline'];
$zeitdifferenz = $auktionsdaten['zeitdifferenz'];
$bieter = $auktionsdaten['bieter'];
$anbieter = $auktionsdaten['anbieter'];
if($userid == $anbieter){
return 'Sie k&ouml;nnen nicht auf eigene Items bieten';
}
$zeitdifferenz = $auktionsdaten['zeitdifferenz'];
// Nun erstmal pruefen ob noch geboten werden kann
if($zeitdifferenz < 0){
return 'Deadline abgelaufen!';
}
$type = $auktionsdaten['type'];
if ($type == 1) {
return biete_normal($userid, $auktionsdaten, $gebot);
} else if ($type == 2) {
return biete_inverse($userid, $auktionsdaten, $gebot, $anzahl);
}
return 'Nicht unterst&uuml;tzer Aktionstyp!';
}
function biete_normal($userid, $auktionsdaten, $gebot) {
$auktionsid = $auktionsdaten['auktionsid'];
$itemname = $auktionsdaten['itemname'];
$aktuellesgebot = $auktionsdaten['aktuellesgebot'];
$startgebot = $auktionsdaten['startgebot'];
$deadline = $auktionsdaten['deadline'];
$zeitdifferenz = $auktionsdaten['zeitdifferenz'];
$bieter = $auktionsdaten['bieter'];
$anbieter = $auktionsdaten['anbieter'];
// Was ist das aktuelle startgebot?? Rufe die Funktion auf!
$klGebot = aktuellesMindestgebot($auktionsid);
@ -128,6 +141,51 @@ function biete($userid, $auktionsid, $gebot){
// db_query($new_query);
// echo '<br><br>'.$new_query.'<br><br>';
return ''; // Leerer String, also kein Fehler!
}
function biete_inverse($userid, $auktionsdaten, $gebot, $gebot2) {
$auktionsid = $auktionsdaten['auktionsid'];
$itemname = $auktionsdaten['itemname'];
$aktuellesgebot = $auktionsdaten['aktuellesgebot'];
$startgebot = $auktionsdaten['startgebot'];
$deadline = $auktionsdaten['deadline'];
$zeitdifferenz = $auktionsdaten['zeitdifferenz'];
$bieter = $auktionsdaten['bieter'];
$anbieter = $auktionsdaten['anbieter'];
if(!is_numeric($gebot2) || floor($gebot2) < $gebot){
return 'Gebot ung&uuml;ltig!';
}
if($gebot < $startgebot){
return 'Es muss mindestens '.$startgebot.' geboten werden';
}
$fee = ($gebot2 - $gebot + 1) * $startgebot * AUCTION_FEE_FACTOR;
//Nun muss noch geprueft werden ob der User genug Geld hat und auch mit allen Geboten gesamt nicht in den Minusbereich kommt
$user_a = mysqli_fetch_assoc(db_query('SELECT nickname, geld FROM user WHERE id = '.$userid));
$usermoney = $user_a['geld'];
$auktionensumme = mysqli_fetch_assoc(db_query('SELECT SUM(aktuellesgebot) as summe FROM auktion WHERE bieter = '.$userid.' AND auktionsid != '.$auktionsid.' GROUP BY bieter'));
$auktionensumme = $auktionensumme['summe'];
$required_money = $auktionensumme + $gebot + $fee;
if($usermoney < $required_money){
return 'Nicht genug Geld!';
}
db_query('UPDATE user SET geld = geld - '.$fee.' WHERE geld >= '.$required_money);
if (db_affected_rows() == 0) {
return 'Fehler beim Abbuchen der Geb&uuml;hr!';
}
$sql = 'INSERT INTO inverse_auktion_gebote(auktionsid, bieter, range_from, range_to) values('.$auktionsid.','.$userid.','.$gebot.','.$gebot2.')';
db_query($sql);
return ''; // Leerer String, also kein Fehler!
}
// Funktion erstellt die Optionen die Auswahl
@ -297,7 +355,7 @@ function getAuktionEntries($kategorie,$itemnamepart,$entriesPerSite,$pageNumber,
$stringDelimiter = ' AND itemname LIKE \'%'.$itemnamepart.'%\' ';
}
$index = 0;
$test = 'SELECT a.auktionsid, u.nickname AS anbietername, u2.nickname AS bietername, a.deadline, a.aktuellesgebot, a.startgebot, a.anzahl, a.itemname, a.bieter, a.anbieter, a.itemid, a.tablename FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE 1 '.$kategorieDelimitier.$stringDelimiter.$priceDelimiter.' AND TIMESTAMPDIFF(Minute,now(),deadline) >= 0 ORDER BY '.$order.' '.$dir.' '.$interval;
$test = 'SELECT u.nickname AS anbietername, u2.nickname AS bietername, a.* FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE 1 '.$kategorieDelimitier.$stringDelimiter.$priceDelimiter.' AND TIMESTAMPDIFF(Minute,now(),deadline) >= 0 ORDER BY '.$order.' '.$dir.' '.$interval;
$qry = db_query($test);
//echo '<br>'.$test.'<br>';
while($result = mysqli_fetch_assoc($qry)){
@ -308,7 +366,7 @@ function getAuktionEntries($kategorie,$itemnamepart,$entriesPerSite,$pageNumber,
function getEntryInformation($auktionsid){
if(!is_numeric($auktionsid)){return;}
$qry = db_query('SELECT u.nickname AS anbietername, u2.nickname AS bietername, a.auktionsid,a.anbieter,a.bieter,a.itemid,a.itemname,a.tablename,a.anzahl,a.startgebot,a.aktuellesgebot,a.deadline,a.startdate,a.cheatingverdacht, TIMESTAMPDIFF(Minute,now(),deadline) AS zeitdifferenz FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE auktionsid = '.$auktionsid);
$qry = db_query('SELECT u.nickname AS anbietername, u2.nickname AS bietername, a.*, TIMESTAMPDIFF(Minute,now(),deadline) AS zeitdifferenz FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE auktionsid = '.$auktionsid);
if(mysqli_num_rows($qry) == 0){ return NULL; }
return mysqli_fetch_assoc($qry);
}

Loading…
Cancel
Save