Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 07-23-2014, 05:21 PM
Bestrafung Bestrafung is offline
 
Join Date: Aug 2009
Posts: 86
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Add Checkboxes to Form

I am trying to add checkboxes to the free agent signup form in the vbTournaments mod. I have created the extra field in the database table and a single selection works without issue. The problem I have is that when multiple checkboxes are selected only the last selection is saved to the database instead of all of the choices.

tmnt_newfreeagent template:
HTML Code:
<form class="vbform block" action="teams.php?do=addfreeagent" method="post">
<div class="blockbody formcontrols">
	<div class="blockrow">
		<label for="game">Game</label>
		<div style="overflow:auto">
			<input type="checkbox" name="game[]" value="Aliens vs. Predator">Aliens vs. Predator<br />
			<input type="checkbox" name="game[]" value="Chivalry: Medeival Warfare">Chivalry: Medeival Warfare<br />
			<input type="checkbox" name="game[]" value="Counter-Strike: Global Offensive">Counter-Strike: Global Offensive<br />
			<input type="checkbox" name="game[]" value="Insurgency">Insurgency<br />
		</div>
		<p class="description">Please select the game(s) you play.</p>
	</div>
</div>
<div class="blockfoot actionbuttons">
	<div class="group">
		<input type="submit" class="button" value="{vb:rawphrase submit}" />
	</div>
</div>
</form>
teams.php:
PHP Code:
if ($_POST['do'] == 'insertfreeagent')
{
    if (!
$tmntp['canjointeam'])
    {
        
print_no_permission();
    }
    
$count $vbulletin->db->query_first("
        SELECT COUNT(*) AS countrows
        FROM " 
TABLE_PREFIX "tmnt_members
        WHERE userid = '"
.$vbulletin->userinfo['userid']."'
    "
);
    if (
$count['countrows'] != 0)
    {
        
print_no_permission();
    }
    
$userid $vbulletin->userinfo['userid'];
    
$available_day $vbulletin->input->clean_gpc('p''available_day'TYPE_NOHTML);
    
$available_time $vbulletin->input->clean_gpc('p''available_time'TYPE_NOHTML);
    
$reason $vbulletin->input->clean_gpc('p''reason'TYPE_NOHTML);
    
$description $vbulletin->input->clean_gpc('p''description'TYPE_NOHTML);
    
$game $vbulletin->input->clean_gpc('p''game'TYPE_STR);
    if (!
$description || !$available_day || !$available_time || !$reason)
    {
        
$_REQUEST['do'] = 'addfreeagent';
        
$incomplete_fields true;
    }
    else
    {
        
$ip $_SERVER['REMOTE_ADDR'];
        
$vbulletin->db->query_write("INSERT INTO " TABLE_PREFIX "tmnt_members
            (userid, teamid, time, ip, available_day, available_time, reason, description, game)
            VALUES (
                '"
.$vbulletin->db->escape_string($userid)."',
                '0',
                "
.TIMENOW.", 
                '"
.$vbulletin->db->escape_string($ip)."',
                '"
.$vbulletin->db->escape_string($available_day)."',
                '"
.$vbulletin->db->escape_string($available_time)."',
                '"
.$vbulletin->db->escape_string($reason)."',
                '"
.$vbulletin->db->escape_string($description)."',
                '"
.$vbulletin->db->escape_string($game)."'
            )
        "
);
        
$vbulletin->url "teams.php?do=freeagents";    
        eval(
print_standard_redirect('redirect_insertfreeagent'));
    }

I've tried both $vbulletin->input->clean_gpc('p', 'game', TYPE_STR) and $vbulletin->input->clean_gpc('p', 'game', TYPE_NOHTML) with no differences. I really don't understand the rest of this to proceed any further. If anyone could help me determine the issue I would greatly appreciate it.
Reply With Quote
  #2  
Old 07-23-2014, 05:39 PM
vBNinja's Avatar
vBNinja vBNinja is offline
 
Join Date: May 2011
Location: USA
Posts: 239
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try TYPE_ARRAY

Also serialize $game before saving it to the db
Reply With Quote
  #3  
Old 07-23-2014, 05:41 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's because you're sending an array of values to the server.

$vbulletin->input->clean_array_gpc('p', 'game', TYPE_STR);

$vbulletin->GPC['game']; should then contain the games separated by commas.
Reply With Quote
  #4  
Old 07-23-2014, 09:46 PM
Bestrafung Bestrafung is offline
 
Join Date: Aug 2009
Posts: 86
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by vBNinja View Post
Try TYPE_ARRAY

Also serialize $game before saving it to the db
I tried TYPE_ARRAY shortly after posting earlier and just get an error message on submit, no data is sent for that field. Could you please explain or point me in the right direction to "serialize $game" since I'm not familiar with this. I'm a novice when it comes to PHP and my vb experience is even more limited. I'm just trying to teach myself the basics by checking out other mods so any info is useful.
Quote:
Originally Posted by Dave View Post
It's because you're sending an array of values to the server.

$vbulletin->input->clean_array_gpc('p', 'game', TYPE_STR);

$vbulletin->GPC['game']; should then contain the games separated by commas.
Yeah, I thought as much but have been unable to determine how to submit the array.

Thank you both for the replies.
Reply With Quote
  #5  
Old 07-25-2014, 07:13 PM
Bestrafung Bestrafung is offline
 
Join Date: Aug 2009
Posts: 86
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Does anyone have any ideas how to resolve this I've spent a lot of time on this script and fixed everything but this issue. I added regular text fields without issue, I never thought a simple checkbox selection would cause this much trouble. I'm sure the form HTML itself is fine it's just the PHP code handling the submission I'm not sure about.

I tried looking into the serialization of $game but it's over my head.
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 09:10 AM.


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.07095 seconds
  • Memory Usage 2,235KB
  • Queries Executed 13 (?)
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)bbcode_html
  • (1)bbcode_php
  • (2)bbcode_quote
  • (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_postinfo_query
  • fetch_postinfo
  • 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