Lukeidiot Posted March 8, 2013 Share Posted March 8, 2013 (edited) How would I go about coloring usernames (random color) based off an IP address? For example, I want all user's with IP "127.0.0.1" to be red in the table: $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)]; Example: User1(red) - 127.0.0.1 User2(red) - 127.0.0.1 User3(blue) - 44.43.44.44 User4(green) - 54.45.45.45 Edited March 8, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/ Share on other sites More sharing options...
requinix Posted March 8, 2013 Share Posted March 8, 2013 You can't say you want them random and then say you want them a certain color. Which is it? Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417624 Share on other sites More sharing options...
Lukeidiot Posted March 8, 2013 Author Share Posted March 8, 2013 You can't say you want them random and then say you want them a certain color. Which is it? Random color based off IP, if the IP addresses are the same, give them the same random color. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417625 Share on other sites More sharing options...
requinix Posted March 9, 2013 Share Posted March 9, 2013 Keep an array of IP addresses and their random colors as you go through the list. If the address is in there already then use its color, otherwise pick a color, use that, and save it in the array. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417630 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 (edited) Keep an array of IP addresses and their random colors as you go through the list. If the address is in there already then use its color, otherwise pick a color, use that, and save it in the array. Could you give me an example code for this? Because the trouble is finding when the IP is different in the while loop. Edited March 9, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417631 Share on other sites More sharing options...
requinix Posted March 9, 2013 Share Posted March 9, 2013 (edited) Well, you've got some kind of loop over users I assume? In pseudocode, $ipaddrcolors = array(); for each $user { if $ipaddrcolors[$user IP address] exists { $color = $ipaddrcolors[$user IP address] } else { pick a random $color $ipaddrcolors[$user IP address] = $color } color the user with $color } Edited March 9, 2013 by requinix Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417635 Share on other sites More sharing options...
Psycho Posted March 9, 2013 Share Posted March 9, 2013 You really need to rethink how you are going to generate "random" colors. You are going to generate colors that will not be readable on whatever background you choose. If you are using a white background maybe limit it to only 0-9 for darker colors. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417636 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 (edited) Well, you've got some kind of loop over users I assume? In pseudocode, $ipaddrcolors = array(); for each $user { if $ipaddrcolors[$user IP address] exists { $color = $ipaddrcolors[$user IP address] } else { pick a random $color $ipaddrcolors[$user IP address] = $color } color the user with $color } $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)]; $ipaddrcolors = array(); foreach($row_rs['ipaddress']){ if ($row_rs['ipaddress']){ $colored_username = "<font color='$color'>$row_rs[username]</font>"; } else { $colored_username = "<font color='$color'>$row_rs[username]</font>"; } $colored_username = "<font color='$color'>$row_rs[username]</font>"; } Edited March 9, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417639 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 Well, you've got some kind of loop over users I assume? In pseudocode, $ipaddrcolors = array(); for each $user { if $ipaddrcolors[$user IP address] exists { $color = $ipaddrcolors[$user IP address] } else { pick a random $color $ipaddrcolors[$user IP address] = $color } color the user with $color } You can't use for each with a single $variable. How would I go about doing this? Also, how do I tell if the $ip has been set a color? Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417651 Share on other sites More sharing options...
requinix Posted March 9, 2013 Share Posted March 9, 2013 I wrote pseudocode, not PHP code. You're supposed to read what I wrote as if it were a more technical and precise version of English, understand what it's doing, and translate that into actual PHP code. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417658 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 I wrote pseudocode, not PHP code. You're supposed to read what I wrote as if it were a more technical and precise version of English, understand what it's doing, and translate that into actual PHP code.I understand that completely, but my problem lies in finding which IP has already been added to the array. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417660 Share on other sites More sharing options...
Jessica Posted March 9, 2013 Share Posted March 9, 2013 In_array Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417661 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 (edited) This is what I tried, but doesnt work. $user_ip = $row_rs['ipaddress']; $user = $row_rs['username']; $ipaddrcolors = array(); foreach ($user as $user2) { if(in_array($ipaddrcolors[$user_ip])){ $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); $color = '#'.$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)]; $color = $ipaddrcolors[$user_ip]; } else { $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); $color = '#'.$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)].$rand[rand(0,9)]; $ipaddrcolors[$user_ip] = $color; } $user_colored = "<font color='$color'>$user2</font>"; } <td><div align="center"><strong><?php echo substr($user_colored, 0, 30); ?></strong></div></td> Edited March 9, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417663 Share on other sites More sharing options...
Jessica Posted March 9, 2013 Share Posted March 9, 2013 You're using so many functions wrong. You need to turn on error reporting and look up functions and syntax in the manual. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417664 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 I will paypal someone a donation for some workig code. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417667 Share on other sites More sharing options...
Jessica Posted March 9, 2013 Share Posted March 9, 2013 We have a freelancing forum for that. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417668 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 We have a freelancing forum for that.I thought this was a help forum as well. I thank you for your help, but just saying something is wrong doesn't do much justice. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417669 Share on other sites More sharing options...
jcbones Posted March 9, 2013 Share Posted March 9, 2013 Here you go: colors.php - provided by *unkown* (can't remember) <?php $colors = array("*TITLE01*" => "Reds", "Indian Red" => "#CD5C5C", "Light Coral" => "#F08080", "Salmon" => "#FA8072", "Dark Salmon" => "#E9967A", "Light Salmon" => "#FFA07A", "Crimson" => "#DC143C", "Red" => "#FF0000", "Fire Brick" => "#B22222", "Dark Red" => "#8B0000", "*TITLE02*" => "Pinks", "Pink" => "#FFC0CB", "Light Pink" => "#FFB6C1", "Hot Pink" => "#FF69B4", "Deep Pink" => "#FF1493", "Medium Violet Red" => "#C71585", "Pale Violet Red" => "#DB7093", "*TITLE03*" => "Oranges", "Light Salmon" => "#FFA07A", "Coral" => "#FF7F50", "Tomato" => "#FF6347", "Orange Red" => "#FF4500", "Dark Orange" => "#FF8C00", "Orange" => "#FFA500", "*TITLE04*" => "Yellows", "Gold" => "#FFD700", "Yellow" => "#FFFF00", "Light Yellow" => "#FFFFE0", "Lemon Chiffon" => "#FFFACD", "Light Goldenrod Yellow" => "#FAFAD2", "Papaya Whip" => "#FFEFD5", "Moccasin" => "#FFE4B5", "Peach Puff" => "#FFDAB9", "Pale Goldenrod" => "#EEE8AA", "Khaki" => "#F0E68C", "Dark Khaki" => "#BDB76B", "*TITLE05*" => "Purples", "Lavender" => "#E6E6FA", "Thistle" => "#D8BFD8", "Plum" => "#DDA0DD", "Violet" => "#EE82EE", "Orchid" => "#DA70D6", "Fuchsia" => "#FF00FF", "Magenta" => "#FF00FF", "Medium Orchid" => "#BA55D3", "Medium Purple" => "#9370DB", "Blue Violet" => "#8A2BE2", "Dark Violet" => "#9400D3", "Dark Orchid" => "#9932CC", "Dark Magenta" => "#8B008B", "Purple" => "#800080", "Indigo" => "#4B0082", "Slate Blue" => "#6A5ACD", "Dark Slate Blue" => "#483D8B", "*TITLE06*" => "Greens", "Green Yellow" => "#ADFF2F", "Chartreuse" => "#7FFF00", "Lawn Green" => "#7CFC00", "Lime" => "#00FF00", "Lime Green" => "#32CD32", "Pale Green" => "#98FB98", "Light Green" => "#90EE90", "Medium Spring Green" => "#00FA9A", "Spring Green" => "#00FF7F", "Medium Sea Green" => "#3CB371", "Sea Green" => "#2E8B57", "Forest Green" => "#228B22", "Green" => "#008000", "Dark Green" => "#006400", "Yellow Green" => "#9ACD32", "Olive Drab" => "#6B8E23", "Olive" => "#808000", "Dark Olive Green" => "#556B2F", "Medium Aquamarine" => "#66CDAA", "Dark Sea Green" => "#8FBC8F", "Light Sea Green" => "#20B2AA", "Dark Cyan" => "#008B8B", "Teal" => "#008080", "*TITLE07*" => "Blues", "Aqua" => "#00FFFF", "Cyan" => "#00FFFF", "Light Cyan" => "#E0FFFF", "Pale Turquoise" => "#AFEEEE", "Aquamarine" => "#7FFFD4", "Turquoise" => "#40E0D0", "Medium Turquoise" => "#48D1CC", "Dark Turquoise" => "#00CED1", "Cadet Blue" => "#5F9EA0", "Steel Blue" => "#4682B4", "Light Steel Blue" => "#B0C4DE", "Powder Blue" => "#B0E0E6", "Light Blue" => "#ADD8E6", "Sky Blue" => "#87CEEB", "Light Sky Blue" => "#87CEFA", "Deep Sky Blue" => "#00BFFF", "Dodger Blue" => "#1E90FF", "Cornflower Blue" => "#6495ED", "Medium Slate Blue" => "#7B68EE", "Royal Blue" => "#4169E1", "Blue" => "#0000FF", "Medium Blue" => "#0000CD", "Dark Blue" => "#00008B", "Navy" => "#000080", "Midnight Blue" => "#191970", "*TITLE08*" => "Browns", "Cornsilk" => "#FFF8DC", "Blanched Almond" => "#FFEBCD", "Bisque" => "#FFE4C4", "Navajo White" => "#FFDEAD", "Wheat" => "#F5DEB3", "Burly Wood" => "#DEB887", "Tan" => "#D2B48C", "Rosy Brown" => "#BC8F8F", "Sandy Brown" => "#F4A460", "Goldenrod" => "#DAA520", "Dark Goldenrod" => "#B8860B", "Peru" => "#CD853F", "Chocolate" => "#D2691E", "Saddle Brown" => "#8B4513", "Sienna" => "#A0522D", "Brown" => "#A52A2A", "Maroon" => "#800000", "*TITLE09*" => "Whites", "White" => "#FFFFFF", "Snow" => "#FFFAFA", "Honeydew" => "#F0FFF0", "Mint Cream" => "#F5FFFA", "Azure" => "#F0FFFF", "Alice Blue" => "#F0F8FF", "Ghost White" => "#F8F8FF", "White Smoke" => "#F5F5F5", "Seashell" => "#FFF5EE", "Beige" => "#F5F5DC", "Old Lace" => "#FDF5E6", "Floral White" => "#FFFAF0", "Ivory" => "#FFFFF0", "Antique White" => "#FAEBD7", "Linen" => "#FAF0E6", "Lavender Blush" => "#FFF0F5", "Misty Rose" => "#FFE4E1", "*TITLE10*" => "Greys", "Gainsboro" => "#DCDCDC", "Light Grey" => "#D3D3D3", "Silver" => "#C0C0C0", "Dark Gray" => "#A9A9A9", "Gray" => "#808080", "Dim Gray" => "#696969", "Light Slate Gray" => "#778899", "Slate Gray" => "#708090", "Dark Slate Gray" => "#2F4F4F", "Black" => "#000000" ); ?> Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417670 Share on other sites More sharing options...
jcbones Posted March 9, 2013 Share Posted March 9, 2013 Second part: Whatever.php <?php include('colors.php'); function randomColor($colors) { $color = array_rand($colors,1); return (strpos($color,'*') === false) ? substr($colors[$color],1) : randomColor($colors); } $usedColors = array(); foreach($row['ipaddress'] as $address) { if(array_key_exists($address,$usedColors)) { $color = $usedColors[$address]; } else { $color = randomColor($colors); $usedColors[$address] = $color; } echo '<span style="background-color:#' . $color . '">' . $address . '</span><br />'; } Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417671 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 (edited) Second part: Whatever.php <?php include('colors.php'); function randomColor($colors) { $color = array_rand($colors,1); return (strpos($color,'*') === false) ? substr($colors[$color],1) : randomColor($colors); } $usedColors = array(); foreach($row['ipaddress'] as $address) { if(array_key_exists($address,$usedColors)) { $color = $usedColors[$address]; } else { $color = randomColor($colors); $usedColors[$address] = $color; } echo '<span style="background-color:#' . $color . '">' . $address . '</span><br />'; } $user_ip = $row_rs['ipaddress']; $user = $row_rs['username']; function randomColor($colors) { $color = array_rand($colors,1); return (strpos($color,'*') === false) ? substr($colors[$color],1) : randomColor($colors); } $usedColors = array(); foreach($user_ip as $address) { if(array_key_exists($address,$usedColors)) { $color = $usedColors[$address]; } else { $color = randomColor($colors); $usedColors[$address] = $color; } $new = '<span style="background-color:#' . $color . '">' . $address . '</span><br />'; } <td><div align="center"><strong><?php echo $new; ?></strong></div></td> I have included colors.php outside the while loop. However this code is not working Edited March 9, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417676 Share on other sites More sharing options...
Jessica Posted March 9, 2013 Share Posted March 9, 2013 Do you know what an array is? Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417677 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 (edited) <?php include("colors.php"); function randomColor($colors) { $color = array_rand($colors,1); return (strpos($color,'*') === false) ? substr($colors[$color],1) : randomColor($colors); } $sql = mysql_query("SELECT * FROM ph_referers WHERE owner = '$_SESSION[username]' ORDER BY id DESC"); while($row = mysql_fetch_assoc($sql)){ $ipaddress = $row['ipaddress']; $usedColors = array(); foreach($ipaddress as $address) { if(array_key_exists($address,$usedColors)) { $color = $usedColors[$address]; } else { $color = randomColor($colors); $usedColors[$address] = $color; } $new = '<font color="#' . $color . '">' . $address . '</font><br />'; } echo "$new - $row[username]:$color<br>"; }$color is showing as blank. Any ideas? Edited March 9, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417685 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 (edited) Do you know what an array is?No idea, is that some sort of kitchen appliance? Edited March 9, 2013 by Lukeidiot Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417686 Share on other sites More sharing options...
Lukeidiot Posted March 9, 2013 Author Share Posted March 9, 2013 Yeah none the examples are working. Does anyone know how? Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417698 Share on other sites More sharing options...
Jessica Posted March 9, 2013 Share Posted March 9, 2013 No idea, is that some sort of kitchen appliance?You will not be able to integrate this code into yours without learning some basics. If you actually want someone to write it for you, post in freelance. If you want to learn, do some basic research. We are not here to write it for you for free. Quote Link to comment https://forums.phpfreaks.com/topic/275423-coloring-usernames-in-table-based-off-ip-address/#findComment-1417722 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.