Problem in Funktion

12/30/2018 13:13 {Skrillex}#1
Hallo,
ich versuche mich derzeitig daran, eine art Web Item Mall für ein Spiel zu Coden und möchte mittels einer Funktion das Item in eine Datenbank eintragen lassen.
Theoretisch absolut kein Problem. Ich muss jedoch überprüfen wieviele "Giftbox" Slots frei sind.
Ich erhalte keinen Error aber auch kein Item in der Datenbank.
Vielleicht habe ich einen Fehler eingebaut. Ich würde mich sehr darüber freuen, wenn mir jemand helfen könne.
Zu beachten wäre, dass die Zahl 240 unter $number_free_slots die Maximalen Slots sind.


Vielen dank.

Ich wünsche allen einen Guten Rutsch in das neue Jahr 2019
12/30/2018 16:41 florian0#2
Quote:
Originally Posted by .:Unix:. View Post
Code:
$query_slots = $con->prepare("SELECT ItemID FROM PS_GameData.dbo.UserStoredPointItems WHERE UserUID = '$user_ID' AND Slot = '$userslot'");
Was is das denn? PDO benutzen und dann doch den Query per Hand bauen? ;D
Zumal du da auch das ID großgeschrieben hast, das gibts in deinem Code so nicht und PHP Variablennamen sind case sensitive.
12/30/2018 16:52 {Skrillex}#3
Quote:
Originally Posted by florian0 View Post
Was is das denn? PDO benutzen und dann doch den Query per Hand bauen? ;D
Zumal du da auch das ID großgeschrieben hast, das gibts in deinem Code so nicht und PHP Variablennamen sind case sensitive.
Okay. Das mit der Query ist tatsächlich fail. Keine Ahnung was mich da geritten hat :D
Ich bedanke mich erstmal. Ich überprüfe das ganze und melde mich erneut.

Danke
12/30/2018 17:03 sk8land​#4
Eine
Code:
while($userslot < 240)
Schleife zu machen und die Variable dann nicht hochzuzählen ist auch keine sooo gute Idee.
01/11/2019 14:55 {Skrillex}#5
Hallo,
ich habe meinen Code nun überarbeitet.
Es funktioniert auch soweit. Jedoch hängt sich mein Browser auf, wenn diese Funktion ausgeführt wird. Sieht vielleicht jemand einen fehler?

Liebe Grüßé
PHP Code:

    
function send_to_giftbox($item_id$count$user_id$con) {
        
//get UserUID from database
        
$UserUID $con->prepare("SELECT UserUID from PS_UserData.dbo.Users_Master WHERE UserID = ?");
        
$UserUID->bindParam(1$user_id);
        
$UserUID->execute();
        
$Userid $UserUID->fetch(PDO::FETCH_NUM);
        
//check for available slots
        
$free_slots $con->prepare("SELECT COUNT(Slot) AS slots FROM PS_GameData.dbo.UserStoredPointItems WHERE UserUID = ?");
        
$free_slots->bindParam(1$Userid[0]);
        
$free_slots ->execute();
        
$array_free_slots $free_slots->fetch(PDO::FETCH_NUM);
        
$number_free_slots 240 $array_free_slots[0];    
        
//search for free slot
        //Nu aber wirklich einkaufen: Durch 3D Array hampeln, freien GiftBox Slot suchen und Item eintueten
        
$userslot 0;
        
$size $count;
            for (
$iterate 0$iterate $size$iterate++)
            {
                while(
$userslot 240)
                {
                    
$query_slots $con->prepare("SELECT ItemID FROM PS_GameData.dbo.UserStoredPointItems WHERE UserUID = ? AND Slot = ?");
                    
$query_slots->bindParam(1$Userid[0]);
                    
$query_slots->bindParam(2$userslot);
                    
$query_slots->execute();
                    
$array_slots $query_slots->fetch(PDO::FETCH_NUM);
                    
$is_slot $array_slots[0];
                
//wenn freier slot vorhanden nutzen und Item in Giftbpx packen
                
if (empty($is_slot))
                    {    
                    
$statement $con->prepare("INSERT INTO PS_GameData.dbo.UserStoredPointItems VALUES (?,?,?,?,getdate())");
                    
$statement->bindParam(1$Userid[0]);
                    
$statement->bindParam(2$userslot);
                    
$statement->bindParam(3$item_id);
                    
$statement->bindParam(4$count);
                    
$statement->execute();
                    }
                
                }
                
$userslot++;
            }
    } 
01/11/2019 15:17 florian0#6
Code:
while($userslot < 240)
{

}
$userslot++;
01/11/2019 15:27 {Skrillex}#7
Quote:
Originally Posted by florian0 View Post
Code:
while($userslot < 240)
{

}
$userslot++;
Hallo,
danke für deine Antwort. Nun lädt es nichtmehr lange sondern sehr schnell.
Jedoch erhalte ich 240x das Item statt 1x.

Grüße
01/11/2019 18:12 florian0#8
Ich habe nur deinen Code vereinfacht. Das sollte deinen Fehler besser darstellen. Deine Whileschleife endet nie weil du die Variable immerhalb der Schleife nie veränderst.