Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VMS 1.2] Schnipsel "Letzte Auszahlungen"



eaxo
12.06.2008, 04:15
Hallo,

da ich auf meiner AF-Startseite sehen wollte wer zuletzt wie viel ausgezahlt hat habe ich mir nen Schnipsel gebastelt.
Standardmäßig werden die letzten 48h angezeigt, der Einfachheit wegen "2 Tage" genannt.
Es kann direkt auf der Seite ein anderer Zeitraum angegeben werden. Dieser wird nicht gespeichert, um Standardmäßig einen anderen Zeitraum anzeigen zu lassen kann im Schnipsel der Wert der Variable $angezeigte_tage (Zeile 11) angepasst werden.


<!-- Anzeige der letzten Auszahlungen im Adminforce VMS 1.x und Vms 1.2.x

Die 2 Anpassungen laut Kommentaren - Zeilen 11 und 17 im Quelltext -
vornehmen, Schnippsel an gewünschter Stelle
(z.B. in adminforce/content/startseite.php) einfuegen und hochladen.
Kommentare koennen geloescht werden.
-->
<?
if(!isset($_POST['angezeigte_tage']) || !ctype_digit($_POST['angezeigte_tage']))
{
$angezeigte_tage = 2; // Hier eintragen wie weit zurück die erste angezeigte Buchung zurückliegen darf
}
else
{
$angezeigte_tage = $_POST['angezeigte_tage'];
}
$auszahltext = "Auszahlung"; // Hier eintragen was bei einer Auszahlung in die Buchungsliste geschrieben wurde
$jetztzeit = time();
$zeitraum = $angezeigte_tage*86400;
$zeitgrenze = $jetztzeit - $zeitraum;
$buchungen_lesen = db_query("SELECT * FROM ".$db_prefix."_buchungen WHERE verwendungszweck = '".$auszahltext."' AND buchungszeit >= ".$zeitgrenze." ORDER BY buchungszeit DESC");
head("Auszahlungen der letzten ".$angezeigte_tage." Tage");
?>
<form action="" method="post">
<div align="center">Ändern: <input type="text" name="angezeigte_tage" value="<?=$angezeigte_tage;?>"> Tage <input type="submit" name="tage_setzen" value="Setzen"></div>
</form>
<table border="0" width="100%" cellpadding="0" cellspacing="1" bgcolor="#303030">
<tr bgcolor="#f2f2f2">
<td align="center"><b>Datum</b></td>
<td align="center"><b>Zeit</b></td>
<td align="center"><b>UID</b></td>
<td align="center"><b>Klammlose</b></td>
</tr>
<?
while ($buchung_schreiben = mysql_fetch_array($buchungen_lesen)) {
$buchcolor = '#000000';
if ($buchung_schreiben['buchungsmenge'] < 0) $buchcolor='#cc0000';
?>
<tr bgcolor="#fafafa">
<td align="center">&nbsp;<?=date("d.m.Y",$buchung_schreiben['buchungszeit']);?>&nbsp;</td>
<td align="center">&nbsp;<?=date("H:i",$buchung_schreiben['buchungszeit']);?>&nbsp;</td>
<td align="left">&nbsp;<a href="?content=/usersystem/userbearbeiten&uid=<?=$buchung_schreiben['uid'];?>" target="_self"><?=$buchung_schreiben['uid'];?></a></td>
<td align="right">&nbsp;<font color="<?=$buchcolor;?>"><?=number_format($buchung_schreiben['buchungsmenge'],2,",",".");?></font>&nbsp;</td>
</tr>
<?
}
?>
</table>
<?foot();?>
<!-- Ende Schnippsel letzte Auszahlungen -->
EDIT: Mangel bezüglich register_globals off (danke jpwfour) (http://www.designerscripte.net/showpost.php?p=45385&postcount=3) ist behoben
EDIT: Auszahlungstext einfacher anzupassen (danke pummuk) (http://www.designerscripte.net/showpost.php?p=45395&postcount=5)
Kommentare eingefügt

Ihr dürft


gern über die Namen der Variablen schmunzeln,
gern über grobe Schnitzer motzen und
sehr gern auf Umwege hinweisen.

Gruß
eaxo

halk
12.06.2008, 10:27
Hallo


Habe es mal bei mir eingesetzt, leider geht dies irgenwie nicht, k.a. woran es liegt.habe auch im mom keine zeit zubasteln.

jpwfour
12.06.2008, 22:38
also an sich ein ganz guter und sinnvoller schnipsel,
nur du solltest bedenken, dass register_globals auf jedem einigermaßen vernünftig konfigurierten Server auf OFF steht, schon allein der Sicherheit wegen, deswegen müsste der Anfangsteil statt:


if ($angezeigte_tage == "")
{
$angezeigte_tage = 2;
}
else
{
}besser so sein:


if(!isset($_POST['angezeigte_tage']) || !ctype_digit($_POST['angezeigte_tage']))
{
$angezeigte_tage = 2;
}
else
{
$angezeigte_tage = $_POST['angezeigte_tage'];
}

aber bis auf diesen teil funktioniert es :thumb:

eaxo
12.06.2008, 23:18
Danke,

hab ich oben bereits geändert.

Eaxo

pummuk
13.06.2008, 00:21
sag mal dankeschön für den schnipsel..

funktioniert unter vms 1.1 auch wunderbar...

das einzige was ich anpassen mußte war der verwendungszweck... weil bei mir der seitenname davor steht...

eaxo
13.06.2008, 10:03
das einzige was ich anpassen mußte war der verwendungszweck... weil bei mir der seitenname davor steht...

Habs oben angepasst und mit Kommentaren versehen

Eaxo

deniz
24.06.2008, 00:10
Folgendes Problem,

wenn ich bei "Ändern" eine andere Zahl eingebe, einen anderen Link drücke, denn wieder auf die Adminforce-Startseite gehe, steht da wieder "2" statt meine angegebene Zahl. Wieso?

Wäre für jede Hilfe dankbar!

jpwfour
24.06.2008, 11:52
die "post" variable, welche du dort eingeben kannst, wird nur für den einen seitenaufruf gespeichert, daher, wenn du die seite wechselst, wieder standardwert.

man könnte den eingegebenen wert in einer $:SESSION variable speichern, dann wäre dieser auch später noch verfügbar, aber da man ja nicht jedesmal die liste genau durchschauen will/muss, und die letzten Auszahlungen eh die wichtigsten sind, glaube ich, muss das nicht unbedingt sein?

deniz
24.06.2008, 11:55
die "post" variable, welche du dort eingeben kannst, wird nur für den einen seitenaufruf gespeichert, daher, wenn du die seite wechselst, wieder standardwert.

man könnte den eingegebenen wert in einer $:SESSION variable speichern, dann wäre dieser auch später noch verfügbar, aber da man ja nicht jedesmal die liste genau durchschauen will/muss, und die letzten Auszahlungen eh die wichtigsten sind, glaube ich, muss das nicht unbedingt sein?

Ich habe den standart Wert im Code einfach nach meinem Wunsch abgeändert. Trotzdem Danke :)

Lokutos
25.06.2008, 00:48
thx funzt super mein adminmenü platzt nur gleich gg hab da so viel drinnen

SebbyPHM
29.06.2008, 13:32
darf ich klugscheißen? *gg*

was positiv zur übersicht beiträgt wäre noch folgendes:


if(!isset($_POST['angezeigte_tage']) || !ctype_digit($_POST['angezeigte_tage']))
{
$angezeigte_tage = 2;
}
else
{
$angezeigte_tage = $_POST['angezeigte_tage'];
}

zu


$angezeigte_tage = ((!isset($_POST['angezeigte_tage']) || !ctype_digit($_POST['angezeigte_tage'])) ? 2 : (int)$_POST['angezeigte_tage']);

Xenon
29.06.2008, 13:39
Wozu ist dies gut , weil es funkioniert doch gleich oder ?? :suspicious:

jpwfour
29.06.2008, 14:18
also ich persönlich finde das erste übersichtlicher, da so wirklich jeder gleich versteht, wie das abläuft.

mit dem trinitäs operator werden sich nur wenige beschäftigt haben, daher erscheint es so wohl einigen auch nicht so klar erkennbar.

wobei ich mal irgendwo gelesen habe, dass der ? : operator schneller ist als ausführlich geschriebene if-else kontroll strukturen, aber bei php performance ergibt sich mit jeder version eh immer wieder was neues :yes:

SebbyPHM
30.06.2008, 01:54
Bei viel Code geht es allerdings entscheidend um die Übersicht.

Und damit ist es schön realisierbar. Natürlich jedermann geschmachsache ;).

eaxo
30.06.2008, 11:46
Danke für Klugscheiss :biggrin1:

Also gibts in PHP auch das Smsyndrom w mn vle bchstbn sprn knn.

Mal im Ernst, genau sowas hatte ich mir erhofft um meine doch rudimentären Kenntnisse unter Zuhilfenahme selbst erdachter und erstellter* praktischer Beispiele zu erweitern, verbessern und vertiefen.

Ich bastel gerade an etwas das ein wenig Mehrwert ins Frontend bringt und trotz eingeschränkter Funktionalität sogar Gäste zu Dauergästen (und schlussendlich möglicherweise zu Mitgliedern) machen kann.

Da würde mir auch der ein oder andere Hinweis gut tun. Posten werde ich den Code aber erst wenn erkennbar ist wohin die Reise geht.

eaxo


*Der Author ist der Meinung das Wort "zusammengefrickelter" hört sich doof an.

Der Author