Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 10-06-2003, 02:03 PM
bradsears's Avatar
bradsears bradsears is offline
 
Join Date: Aug 2003
Location: Toronto
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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
Reply With Quote
  #2  
Old 10-06-2003, 03:44 PM
Dean C's Avatar
Dean C Dean C is offline
 
Join Date: Jan 2002
Location: England
Posts: 9,071
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This nice little function will help you out :

http://uk2.php.net/manual/en/function.in-array.php

- miSt
Reply With Quote
  #3  
Old 10-06-2003, 03:54 PM
bradsears's Avatar
bradsears bradsears is offline
 
Join Date: Aug 2003
Location: Toronto
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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) }
****************
Reply With Quote
  #4  
Old 10-06-2003, 06:02 PM
Dean C's Avatar
Dean C Dean C is offline
 
Join Date: Jan 2002
Location: England
Posts: 9,071
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #5  
Old 10-06-2003, 06:20 PM
bradsears's Avatar
bradsears bradsears is offline
 
Join Date: Aug 2003
Location: Toronto
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'll try your way. I'm all for keeping it simple.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:15 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04557 seconds
  • Memory Usage 2,197KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete