PDA

Vollständige Version anzeigen : Frage zu Mysql und einer Table auslesen


zweithirn
25.01.2007, 13:06
So sieht es zur Zeit aus :

<?
$gewinne = mysql_fetch_assoc(db_query("SELECT SUM(buchungsmenge) AS gewinn_tag FROM ".$db_prefix."_gamebuchungen"));
$gewinn_t = $gewinne['gewinn_tag'];
?>
</table>
</div>
<table>
<tr bgcolor="#f0f0f0">
<td width="55%">Gewinn Verlust Tag:</td>
<td align="right"><font color="<?=$gewinn_t > 0 ? 'green' : 'red';?>"><?=number_format($gewinn_t,2,",",".");?> &nbsp;&nbsp;</font></td>
</tr>

Sind die Gamebuchungen ich würde gerne darunter anzeigen lassen wieviel ich als Admin heute gewonnen oder verloren habe also alles was heute gebucht wurde zusammen zählen.

Bis jetzt summiert er alle Gamebuchungen die noch da sind bekomme das auch nicht anders hin da dachte ich mir Frag einfach mal die Profils hier ;-)

Wenn einer Rat weiß bitte Posten bedanke mich im voraus.

Gruße aus dem kalten
Harz

NightX
25.01.2007, 15:01
Sowas habe ich mal gebastelt, ich muss mal suchen, wo ich das abgelegt habe und dann poste ich es hier. Kann abba nen Momentchen dauern! ;)

zweithirn
25.01.2007, 15:12
Das wäre KLasse, dafür warte ich gern einen moment :-)

NightX
25.01.2007, 15:29
1. Diese Tabelle einfügen:

