Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 06-10-2012, 02:47 PM
m002.p's Avatar
m002.p m002.p is offline
 
Join Date: Jan 2007
Location: Worcester
Posts: 240
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Retrieving checkbox values from MYSQL

Hello everyone.

I am tearing my hair out with this one and I sort of know the reason why it wont work, being a loop issue but I cant see where I am going wrong.

I have checkboxes as seen in the $a_offenses array. I want the script to check the MYSQL table row 'offenses' which contains an array of those selected checkboxes in the format 'VALUE 1, VALUE 2, VALUE 4, VALUE 6' for example.

The problem comes where the first value eg. VALUE 1 is ticked in the list of checkboxes but the others are not and left unchecked.

Any ideas?

PS - The $c counter is used to ensure only 3 checkboxes are displayed per row ie. formatting only nothing else

Thanks in advance.

Matt

PHP Code:
// Query DB
$query mysql_query("SELECT offenses FROM reports WHERE id='$id'");
// Get ROW
$row mysql_fetch_array($query);

// Store all checkboxes as array
$a_offenses = array("Team Killing""Team Tazing""Team Nading""Team Peppering""Team Injuring""Insulting Players""Insulting Admins""Insulting Clan Members"
"Tag Stealing""Cheating / Hacking""Disallowed Name""Inappropiate Language""Spamming""Advertising / Recruiting""Rambo Gameplay""Random Shooting" "ROE Violations"
"Use of Non-English""Dropping as VIP""Spawn Killing""Camping""Injuring / Killing VIP""Injuring / Killing Civilians");

// Explode stored checkboxe values from DB selected
    
$offenses explode(',',$row['offenses']);

 
$c 0;
  foreach (
$a_offenses as $offense) {
 
$c++;
 
        if(
in_array($offense,$offenses)) 
    {
        if(
$c == 0)
        {
                  echo 
"<tr><td><input name=\"offenses[$c]\" type=\"checkbox\" value=\"$offense\" checked> $offense</td>";
        }
        else
        {
            echo 
"<td><input name=\"offenses[$c]\" type=\"checkbox\" value=\"$offense\" checked> $offense</td>";
        }
        } 
    else
        {
              if(
$c == 0)
        {
                  echo 
"<tr><td><input name=\"offenses[$c]\" type=\"checkbox\" value=\"$offense\"> $offense</td>";
        }
        else
        {
            echo 
"<td><input name=\"offenses[$c]\" type=\"checkbox\" value=\"$offense\"> $offense</td>";
        }
        }
              } 
Reply With Quote
  #2  
Old 06-10-2012, 03:22 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by m002.p View Post

The problem comes where the first value eg. VALUE 1 is ticked in the list of checkboxes but the others are not and left unchecked.

And what happens when that's the case?
Reply With Quote
  #3  
Old 06-10-2012, 03:43 PM
m002.p's Avatar
m002.p m002.p is offline
 
Join Date: Jan 2007
Location: Worcester
Posts: 240
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi, thanks for your response.

I dont follow what you mean.

Heres an example.

Row 'offenses' for ID 4; Team Killing, Spamming, ROE Violations

Out of all the checkbox possibilities as displayed with array $a_offenses, only the first value "Team Killing" is checked and not the other 2 in the example using the code posted.

Hope that answers your query?

Matt
Reply With Quote
  #4  
Old 06-10-2012, 03:54 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Oh, I get it now. I thought you meant some problem was happening if you checked only one box.

Anyway, I think your problem is that explode(',', array) splits by comma but doesn't take away the extra spaces. Try this:

PHP Code:
$offenses array_map('trim'explode(','$row['offenses'])); 
Reply With Quote
  #5  
Old 06-10-2012, 04:22 PM
m002.p's Avatar
m002.p m002.p is offline
 
Join Date: Jan 2007
Location: Worcester
Posts: 240
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Genius, works like a charm. Thank you, something so simple but so simply overlooked.

Matt
Reply With Quote
  #6  
Old 06-10-2012, 04:31 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah, sometimes it just takes a fresh pair of eyes.
Reply With Quote
  #7  
Old 07-29-2012, 04:46 PM
m002.p's Avatar
m002.p m002.p is offline
 
Join Date: Jan 2007
Location: Worcester
Posts: 240
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Kh99,

I know its been a while since I had this issue, but I have since been trying using another method.

Instead of using the old method:

Code:
// Store all checkboxes as array
$a_offenses = array("Team Killing", "Team Tazing", "Team Nading", "Team Peppering", "Team Injuring", "Insulting Players", "Insulting Admins", "Insulting Clan Members", 
"Tag Stealing", "Cheating / Hacking", "Disallowed Name", "Inappropiate Language", "Spamming", "Advertising / Recruiting", "Rambo Gameplay", "Random Shooting" , "ROE Violations", 
"Use of Non-English", "Dropping as VIP", "Spawn Killing", "Camping", "Injuring / Killing VIP", "Injuring / Killing Civilians");
I am now retrieving this array from a MYSQL table.

Example:

$a_offenses = $db_offenses['list'];

Value stored in MYSQL column 'list' is the array eg. "Team Killing, Team Tazing, Team Nading" etc.

Now the problem is back again. I removed your first solution to simply:

Code:
$offenses = explode(',',$row['offenses']);
and it partially works. When I say partially, multiple boxes are ticked but for some elements of the array the box remains unticked.

Eg.

Offenses listed in DB; Team Killing, Team Tazing, Rambo Gameplay

Checkboxes ticked: Team Killing, Rambo Gameplay

So some are missed from the stored values. I looked at how both arrays are stored in the DB and cant see any extra spaces.

Can you help?

--------------- Added [DATE]1343584787[/DATE] at [TIME]1343584787[/TIME] ---------------

Dont worry, forgot to pass both variables through array_map.

Thanks once again!
Reply With Quote
Reply

Thread Tools
Display Modes

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 07:45 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04122 seconds
  • Memory Usage 2,236KB
  • 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
  • (2)bbcode_code
  • (2)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)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