Results 1 to 2 of 2

Thread: Need 'while' help please

  1. #1
    Join Date
    Jul 2007
    Location
    England
    Posts
    41
    Thanks
    3
    Thanked 0 Times in 0 Posts

    Question Need 'while' help please

    I have this code for creating an array of all the tables in a database:

    Code:
    $tables = array(); 
    $rows = mysql_query("SHOW TABLES FROM {$database}"); 
    while ($row = mysql_fetch_array($rows)) { 
    $tables[] = $row[0]; 
    }
    What I need to do now is take the names of each of those tables (in the array) and insert them into this code:

    Code:
    function getStats($tables) {
                    // Create an array of skills
                    $skills = array('Overall', 'Attack', 'Defence', 'Strength', 'Hitpoints', 'Ranged', 'Prayer', 'Magic', 'Cooking', 'Woodcutting', 'Fletching', 'Fishing', 'Firemaking', 'Crafting', 'Smithing', 'Mining', 'Herblore', 'Agility', 'Thieving', 'Slayer', 'Farming', 'Runecraft', 'Hunter', 'Construction', 'Summoning', 'Duel Tournament', 'Bounty Hunters', 'Bounty Hunter Rogues', 'Fist of Guthix');
    
    				
    				$hs = @file_get_contents('http://hiscore.runescape.com/index_lite.ws?player=' . $tables);
                    $out = Array();
    
                    if (! $hs)
                            return null;
                    if (strpos($hs, '404 - Page not found'))
                            return null;
    
                    $stats = explode("\n", $hs);
    
                    // Loop through the skills
                    for($i = 0; $i<count($skills);$i++) {
                            // Explode each skill into 3 values - rank, level, exp
                            $stat = explode(',', $stats[$i]);
                            $out[$skills[$i]] = Array();
                            $out[$skills[$i]]['rank'] = $stat[0];
                            $out[$skills[$i]]['level'] = $stat[1];
                            $out[$skills[$i]]['xp'] = $stat[2];
                    }
            return $out;
            }
    		
                    $out = getStats($row['username']);
                    if (!empty($out)){
                            $now = time();
                            $user = $row['id'];
    
                            $overallrank = $out['Overall']['rank'];
                            $overalllevel = $out['Overall']['level'];
                            $overallexp = $out['Overall']['xp'];
    						$overallpercent = ($overallexp / $overallexp) * 100;
    
                            $attackrank = $out['Attack']['rank'];
                            $attacklevel = $out['Attack']['level'];
                            $attackexp = $out['Attack']['xp'];
    						$attackpercent = ($attackexp / $overallexp) * 100;
    
                            $strengthrank = $out['Strength']['rank'];
                            $strengthlevel = $out['Strength']['level'];
                            $strengthexp = $out['Strength']['xp'];
    						$strengthpercent = ($strengthexp / $overallexp) * 100;
    
                            $defencerank = $out['Defence']['rank'];
                            $defencelevel = $out['Defence']['level'];
                            $defenceexp = $out['Defence']['xp'];
    						$defencepercent = ($defenceexp / $overallexp) * 100;
    
                            $hitpointsrank = $out['Hitpoints']['rank'];
                            $hitpointslevel = $out['Hitpoints']['level'];
                            $hitpointsexp = $out['Hitpoints']['xp'];
    						$hitpointspercent = ($hitpointsexp / $overallexp) * 100;
    
                            $rangedrank = $out['Ranged']['rank'];
                            $rangedlevel = $out['Ranged']['level'];
                            $rangedexp = $out['Ranged']['xp'];
    						$rangedpercent = ($rangedexp / $overallexp) * 100;
    
                            $prayerrank = $out['Prayer']['rank'];
                            $prayerlevel = $out['Prayer']['level'];
                            $prayerexp = $out['Prayer']['xp'];
    						$prayerpercent = ($prayerexp / $overallexp) * 100;
    
                            $magicrank = $out['Magic']['rank'];
                            $magiclevel = $out['Magic']['level'];
                            $magicexp = $out['Magic']['xp'];
    						$magicpercent = ($magicexp / $overallexp) * 100;
    
                            $cookingrank = $out['Cooking']['rank'];
                            $cookinglevel = $out['Cooking']['level'];
                            $cookingexp = $out['Cooking']['xp'];
    						$cookingpercent = ($cookingexp / $overallexp) * 100;
    
                            $woodcuttingrank = $out['Woodcutting']['rank'];
                            $woodcuttinglevel = $out['Woodcutting']['level'];
                            $woodcuttingexp = $out['Woodcutting']['xp'];
    						$woodcuttingpercent = ($woodcuttingexp / $overallexp) * 100;
    
                            $fletchingrank = $out['Fletching']['rank'];
                            $fletchinglevel = $out['Fletching']['level'];
                            $fletchingexp = $out['Fletching']['xp'];
    						$fletchingpercent = ($fletchingexp / $overallexp) * 100;
    
                            $fishingrank = $out['Fishing']['rank'];
                            $fishinglevel = $out['Fishing']['level'];
                            $fishingexp = $out['Fishing']['xp'];
    						$fishingpercent = ($fishingexp / $overallexp) * 100;
    
                            $firemakingrank = $out['Firemaking']['rank'];
                            $firemakinglevel = $out['Firemaking']['level'];
                            $firemakingexp = $out['Firemaking']['xp'];
    						$firemakingpercent = ($firemakingexp / $overallexp) * 100;
    
                            $craftingrank = $out['Crafting']['rank'];
                            $craftinglevel = $out['Crafting']['level'];
                            $craftingexp = $out['Crafting']['xp'];
    						$craftingpercent = ($craftingexp / $overallexp) * 100;
    
                            $smithingrank = $out['Smithing']['rank'];
                            $smithinglevel = $out['Smithing']['level'];
                            $smithingexp = $out['Smithing']['xp'];
    						$smithingpercent = ($smithingexp / $overallexp) * 100;
    
                            $miningrank = $out['Mining']['rank'];
                            $mininglevel = $out['Mining']['level'];
                            $miningexp = $out['Mining']['xp'];
    						$miningpercent = ($miningexp / $overallexp) * 100;
    
                            $herblorerank = $out['Herblore']['rank'];
                            $herblorelevel = $out['Herblore']['level'];
                            $herbloreexp = $out['Herblore']['xp'];
    						$herblorepercent = ($herbloreexp / $overallexp) * 100;
    
                            $agilityrank = $out['Agility']['rank'];
                            $agilitylevel = $out['Agility']['level'];
                            $agilityexp = $out['Agility']['xp'];
    						$agilitypercent = ($agilityexp / $overallexp) * 100;
    
                            $thievingrank = $out['Thieving']['rank'];
                            $thievinglevel = $out['Thieving']['level'];
                            $thievingexp = $out['Thieving']['xp'];
    						$thievingpercent = ($thievingexp / $overallexp) * 100;
    
                            $slayerrank = $out['Slayer']['rank'];
                            $slayerlevel = $out['Slayer']['level'];
                            $slayerexp = $out['Slayer']['xp'];
    						$slayerpercent = ($slayerexp / $overallexp) * 100;
    
                            $farmingrank = $out['Farming']['rank'];
                            $farminglevel = $out['Farming']['level'];
                            $farmingexp = $out['Farming']['xp'];
    						$farmingpercent = ($farmingexp / $overallexp) * 100;
    
                            $runecraftrank = $out['Runecraft']['rank'];
                            $runecraftlevel = $out['Runecraft']['level'];
                            $runecraftexp = $out['Runecraft']['xp'];
    						$runecraftpercent = ($runecraftexp / $overallexp) * 100;
    
                            $hunterrank = $out['Hunter']['rank'];
                            $hunterlevel = $out['Hunter']['level'];
                            $hunterexp = $out['Hunter']['xp'];
    						$hunterpercent = ($hunterexp / $overallexp) * 100;
    
                            $constructionrank = $out['Construction']['rank'];
                            $constructionlevel = $out['Construction']['level'];
                            $constructionexp = $out['Construction']['xp'];
    						$constructionpercent = ($constructionexp / $overallexp) * 100;
    
                            $summoningrank = $out['Summoning']['rank'];
                            $summoninglevel = $out['Summoning']['level'];
                            $summoningexp = $out['Summoning']['xp'];
    						$summoningpercent = ($summoningexp / $overallexp) * 100;
    						}
    function combatLevel($attack, $defence, $strength, $hitpoints, $prayer, $ranged, $magic, $summoning) {
                    $base = ($defence + $hitpoints + floor($prayer / 2) + floor($summoning / 2)) * 0.25;
    
                    $melee = ($attack + $strength) * 0.325;
                    $ranger = floor($ranged * 1.5) * 0.325;
                    $mage = floor($magic * 1.5) * 0.325;
    
                    return $base + max($melee, $ranger, $mage);
            }
    
    mysql_query("INSERT INTO $tables (attack, defence, strength, hitpoints, ranged, prayer, magic, cooking, woodcutting, fletching, fishing, firemaking, crafting, smithing, mining, herblore, agility, thieving, slayer, farming, runecraft, hunter, construction, summoning)
    VALUES ('$attackexp', '$defenceexp', '$strengthexp', '$hitpointsexp', '$rangedexp', '$magicexp', '$prayerexp', '$cookingexp', '$woodcuttingexp', '$fletchingexp', '$fishingexp', '$firemakingexp', '$craftingexp', '$smithingexp', '$miningexp', '$herbloreexp', '$agilityexp', '$thievingexp', '$slayerexp', '$farmingexp', '$runecraftexp', '$hunterexp', '$constructionexp', '$summoningexp')");
    
    mysql_close();
    Please don't let that put you off- it works fine. As you can see, where you see "$tables" is where the table name should be. I need to repeat all of that code for each instance of "$tables".

    Problem: I don't know PHP well enough to use 'while' properly. I also think the complexity of that code may cause problems, what with all the curly brackets already there.

    Thanks in advance, mrrsman

  2. #2
    Join Date
    Mar 2006
    Location
    Illinois, USA
    Posts
    12,164
    Thanks
    265
    Thanked 690 Times in 678 Posts

    Default

    I'm trying to understand what you want. You want to repeat the code inside the function for each part of the array $tables?
    It is not possible to put a loop like that inside the function because the return statements will exit the function on the first loop through, but you can call the function itself for each part of the array.
    When using arrays, foreach loops make everything easier. You can use while or for loops, but foreach is more automated.

    Try this:
    PHP Code:
    foreach($tables as $table) {
       echo 
    getStats($table);

    Of course you should replace the echo with what you'd like to do with the results of the function.

    Hope this gets you started.
    Daniel - Freelance Web Design | <?php?> | <html>| español | Deutsch | italiano | português | català | un peu de français | some knowledge of several other languages: I can sometimes help translate here on DD | Linguistics Forum

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •