The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
||||
|
||||
what is it called when one record stores many values like "2,3,4,5,10" ?
hi
Vbulletin stores a user's 2ndary usergroup in a comma delimited list in one record of the user recordset - example = "1,6,2,4,5,22" - all I need to do (via my external script) is be able to: - check if a certain number is in there - add a number if it is not - remove a number if I need to (user leaves the group) I'm a struggling asp->php convert and I don't want to have to re-invent the wheel on this one so I am wondering: - is there a special name for a record that contains a comma delimited list like this - are there special sql query terms that support this - is processing of lists like this perhaps a built-in php function Thanks |
#2
|
||||
|
||||
This nice little function will help you out :
http://uk2.php.net/manual/en/function.in-array.php - miSt |
#3
|
||||
|
||||
Mist, I appreciate the help. A friend of mine just sent me the text below as well so I think I am pointed in the right direction.
*********** Would you believe that I'd just coded something similar a few days ago? There's a couple choices you could make. You can keep the data as a string and then do things like "strpos" to see if a number is in there, but that gets messy when you want to remove a number. Or you can turn the string in to an array, but then you have to translate it from a string to an array, and back again when you want to store it. Here's a bit of code I had to do the array bit: // $info is the comma string function string2array($string) { $temp = explode(",", $string); $info = array(); foreach ($temp as $key) { if ($key > 0) $info[$key] = 1; } return $info; } And then you just need to look at $info[$X] to see if a particular number is set or not. To add/remove a number, just do $info[$X] = 1 or 0; To get a lists of all the numbers (instead of just checking if they're set) do foreach ($info as $key => $value) if ($value == 1) // needed if you're setting things to 0 echo "$key is one of the numbers set, yay."; To turn it back in to a string, function array2string($info) { $string = ""; foreach ($info as $key => $value) { $string .= "$key,"; } return $string; // we have an extra "," at the end, might screw up vBulletin, so you could remove it with substr($string, -1) } **************** |
#4
|
||||
|
||||
I have never had the need to turn the string into an array when i'm selecting from the database. I just use in_array and it's sorted . PHP isn't so strict with data types as other programming languages
|
#5
|
||||
|
||||
I'll try your way. I'm all for keeping it simple.
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|