PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Goldmember



sascha2703
24.05.2010, 00:17
Hallo,

Wollte mal fragen wie das richtig geschrieben wird in der Kontoübersicht.


<?php $up=mysql_fetch_array(mysql_query("SELECT t1.name AS upgrade, t2.gueltig_bis AS gueltig, t2.unbegrenzt AS unbegrenzt FROM ".$db_prefix."_goldbonus AS t1,".$db_prefix."_goldmember AS t2 WHERE t2.bonus=t1.id AND t2.uid='".$_SESSION["uid"]."' AND gueltig_bis<='".time()."' LIMIT 1"));
if(!empty($up['upgrade'])){ ?>
<tr>
<td align="left">Upgrade:</td><td align="left"><?php print $up['upgrade']; ?></td>
</tr>
<tr>
<td align="left">G&uuml;ltig bis:</td><td align="left"><?php if($up['unbegrenzt']==1) print'unbegrenzt g&uuml;ltig'; else print date("d.m.Y G:h",$up['gueltig']); ?></td>
</tr>
<?php
}?>

Weil mir zeigt er es leer an obwohl ich ein Upgrade gekauft habe.

Vielen dank schon mal in voraus für die Hilfe.

Hardy
24.05.2010, 08:50
$up=mysql_fetch_array(mysql_query("SELECT t1.name AS upgrade, t2.gueltig_bis AS gueltig, t2.unbegrenzt AS unbegrenzt FROM ".$db_prefix."_goldbonus AS t1,".$db_prefix."_goldmember AS t2 WHERE t2.bonus=t1.id AND t2.uid='".$_SESSION["uid"]."' AND t2.gueltig_bis<='".time()."' LIMIT 1"));

sascha2703
24.05.2010, 13:47
$up=mysql_fetch_array(mysql_query("SELECT t1.name AS upgrade, t2.gueltig_bis AS gueltig, t2.unbegrenzt AS unbegrenzt FROM ".$db_prefix."_goldbonus AS t1,".$db_prefix."_goldmember AS t2 WHERE t2.bonus=t1.id AND t2.uid='".$_SESSION["uid"]."' AND t2.gueltig_bis<='".time()."' LIMIT 1"));


Leider bleibt die Anzeige leer.

sascha2703
24.05.2010, 17:04
Also ich habe jetzt denn Code so geändert das mann wenigsten was sehen tut.


<?php $up=mysql_fetch_array(mysql_query("SELECT t1.name AS upgrade, t2.gueltig_bis AS gueltig, t2.unbegrenzt AS unbegrenzt FROM ".$db_prefix."_goldbonus AS t1,".$db_prefix."_goldmember AS t2 WHERE t2.bonus=t1.id AND t2.uid='".$_SESSION["uid"]."' AND t2.gueltig_bis<='".time()."' LIMIT 1"));?>



<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td align="left">Dein Aktuelles Premium:</td><td align="left"><?php print $up['upgrade']; ?></td>
</tr>
<tr>
<td align="left">Das Premium ist G&uuml;ltig bis:</td><td align="left"><?php if($up['unbegrenzt']==1) print'unbegrenzt g&uuml;ltig'; else print date("d.m.Y G:h",$up['gueltig']); ?></td>
</tr>
</table>
<?php?>Das sieht dann so aus:

Dein Aktuelles Premium:
Das Premium ist Gültig bis: 01.01.1970 1:01

Obwohl ich ein Premium gekauft habe.

Wenn ich aber im ACP die einstellung mache das es unbegrenzt ist geht es dann auch das sieht so dann aus.

Dein Aktuelles Premium: Für immer Premium
Das Premium ist Gültig bis: unbegrenzt gültig

Und wenn ich z.B. 30 Tage einstellen tuh kommt wieder das gleiche:


Dein Aktuelles Premium:
Das Premium ist Gültig bis: 01.01.1970 1:01

Müsste aber doch so ausehen oder?

Dein Aktuelles Premium: 30Tage Premium
Das Premium ist Gültig bis: 24.06.2010 17:00

So wird es aber nicht angezeigt, weiss da jemand ein rat.

Hardy
24.05.2010, 19:18
Kenne jetzt die genaue Tabellenstrucktur nicht aber da du ja t2.bonus=t1.id in der WHERE schleife hast wäre wohl ein LEFT JOIN besser


