[PHP]Redeem-Code-System

07/10/2013 18:14 Sogma#1
Hi,

Spieler unter euch von Battlefield Heros oder Need For Speed World kennen sicherlich die Redeem-Codes. Diese Codes kann man auf der Website eingeben, wenn man sich mit seinem Account einloggt und erhält dafür eine Belohnung.
Dieses System möchte ich ebenfalls haben, bin aber aufgrund von mangelnden PHP-Fähigkeiten nicht dazu in der Lage.

Also, es müsste aus der Datenbank
Code:
account.redeem
Der Redeem-Code für den jeweiligen Monat (code_jan, code_feb ... ) verglichen werden, aus der selben Datenbank die Belohnung ausgelesen werden (gift_jan, gift_feb ...) und aus der Datenbank
Code:
account.account
ausgelesen werden, ob der Code bereits genutz wurde.
Diese Abfrage, ob der Code bereits genutzt wurde, soll bei der Eingabe und Bestätigung des Codes auf der Homepage erfolgen.

Ich habe schon einen Anfang, das habe ich mir mit Tutorials zusamen gebaut.
Code:
//Überprüfung Redeem verwendet
<?php
mysql_connect("localhost","Benutzername","Passwort") or die ("Keine Verbindung moeglich.");
mysql_select_db("account") or die ("Die Datenbank existiert nicht.");
$ergebnis = mysql_query("SELECT redeem_used FROM account WHERE login LIKE .$_POST['account'].") or die ("Der User ist nicht vorhanden.");
while($y = mysql_fetch_object($ergebnis))
{
  echo $y->redeem_used;
}
?>
Wenn mir jemand helfen kann, wäre ich sehr dankbar.

LG Sogma
07/10/2013 18:16 Else#2
Was möchtest du denn jetzt genau? Das dir jemand dieses besagte System umsetzt? Dann kannst du damit rechnen, dass es einige Euronen kosten wird, nicht die Welt, aber etwas.
07/10/2013 18:19 Sogma#3
Ich möchte, dass mir jemand dabei unter die Arme greift, nicht vorkauen sondern Support geben
07/10/2013 18:30 xEncounter#4
Informier dich doch mal mit SQL Abfragen wie SELECT etc.

Mit Php ist das ganze doch nicht ganz so schwer.
07/11/2013 11:41 Sogma#5
Okay, soweit klappt jetzt Alles, nur bekomme ich bei der Übergabe der Belohnung ein Problem. Nämlich möchte ich aus der Tabelle
PHP Code:
".SQL_HP_DB.".redeem_gift 
Sachen auslesen. Hier mal der Code für euch:
PHP Code:
$sqlCmd="SELECT vnum, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2 FROM ".SQL_HP_DB.".redeem_gift"
Diese ausgelesenen Daten möchte ich jetzt, wenn der auf der Website eingegebene Code übereinstimmt, in eine andere Tabelle schreiben.
PHP Code:
$sqlItem="INSERT INTO player.item 
                (owner_id,window,pos,count,vnum,attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2)
                VALUES 
                ('57713','MALL','"
.$possiblePos[0]."','1','".$getItem->vnum."','".$getItem->attrtype0."', '".$getItem->attrvalue0."', '".$getItem->attrtype1."', '".$getItem->attrvalue1."', '".$getItem->attrtype2."', '".$getItem->attrvalue2."', '".$getItem->attrtype3."', '".$getItem->attrvalue3."', '".$getItem->attrtype4."', '".$getItem->attrvalue4."', '".$getItem->attrtype5."', '".$getItem->attrvalue5."', '".$getItem->attrtype6."', '".$getItem->attrvalue6."', '".$getItem->socket0."', '".$getItem->socket1."', '".$getItem->socket2."')";
                
$qryItem=mysql_query($sqlItem,$sqlServ) or die(mysql_error()); 
leider fehlt mir der Part dazwischen, also das die Queries. Ich habe das Ganze mal so versucht:
PHP Code:
$sqlCmd="SELECT vnum, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2 FROM ".SQL_HP_DB.".redeem_gift";
        
$sqlQry=mysql_query($sqlCmd);
        if(
mysql_num_rows($sqlQry) == 1) {
      
        
$getItem=mysql_fetch_object($sqlQry);
        
$sqlItem="INSERT INTO player.item 
                (owner_id,window,pos,count,vnum,attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2)
                VALUES 
                ('57713','MALL','"
.$possiblePos[0]."','1','".$getItem->vnum."','".$getItem->attrtype0."', '".$getItem->attrvalue0."', '".$getItem->attrtype1."', '".$getItem->attrvalue1."', '".$getItem->attrtype2."', '".$getItem->attrvalue2."', '".$getItem->attrtype3."', '".$getItem->attrvalue3."', '".$getItem->attrtype4."', '".$getItem->attrvalue4."', '".$getItem->attrtype5."', '".$getItem->attrvalue5."', '".$getItem->attrtype6."', '".$getItem->attrvalue6."', '".$getItem->socket0."', '".$getItem->socket1."', '".$getItem->socket2."')";
                
$qryItem=mysql_query($sqlItem,$sqlServ) or die(mysql_error());
        } 
Das gibt aber leider einen hässlichen Fehler ...
Code:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given
Kann mir bitte einer von euch helfen?

LG Sogma
07/11/2013 12:12 kissein#6
Quote:
$sqlCmd="SELECT vnum, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2 FROM ".SQL_HP_DB.".redeem_gift";
[Only registered and activated users can see links. Click Here To Register...]
Quote:
Return Values

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

Das Sql Statement mal manuell gegentesten, z.b. heidisql / phpmyadmin / etc
07/11/2013 12:32 Sogma#7
Danke erstmal für die Hilfe, jeddoch verstehe ich nicht ganz, was du mir da empfiehlst
07/11/2013 13:04 kissein#8
Quote:
Originally Posted by Sogma View Post
Danke erstmal für die Hilfe, jeddoch verstehe ich nicht ganz, was du mir da empfiehlst
Logisches Denken und zu lernen Fehlermeldungen zu verstehen.

1. mysq_query erzeugt eine resource oder gibt einen boolschen wert zurück(=false)
2. mysql_num_rows benötigt eine resource, hat aber ein boolschen wert(=false)

Die schlussfolgerung ist dass das sql statement so nicht funktioniert, d.h. Debuggen und manuell überprüfen was aus der DB zurückgegeben wird oder eine Fehlerabfrage in Quellcode einbauen.
07/17/2013 14:36 NEXON | Technologies#9
Hilfe???
Ja, ich kann dir Helfen ädde mich mal in skype ;)

N_E_X_O_N