Neexecutare insert

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

Avatar utilizator
icsulescu
Average Member
Mesaje: 141
Membru din: Mie Iun 23, 2010 3:29 pm
Localitate: Brăila
Contact:

Neexecutare insert

Mesajde icsulescu » Lun Sep 12, 2011 9:05 pm

Am o funcţie pentru înregistrarea pe un site de-al meu:

Cod: Selectaţi tot

    function register_user($firstname, $lastname, $nationality, $username, $password, $email, $team, $stadium, $league) {
        global $is_connected;
        $ok = 1;
        $query = "SELECT id FROM ".TBL_LEAGUES." WHERE teams<8 AND countryid='$league' ORDER BY ABS(level) DESC, RAND( ) LIMIT 1";
        $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
        $regleague = mysql_fetch_array($query);
        if (mysql_num_rows($query) > 0) {
            $password = md5 ($password);
            $time = time();
            $query = "INSERT INTO ".TBL_USERS." (username, password, email, registered) VALUES ('$username', '$password', '$email', '$time')";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $query = "SELECT id FROM ".TBL_USERS." WHERE username='$username'";
            $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $reguser = mysql_fetch_array($query);
            $query = "INSERT INTO ".TBL_USERDATA." (userid, firstname, lastname, worldid) VALUES ('$reguser[id]', '$firstname', '$lastname', '$nationality')";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');       
            $query = "UPDATE ".TBL_WORLD." SET total=total+1 WHERE id='$nationality'";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $query = "UPDATE ".TBL_LEAGUES." SET teams=teams+1 WHERE id='$regleague[id]'";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');           
            $query = "SELECT id FROM ".TBL_TEAMS." WHERE leagueid='$regleague[id]' and userid=0 ORDER BY RAND( ) LIMIT 1";           
            $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $regteam = mysql_fetch_array($query);           
            $query = "UPDATE ".TBL_TEAMS." SET name='$team', userid='$reguser[id]', money='250000' WHERE id='$regteam[id]'";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $query = "UPDATE ".TBL_STADIUMS." SET name='$stadium' WHERE teamid='$regteam[id]'";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $query = "SELECT id, male, name FROM ".TBL_PLAYERS." WHERE teamid='$regteam[id]'";
            $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            while ($botplayer = mysql_fetch_array($query)) {
                $query2 = "INSERT INTO ".TBL_DEAD_PLAYERS." (id, name, male) VALUES ('$botplayer[id]', '$botplayer[name]', '$botplayer[male]')";
                mysql_query($query2, $is_connected) or die('Can\'t connect to database.');                 
            }
            $query = "DELETE FROM ".TBL_PLAYERS." WHERE teamid='$regteam[id]'";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $query = "DELETE FROM ".TBL_DEFAULT_TACTICS." WHERE teamid='$regteam[id]'";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $query = "INSERT INTO ".TBL_FINANCES." (teamid) VALUES ('$regteam[id]')";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');       
            $query = "INSERT INTO ".TBL_TRAINING." (teamid) VALUES ('$regteam[id]')";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');
         for ($i=1; $i<=13; $i++) {
                $query = "SELECT * FROM ".TBL_MALE." WHERE countryid='$league' ORDER BY RAND( ) LIMIT 1";
                $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $male = mysql_fetch_array ($query);                  
                if (mysql_num_rows($query) == 0) {
                    $query = "SELECT * FROM ".TBL_MALE." WHERE countryid='2' ORDER BY RAND( ) LIMIT 1";
                    $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
                $male = mysql_fetch_array($query);            
            }
                $query = "SELECT * FROM ".TBL_NAME." WHERE countryid='$league' ORDER BY RAND( ) LIMIT 1";
                $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $name = mysql_fetch_array($query);                  
                if (mysql_num_rows($query) == 0) {
                    $query = "SELECT * FROM ".TBL_NAME." WHERE countryid='2' ORDER BY RAND( ) LIMIT 1";
                    $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
                $name = mysql_fetch_array($query);            
            }   
            $age = rand(17, 25);
            $height = rand(185, 205);
            $weight = rand(90, 105);
            $leadership = round(rand(0, 10000)/1000, 2);
            $form = round(rand(0, 10000)/1000, 2);
            $this['stamina'] = round(rand(10000, 25000)/1000, 2);
            $stamina = $this['stamina'];
            $this['strength'] = round(rand(20000, 35000)/1000, 2);
            $strength = $this['strength'];                  
            $this['breakthroughs'] = round(rand(8000, 15000)/1000, 2);
            $breakthroughs = $this['breakthroughs'];            
            $this['tackling'] = round(rand(10000, 25000)/1000, 2);
            $tackling = $this['tackling'];   
            $this['kicking'] = round(rand(1000, 10000)/1000, 2);
            $kicking = $this['kicking'];         
            $this['handling'] = round(rand(10000, 20000)/1000, 2);
            $handling = $this['handling'];   
            $this['speed'] = round(rand(1000, 10000)/1000, 2);
            $speed = $this['speed'];
            sort($this, SORT_NUMERIC);
            $val = (int)$this[count($this)-1];
            $coef = 1;
            if ($val > 10)
               $coef = 5;
            if ($val > 20)
               $coef = 10;   
            if ($val > 30)
               $coef = 20;      
            if ($val > 40)
               $coef = 25;   
            if ($val > 50)
               $coef = 35;   
            if ($val > 60)
               $coef = 40;   
            if ($val > 70)
               $coef = 45;      
            if ($val > 80)
               $coef = 50;   
            if ($val > 90)
               $coef = 60;            
            $salary = 3 * (100 + $val * $coef);
                 $query = "INSERT INTO ".TBL_PLAYERS." (name, male, salary, countryid, teamid, age, days, weight, height, experience, leadership, form, stamina, strength, breakthroughs,tackling, kicking, handling, speed) VALUES (\"$name[name]\", \"$male[male]\", '$salary', '$league', '$regteam[id]', '$age', '0', '$weight', '$height', '0', '$leadership', '$form', '$stamina', '$strength', '$breakthroughs', '$tackling', '$kicking', '$handling', '$speed')";
                 mysql_query($query, $is_connected) or die('Can\'t connect to database.');            
            unset($this);
            }   
         for ($i=1; $i<=12; $i++) {
                $query = "SELECT * FROM ".TBL_MALE." WHERE countryid='$league' ORDER BY RAND( ) LIMIT 1";
                $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $male = mysql_fetch_array ($query);                  
                if (mysql_num_rows($query) == 0) {
                    $query = "SELECT * FROM ".TBL_MALE." WHERE countryid='2' ORDER BY RAND( ) LIMIT 1";
                    $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
                $male = mysql_fetch_array($query);            
            }
                $query = "SELECT * FROM ".TBL_NAME." WHERE countryid='$league' ORDER BY RAND( ) LIMIT 1";
                $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
            $name = mysql_fetch_array($query);                  
                if (mysql_num_rows($query) == 0) {
                    $query = "SELECT * FROM ".TBL_NAME." WHERE countryid='2' ORDER BY RAND( ) LIMIT 1";
                    $query = mysql_query($query, $is_connected) or die('Can\'t connect to database.');
                $name = mysql_fetch_array($query);            
            }   
            $age = rand(17, 25);
            $height = rand(170, 190);
            $weight = rand(85, 95);
            $leadership = round(rand(0, 10000)/1000, 2);
            $form = round(rand(0, 10000)/1000, 2);
            $this['stamina'] = round(rand(8000, 15000)/1000, 2);
            $stamina = $this['stamina'];
            $this['strength'] = round(rand(1000, 10000)/1000, 2);
            $strength = $this['strength'];                  
            $this['breakthroughs'] = round(rand(10000, 25000)/1000, 2);
            $breakthroughs = $this['breakthroughs'];            
            $this['tackling'] = round(rand(10000, 20000)/1000, 2);
            $tackling = $this['tackling'];   
            $this['kicking'] = round(rand(10000, 25000)/1000, 2);
            $kicking = $this['kicking'];         
            $this['handling'] = round(rand(10000, 25000)/1000, 2);
            $handling = $this['handling'];   
            $this['speed'] = round(rand(20000, 35000)/1000, 2);
            $speed = $this['speed'];
            sort($this, SORT_NUMERIC);
            $val = (int)$this[count($this)-1];
            $coef = 1;
            if ($val > 10)
               $coef = 5;
            if ($val > 20)
               $coef = 10;   
            if ($val > 30)
               $coef = 20;      
            if ($val > 40)
               $coef = 25;   
            if ($val > 50)
               $coef = 35;   
            if ($val > 60)
               $coef = 40;   
            if ($val > 70)
               $coef = 45;      
            if ($val > 80)
               $coef = 50;   
            if ($val > 90)
               $coef = 60;            
            $salary = 3 * (100 + $val * $coef);
                 $query = "INSERT INTO ".TBL_PLAYERS." (name, male, salary, countryid, teamid, age, days, weight, height, experience, leadership, form, stamina, strength, breakthroughs,tackling, kicking, handling, speed) VALUES (\"$name[name]\", \"$male[male]\", '$salary', '$league', '$regteam[id]', '$age', '0', '$weight', '$height', '0', '$leadership', '$form', '$stamina', '$strength', '$breakthroughs', '$tackling', '$kicking', '$handling', '$speed')";
                 mysql_query($query, $is_connected) or die('Can\'t connect to database.');            
            unset($this);
            }          
        }
        else
            $ok = 0;
        return $ok;
    }


S-au înregistrat vreo 70 de utilizatori şi din aceştia la 4 utilizatori nu a rulat partea asta de cod:

Cod: Selectaţi tot

            $query = "INSERT INTO ".TBL_FINANCES." (teamid) VALUES ('$regteam[id]')";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');       
            $query = "INSERT INTO ".TBL_TRAINING." (teamid) VALUES ('$regteam[id]')";
            mysql_query($query, $is_connected) or die('Can\'t connect to database.');


Nu le-a dat nicio eroare si ce ma surprinde este ca tot codul inafara de astea 2 query-uri nu au rulat. Adica daca era vreo problema trebuia sa ruleze codul si cand ajungea la query-uri sa dea eroare.

Mi-am dat seama de eroare cand am vazut ca in tabele finances si training nu am aceeasi numar de randuri cu tabelul pentru useri.

Care sa fie problema? M-am uitat în error log si la ora la care s-au inregistrat nu am nicio eroare.[/code]



Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 33 vizitatori