CREATE TABLE `admin_game_stand` (
`id` int(11) NOT NULL default '0',
`name` varchar(50) NOT NULL default '0',
`anzahl` int(11) NOT NULL default '0',
`stand` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

2. Im Adminforce eine Seite mit diesem Inhalt einfügen:

<?head("Game Statistik");?>

<table width="100%" border="0" cellpadding="2" cellspacing="2">
<tr>
<td align="center">
<?
$gamestats = mysql_fetch_array(db_query("SELECT COUNT(id) AS game_id , SUM(anzahl) AS anz_spiele , SUM(stand) AS kto_stand FROM admin_game_stand"));

if (!isset($_GET['aktualisiern'])) $_GET['aktualisiern'] = '';
if ($_POST['aktualisiern'] == 'Aktualisieren') {
echo '<meta http-equiv="refresh" content="0; URL='.$domain.'/adminforce/?content=/spiele/statistik/gamestatistik">';
}
?>
<table width="100%" border="0" cellpadding="2" cellspacing="2">

<?php
$aktiv=mysql_query("SELECT * FROM admin_game_stand WHERE id > '0'");
if($aktiv==0){
echo " ";
}
else{
$anzeige= 100;
$res = mysql_query("SELECT * FROM admin_game_stand WHERE id > '0'
$notshowspon order by id LIMIT $anzeige");
while($show=mysql_fetch_array($res)){
?>

<tr>
<td align="left">
<font color="#000000"><b>Spiel:</b>&nbsp;&nbsp;
<font color="#000000"><b><?php echo $show['name'];?></b>
</td>
<td align="left">
<font color="#000000"><b>Anzahl:</b>&nbsp;&nbsp;
<font color="#000000"><?php echo $show['anzahl'];?>
</td>
<td align="left">
<font color="#000000"><b>Gewinn:</b>&nbsp;&nbsp;
<font color="#000000"><?php echo $show['stand'];?>
</td>
<td align="left"><?php $pro_game = ($show['stand'] / $show['anzahl']);?>
<font color="#000000"><b>Ø:</b>&nbsp;&nbsp;
<font color="#000000"><?php echo number_format($pro_game,2,",",".");?>
</td>

</tr>

<?php
}
}
?>

<tr>
<td colspan="3">&nbsp;</td>
</tr>
<tr>
<td align="left">
<font color="#000000"><b>Games online:</b>&nbsp;&nbsp;
<font color="#000000"><b><?=$gamestats['game_id'];?></b>
</td>
<td align="left">
<font color="#000000"><b>Spiele seit Reset:</b>&nbsp;&nbsp;
<font color="#000000"><?=$gamestats['anz_spiele'];?>
</td>
<td align="left">
<font color="#000000"><b>Lose (+/-):</b>&nbsp;&nbsp;
<font color="#000000"><?=$gamestats['kto_stand'];?>
</td>
<td align="left"><?php $pro_game1 = ($gamestats['kto_stand'] / $gamestats['anz_spiele']);?>
<font color="#000000"><b>Ø:</b>&nbsp;&nbsp;
<font color="#000000"><?php echo number_format($pro_game1,2,",",".");?>
</td>
</tr>

</table>

<table>
<tr>
<td align="center">
<form action="" method="post">
<input type="submit" name="aktualisiern" value="Aktualisiern">
</form>
</td>
</tr>
</table>

</td>
</tr>
</table>

<? foot(); ?>

3. In die Games einfügen
- dort wo der Einsatz vom Userkonto abgezogen wird
db_query("UPDATE admin_game_stand SET anzahl = anzahl + 1, stand = stand + $einsatz WHERE id = XXX");
- dort, wo dem User ein Gewinn gutgeschrieben wird
db_query("UPDATE admin_game_stand SET stand = stand - $gewinn WHERE id = XXX");

In die Tabelle alle Games eintragen (jedes bekommt dabei eine eigene ID) und die entsprechende ID gegen das "XXX" im obigen Quelltext austauschen. Dann hat man eine schöne Übersicht über Gewinne und Verluste bei den Games.

zweithirn
25.01.2007, 15:42
und bei

WHERE id = XXX

die XXX stehen lassen oder eine nummer oder den namen eintragen ?

NightX
25.01.2007, 15:47
Na, lies noch mal meinen Post durch, auch den letzten Absatz ganz unten. :D

zweithirn
25.01.2007, 15:52
Danke Dir habs echt nicht gesehen :-( *schäm* *indieeckestell*

KLasse Teil aufjedenfall aber wieder eine Menge aufwand jetzt erstmal und wenn neue Games kommen da bin ich auch schon gut beschäftigt um da alles nachzutragen was fehlt.

Aber vielleicht kannst du mir hier bei ja noch helfen mit meienr Idee

("SELECT SUM(buchungsmenge) AS gewinn_tag FROM ".$db_prefix."_gamebuchungen"));

das muß erweitert werden das er nur diesen Tag aus der DB ließt bis jetzt ließt er alle Buchungen aus und fügt die ein als Summe mit Plus oder Minus.

NightX
25.01.2007, 15:59
Ich habe bei meinen Sachen so viel verändert, um da jetzt nicht von falschen Voraussetzungen auszugehen brauche ich bitte mal deine tabelle vms_gamebuchungen und ganz wichtig: Was wird dort eingetragen? Ein Beispiel von einem Game reicht aus.

zweithirn
25.01.2007, 16:12
CREATE TABLE `vms_gamebuchungen` (
`uid` int(7) NOT NULL default '0',
`buchungszeit` int(10) NOT NULL default '0',
`buchungs_id` varchar(14) NOT NULL default '',
`buchungsmenge` double(10,2) NOT NULL default '0.00',
`verwendungszweck` varchar(40) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `vms_gamebuchungen`
--

INSERT INTO `vms_gamebuchungen` (`uid`, `buchungszeit`, `buchungs_id`, `buchungsmenge`, `verwendungszweck`) VALUES (8029, 1168107641, 'KFDr66NI44VkNo', -500.00, ' Bubble(s) gekauft'),
(8029, 1168107641, '6iFHoXUbFMkumL', 200.00, 'Bubble geplatzt'),
(

function gamebuchungsliste ($buchungs_id,$trans_menge,$verwendung,$fuer) {
global $db_prefix;
db_query("INSERT INTO ".$db_prefix."_gamebuchungen (uid,buchungszeit,buchungs_id,buchungsmenge,verwen dungszweck) VALUES (".$fuer.",".time().",'".$buchungs_id."','".$trans_menge."','".$verwendung."')");
}


Das ?? oder Fehlt noch was ?

eselfutter
25.01.2007, 16:19
Das ist aber keine detailierte Aussage. Zumindest nicht bei Games mit einer Cache-Funktion.

Diese Anzeige zeigt Dir doch nur an, wieviel Deine User eingesetzt haben und was sie rausbekommen haben.

Beispiel:
Ein User spielt mit einem Einsatz von 50k ein Spiel an einem Slot und bekommt 25k wieder raus. Danach hört er auf zu spielen.

Dann ist der Einsatz - Gewinn doch nicht Dein "Gewinn".

Analog dazu: Der User gewinnt bei diesem einem Spiel 75k, dann sind die 25k auch nicht Dein "Verlust", denn ein anderer User hat die vorher eingezahlt, indem er gespielt hat......

zweithirn
25.01.2007, 16:23
Ja schon das ist richtig aber so kann ich evt. Fehler oder BUgs oder ganz einfach nur Einstellungsfehler bei den Games sehen wenn da einer nur Verlust für mich macht dann stimmt da was nicht und ich kann reagieren. Mal ganz außen vor das die Jackpots da ja auch nicht drin verwertet sind ;-)

eselfutter
25.01.2007, 16:35
Ja, mein Einwand war auch eher als Hinweis anzusehen, nicht als Kritik. ;-)

Ich habe ja selber ein detail. Bilanzaddon. Das ist ein Haufen Arbeit, alles so hinzubekommen, daß wirklich jder Klick, jedes Spiel einzig und allein die Seitenverdienste auswertet.

NightX
25.01.2007, 16:36
In die Tabelle wird letzten Endes nur zu- bzw. abgerechnet, so wirst du eine echte Gewinn/Verlustübersicht nicht hinbekommen. Also entweden so wie oben beschrieben, oder eine Tabelle, in die per INSERT INTO jede Buchung geschrieben wird und dann kann man eine detaillierte Auswertung vornehmen. (Wird aber die Datenbank sehr aufblähen!)

Zu meinem obigen Beispiel, wenn du das hier:
db_query("UPDATE admin_game_stand SET stand = stand - $gewinn WHERE id = XXX");
auch dort einfügst, wo ein eventueller JP gewonnen wird, bist du was das betrifft auch auf der sicheren Seite.

[EDIT] Die Gamebuchungen werden ja auch nach einer gewissen Zeit wieder gelöscht, die Auswertung aus der Tabelle ist also immer nur für die Zeit bis zur letzten Löschung zurück. Besser schon, die Buchungen direkt aus den Games heraus zu machen.

NightX
25.01.2007, 18:55
Sorry wg. Doppelpost, aber das soll hier auch nicht durcheinander kommen.

So zweithirn, da hast du ja was schönes angerichtet! :D Mir geht die Sache jetzt die ganze Zeit im Kopp herum...
Vielleicht ist das hier ein Lösungsansatz:

$gewinne = mysql_fetch_array(db_query("SELECT SUM(buchungsmenge) AS gewinn_tag FROM ".$db_prefix."_gamebuchungen WHERE buchungszeit > ".(time()-86400)"));

Das würde dir dann eine Gesamtsumme geben, an der du den Gewinn/Verlust der letzten 24 Stunden ersehen kannst.

Um eine wirkliche Kontrolle zu bekommen wäre dann aber etwas mehr Aufwand erforderlich. Das müsste man dann pro User ermitteln und am besten noch zwei Abfragen machen um seine Gewinne und Verluste getrennt zu ermittel. Etwa "WHERE buchungssumme > 0" und "WHERE buchungssumme < 0" und die Ergebnisse dann miteinander vergleichen. Vielleicht hilft dir obiger Lösungsansatz schon, wenn nicht, können wir uns ja zu deinen genaueren Voprstellungen noch mal unterhalten. Leider gibt es da aber ein Zeitproblem :( aber das ist ja eigentlich immer so ;)

eselfutter
25.01.2007, 19:04
Original von NightX
Um eine wirkliche Kontrolle zu bekommen wäre dann aber etwas mehr Aufwand erforderlich. Das müsste man dann pro User ermitteln und am besten noch zwei Abfragen machen um seine Gewinne und Verluste getrennt zu ermittel. Etwa "WHERE buchungssumme > 0" und "WHERE buchungssumme < 0" und die Ergebnisse dann miteinander vergleichen. Vielleicht hilft dir obiger Lösungsansatz schon, wenn nicht, können wir uns ja zu deinen genaueren Voprstellungen noch mal unterhalten. Leider gibt es da aber ein Zeitproblem :( aber das ist ja eigentlich immer so ;)

Sei mir nicht böse, aber es geht viel einfacher. Ich kann hier aber nicht die Lösung erklären, da es Bestandteil meines Addons ist....
Nur mal so als Ansatz: Der wirkliche Gewinn ist ja der Betreiberanteil des einzelnen Spieleinsatzes. Alles andere sind ja nur Cacheinhalte, die man nicht in eine Gewinn/Verlustrechnung berechnen kann.

NightX
25.01.2007, 19:38
Original von eselfutter
Sei mir nicht böse, aber es geht viel einfacher. Ich kann hier aber nicht die Lösung erklären, da es Bestandteil meines Addons ist....
Nur mal so als Ansatz: Der wirkliche Gewinn ist ja der Betreiberanteil des einzelnen Spieleinsatzes. Alles andere sind ja nur Cacheinhalte, die man nicht in eine Gewinn/Verlustrechnung berechnen kann.

Warum sollte ich böse sein? :P
Wenn es nur darum geht, den Gesamtgewinn (oder Verlust) zu errechnen, ist es sicher einfach. Wenn ich es aber richtig verstanden habe, geht es zweithirn auch darum zu überprüfen, ob einzelne User z.B. nur Gewinne machen. Und dafür ist schon ein wenig mehr erforderlich. Ich biete hier auch keine fertige Lösung an, sondern nur einen Ansatz mit dem man dann weitermachen kann.

Das kennst du doch sicher auch: Man arbeitet an etwas und im Hinterkopf wird man so ein Problem nicht los. Mir geht es jedenfalls so und deshalb musste ich hier noch fix die Idee posten.

Und nun wieder an meine Arbeit! :]

zweithirn
25.01.2007, 20:55
Mir gings ja nur mal um eine grobe Übersicht werde sicher auch nochmal auf ein Bilanzaddon drauf zurück kommen :-) und den einen Slot will ich ja auch noch von dir Eselfutter haben ;-)

Danke aber erstmal an Night klappt so wie es ausschaut nur hast du da ein Fehler drin ein " zuviel ;-)

So gehts bei mir :-)
$gewinne = mysql_fetch_array(db_query("SELECT SUM(buchungsmenge) AS gewinn_tag FROM ".$db_prefix."_gamebuchungen WHERE buchungszeit > ".(time()-86400)));

NightX
25.01.2007, 21:48
Ja, sorry, nach dem ". darf ja kein " mehr kommen. Zu meiner "Verteidigung" muss ich sagen, dass ich es nur fix gepostet habe ohne es zu testen. Aber schön, wenn es geholfen hat!!! :D

zweithirn
25.01.2007, 22:08
Kein Problem bin ja Glücklich das es läuft :-) da kommt es auf " mehr oder weniger nicht an :P

eselfutter
25.01.2007, 23:34
Kannst Dich gerne jederzeit bei mir melden. ;)

Wenn hier alles geklärt ist, dann kann doch hier zu, oder?

zweithirn
26.01.2007, 00:53
Jepp bitte schließen :-)

*edit: Dann schliesse ich hier. Gruß eselfutter*