$up=mysql_fetch_array(mysql_query("SELECT t1.name AS upgrade, t2.gueltig_bis AS gueltig, t2.unbegrenzt AS unbegrenzt
FROM ".$db_prefix."_goldbonus t1
LEFT JOIN ".$db_prefix."_goldmember t2 ON t2.bonus=t1.id
WHERE t2.uid='".$_SESSION["uid"]."' AND t2.gueltig_bis<='".time()."' LIMIT 1"));

sascha2703
24.05.2010, 20:29
Kenne jetzt die genaue Tabellenstrucktur nicht aber da du ja t2.bonus=t1.id in der WHERE schleife hast wäre wohl ein LEFT JOIN besser


$up=mysql_fetch_array(mysql_query("SELECT t1.name AS upgrade, t2.gueltig_bis AS gueltig, t2.unbegrenzt AS unbegrenzt
FROM ".$db_prefix."_goldbonus t1
LEFT JOIN ".$db_prefix."_goldmember t2 ON t2.bonus=t1.id
WHERE t2.uid='".$_SESSION["uid"]."' AND t2.gueltig_bis<='".time()."' LIMIT 1"));

Geht auch leider nicht hier ist der SQL Text:


CREATE TABLE `vms_goldmember` (
`uid` INT( 1 ) NOT NULL ,
`bonus` INT( 1 ) NOT NULL ,
`gueltig_ab` INT( 1 ) NOT NULL ,
`gueltig_bis` INT( 1 ) NOT NULL
);

CREATE TABLE `vms_goldbonus` (
`id` INT( 1 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 255 ) NOT NULL ,
`beschreibung` TEXT NOT NULL ,
`kosten` DOUBLE( 12, 2 ) NOT NULL ,
`gueltigkeit` INT( 1 ) NOT NULL ,
`aktiv` ENUM( '0', '1' ) DEFAULT '0' NOT NULL ,
`verdienst_bonus` DOUBLE( 4, 2 ) NOT NULL ,
INDEX ( `id` )
);

ALTER TABLE `vms_goldbonus` ADD `verg_einzahlungen` ENUM( '0', '1' ) DEFAULT '0' NOT NULL ;
ALTER TABLE `vms_goldbonus` ADD `auszahlungsgrenze` DOUBLE( 10, 2 ) NOT NULL ;
ALTER TABLE `vms_goldmember` ADD `unbegrenzt` ENUM( '0', '1' ) DEFAULT '0' NOT NULL ;

jpwfour
24.05.2010, 22:25
$up=mysql_fetch_array(mysql_query("SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt
FROM ".$db_prefix."_goldmember t1
LEFT JOIN ".$db_prefix."_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid='".$_SESSION["uid"]."' AND t1.gueltig_bis>='".time()."' LIMIT 1"));

So mal versuchen. Ansonsten lass mal den 2. Teil im WHERE weg, dann müsste aber definitiv eine Ausgabe kommen.

sascha2703
24.05.2010, 23:12
$up=mysql_fetch_array(mysql_query("SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt
FROM ".$db_prefix."_goldmember t1
LEFT JOIN ".$db_prefix."_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid='".$_SESSION["uid"]."' AND t1.gueltig_bis>='".time()."' LIMIT 1")); So mal versuchen. Ansonsten lass mal den 2. Teil im WHERE weg, dann müsste aber definitiv eine Ausgabe kommen.

Danke jetzt geht es aber jetzt wird nicht mehr unbegrenzt angezeigt. Wir sind fast dran an.

Hardy
24.05.2010, 23:15
weil es ja auch keine zeile namens "unbegrenzt" gibt :suspicious:

sascha2703
25.05.2010, 12:50
weil es ja auch keine zeile namens "unbegrenzt" gibt :suspicious:


ALTER TABLE `vms_goldmember` ADD `unbegrenzt` ENUM( '0', '1' ) DEFAULT '0' NOT NULL ;

Siehe da alles funktioniert bis auf jetzt das mit unbegrenzt.

Weis noch jemand ein Rat.

jpwfour
25.05.2010, 13:20
Die ganze Abfrage kann so wohl nicht hinkommen.

Da man ja unterscheiden muss, ist der Status unbegrenzt, oder liegt er in einem gewissen Zeitrahmen.

Führ doch mal das in PHPMyAdmin aus:

SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt
FROM vms_goldmember t1
LEFT JOIN vms_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid=USERIDXYZ Vermutlich bekommst du dann für deinen Testuser mehrere Zeilen?
Aktuell wird davon genau eine gewählt, nämlich die (erste) bei dem der Bonus anhand gueltig_bis noch gültig ist. Müsste man jetzt wissen, was da drin steht, wenn der Bonus aber unbegrenzt ist, und dementsprechend mit OR das Verbinden.

sascha2703
25.05.2010, 13:32
$up=mysql_fetch_array(mysql_query("SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt
FROM ".$db_prefix."_goldmember t1
LEFT JOIN ".$db_prefix."_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid='".$_SESSION["uid"]."' AND t1.gueltig_bis>='".time()."' LIMIT 1")); So mal versuchen. Ansonsten lass mal den 2. Teil im WHERE weg, dann müsste aber definitiv eine Ausgabe kommen.

Es geht nun habe jetzt mal das WHERE wegelassen und es geht Super ich danke allen die geholfen haben.

sascha2703
25.05.2010, 13:34
Die ganze Abfrage kann so wohl nicht hinkommen.

Da man ja unterscheiden muss, ist der Status unbegrenzt, oder liegt er in einem gewissen Zeitrahmen.

Führ doch mal das in PHPMyAdmin aus:

SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt
FROM vms_goldmember t1
LEFT JOIN vms_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid=USERIDXYZ Vermutlich bekommst du dann für deinen Testuser mehrere Zeilen?
Aktuell wird davon genau eine gewählt, nämlich die (erste) bei dem der Bonus anhand gueltig_bis noch gültig ist. Müsste man jetzt wissen, was da drin steht, wenn der Bonus aber unbegrenzt ist, und dementsprechend mit OR das Verbinden.

Sorry habe dein ersten Post nicht richtig gelessen habe jetzt mal das WHERE wegelassen und es geht SUPER vielen dank noch mal für deine hilfe.

jpwfour
25.05.2010, 17:26
Dann hast du den Post aber nicht genau genug gelesen.


Es mag zwar jetzt in dem 1 Fall bei dem 1 Testuser funktionieren, generell wird aber durch das weglassen der 2. WHERE Bedingung ja einfach nur die allererste Zeile für den User genommen.

Egal ob das die mit dem aktuellen Bonus ist, oder ob der Bonus noch gültig ist, sofern zeitlich begrenzt.

Also müsstest du deinem User
a) einen unbegrenzten Bonus geben
b) zeitlich begrenzt, aber noch gültig
c) zeitlich begrenzt, aber schon abgelaufen
d) b+c evtl auch noch mit der Startzeit des Bonus (die es gibt so wie ich das sehe)

Dann kannst du sagen "es geht" :biggrin1:

sascha2703
25.05.2010, 19:04
Die ganze Abfrage kann so wohl nicht hinkommen.

Da man ja unterscheiden muss, ist der Status unbegrenzt, oder liegt er in einem gewissen Zeitrahmen.

Führ doch mal das in PHPMyAdmin aus:

SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt
FROM vms_goldmember t1
LEFT JOIN vms_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid=USERIDXYZ Vermutlich bekommst du dann für deinen Testuser mehrere Zeilen?
Aktuell wird davon genau eine gewählt, nämlich die (erste) bei dem der Bonus anhand gueltig_bis noch gültig ist. Müsste man jetzt wissen, was da drin steht, wenn der Bonus aber unbegrenzt ist, und dementsprechend mit OR das Verbinden.

Soll ich das als SQL-Text einfügen?

Habe das so auf gegliedert:

3 Tage Premium

7 Tage Premium

14 Tage Premium

30 Tage Premium

60 Tage Premium

180 Tage Premium

360 Tage Premium

Für immer Premium




Dann hast du den Post aber nicht genau genug gelesen.


Es mag zwar jetzt in dem 1 Fall bei dem 1 Testuser funktionieren, generell wird aber durch das weglassen der 2. WHERE Bedingung ja einfach nur die allererste Zeile für den User genommen.

Egal ob das die mit dem aktuellen Bonus ist, oder ob der Bonus noch gültig ist, sofern zeitlich begrenzt.

Also müsstest du deinem User
a) einen unbegrenzten Bonus geben
b) zeitlich begrenzt, aber noch gültig
c) zeitlich begrenzt, aber schon abgelaufen
d) b+c evtl auch noch mit der Startzeit des Bonus (die es gibt so wie ich das sehe)

Dann kannst du sagen "es geht" :biggrin1:

Also es geht so weit bis auf das unbegrenzt.

sascha2703
26.05.2010, 03:40
Ich habe das jetzt so gelöst und es geht auch es wird auch unbegrenzt angezeigt.


<?

$up=mysql_fetch_array(mysql_query("SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig
FROM ".$db_prefix."_goldmember t1
LEFT JOIN ".$db_prefix."_goldbonus t2 ON t2.id=t1.bonus
WHERE t1.uid='".$_SESSION["uid"]."' AND t1.gueltig_bis>='".time()."' LIMIT 1"));

$pu=mysql_fetch_array(mysql_query("SELECT t2.name AS upgrade, t1.unbegrenzt AS unbegrenzt FROM ".$db_prefix."_goldmember t1
LEFT JOIN ".$db_prefix."_goldbonus t2 ON t2.id=t1.bonus LIMIT 1"));

?>

<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr>
<td align="left">Dein Aktuelles Premium:</td><td align="left"><?php print $up['upgrade']; ?><?php if($pu['unbegrenzt']==1) print'F&uuml;r immer Premium';?></td>
</tr>
<tr>
<td align="left">Das Premium ist G&uuml;ltig bis:</td><td align="left"><?php if($pu['unbegrenzt']==1) print'unbegrenzt g&uuml;ltig'; else print date("d.m.Y G:h",$up['gueltig']); ?></td>
</tr>
</table>

Es wird bei allen usern so angezeigt.