Ergebnis 1 bis 10 von 10

Thema: Gutscheine automatisch als eingelöst markieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer
    Registriert seit
    21.03.2013
    Beiträge
    6
    Zitat Zitat von MrChicken Beitrag anzeigen
    Naja wenn ich die aus der ersten Tabelle nehme, können andere User die Gutscheine ja nicht mehr einlösen. Das ist ja auch nicht Sinn der Sache.
    Ich dachte das wär der Sinn der Sache.
    Also das eingelöste Gutscheine nicht nochmal eingelöst werden können. Benutze selbst Gutscheine und kann dir folgende Lösung Vorschlagen.

    Eine Tabelle beinhaltet alle Gutscheine die noch einlösbar sind, sollte es die möglichkeit geben mehrere gleichnamige Gutscheine auf einmal zu erstellen statt fünfzigtausendmal unterschiedliche zu erfinden, so fügt man diese einfach mehrfach hinzu.

    Wird ein Gutschein eingelöst, so wird er aus der Gutscheintabelle entfernt.
    Ich zeige dir hier mal ein Beispiel wie es bei mir aussieht. (Achtung, ich benutze keine ID für die Gutscheine selbst da diese meiner Meinung nach irrelevant ist.)

    Meine Tabellen sehen so aus:

    unbenutzteCodes:
    | uid | code | amount |


    benutzteCodes:
    | uid | code | amount | refid


    Für dich:

    uid = ID des Users der den Code erstellt hat
    refid = ID des Users der den Code benutzt hat
    code = code
    amount = Lose

    Gutscheine Erstellen:

    PHP-Code:
    #DB_MySQL ist meine Datenbank Klasse

    # $uid  = id des codeerstellers
    # $code = gewünschter code
    # $wert = wert des gutscheins

    $db = new DB_MySQL();
    $exists $db->row_exists("SELECT uid, code, amount FROM unbenutzteCodes WHERE uid='".$uid."' AND code = '".$code."' AND amount = '$wert'"#ist ein komplett identischer gutschein von demselben user schon vorhanden ? WICHTIG das hier der wert stimmt, so ist es mögliche mehrere gleiche gutscheine zu erstellen

    if($exists)
    {
        
    $db->query("INSERT INTO unbenutzeCodes (uid, code, amount) VALUES ('".$uid."', '".$code."', '".$wert."')");
    }
    else if(!
    $db->row_exists("SELECT uid, code, amount FROM unbenutzteCodes WHERE code = '".$code."'"))
    {
        
    #da der code noch nicht benutzt wurde
        
    $db->query("INSERT INTO unbenutzeCodes (uid, code, amount) VALUES ('".$uid."', '".$code."', '".$wert."')");
    }
    else
    {
        if(
    $db->row_exists("SELECT uid, code, amount FROM unbenutzteCodes WHERE uid='".$uid."' AND code = '".$code."'"))
        {
             
    #gutschein vorhanden, jedoch mit anderem wert
             
    echo "Gutschein bereits benutzt, es kann nur ein Wert pro Code vorhanden sein";
        }
        else if(
    $db->row_exists("SELECT uid, code, amount FROM unbenutzteCodes WHERE NOT uid='".$uid."' AND code = '".$code."'"))
        {
            
    #ein anderer Benutzer hat bereits einen derartigen gutschein erstellt
            
    echo "Gutschein wird bereits verwendet";
        }



    Gutscheine einlösen:


    PHP-Code:

    #
    # $id ist die userid des users der den gutschein grade benutzt


    if(isset($_POST['code']) && $_POST['code'] != '')
    {
        
    #überprüft ob der code vorhanden ist und ob der benutzer nicht ersteller des Codes ist!
        
    if($db->row_exists("SELECT uid, code FROM unbenutzteCodes WHERE code = '".$_POST['code']."' AND NOT uid = '".$id."' LIMIT 1"))
        {
            
    $row $db->fetchRow();

            
    #den gutscheincode aus der unbenutzen tabelle löschen
            
    $db->query("DELETE FROM unbenutzteCodes WHERE uid = '".$row['uid']."' AND code = '".$row['code']."' LIMIT 1");
            
            
    #den gutscheincode in die benutzten tabelle eintragen
            
    $db->query("INSERT INTO benutzteCodes (uid, refid, code, amount) VALUE ('".$row['uid']."', '".$id."', '".$row['code']."', '".$row['amount']."')");


            
    #irgendwas mit dem gutschein machen :)
            #z.B dem user der den Code eingelöst hat das guthaben gutschreiben via mysql: UPDATE
        
    }


    MfG Iwan

    PS: Hoffe ich hab nix vergessen

  2. #2
    Erfahrener Benutzer
    Registriert seit
    26.08.2007
    Beiträge
    231
    Zitat Zitat von Iwan933 Beitrag anzeigen
    [...]
    Achtung, ich benutze keine ID für die Gutscheine selbst da diese meiner Meinung nach irrelevant ist.
    [...]
    Soll heissen das deine User Gutscheine nicht wiederkehrend auflegen kann?

    Gesetzt den Fall, Refjaeger_bln legte monatlich eine DownlineRalley auf und möchte seine Refs am Anfang des Monats auf der Seite wissen, müsste er den Gutscheincode jedesmal neu mitteilen...
    Mit ID hat man doch eine deutlich höhere Skalierbarkeit des Gutscheinbereichs.

    @MrChicken:
    Wenn du soweit bist denk mal über
    Code:
    SQL: 
    ALTER TABLE vms_Gutscheine ADD
    (
      zeit_erstellt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
      zeit_start TIMESTAMP NULL DEFAULT NULL,
      zeit_ende TIMESTAMP NULL DEFAULT NULL,
    );
    
    nach.

  3. #3
    Neuer Benutzer
    Registriert seit
    21.03.2013
    Beiträge
    6
    @eaxo

    Ich kann dir leider nicht ganz Folgen, da userid und refid bei benutzten Gutscheinen hinterlegt sind kann im Falle eines Falles der Code 100%tig nachgetrackt werden. Ansonsten tauchen die Gutscheine nie wieder irgendwo auf, da die Refbeziehungen nicht aus den Gutscheinen abgeleitet werden, sondern serperat, beim Einlösen, festgelegt werden.


    MfG Iwan

Ähnliche Themen

  1. [SUCHE] Amazon gutscheine
    Von Xenon im Forum Sonstiges
    Antworten: 0
    Letzter Beitrag: 12.06.2010, 15:43
  2. Gutscheine mit Bonuslosen
    Von dwarfpitcher im Forum Support zu Addons & Erweiterungen
    Antworten: 4
    Letzter Beitrag: 21.12.2007, 12:45
  3. Verkaufe 5,- €uro Gutscheine
    Von Angel im Forum Sonstiges
    Antworten: 0
    Letzter Beitrag: 06.07.2007, 15:42
  4. ATARI Gutscheine zu verkaufen !
    Von Angel im Forum Sonstiges
    Antworten: 0
    Letzter Beitrag: 06.07.2007, 15:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •