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 02-25-2003, 03:35 AM
Nomb's Avatar
Nomb Nomb is offline
 
Join Date: Nov 2002
Location: Phoenix, AZ
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Calling a form

Hey, I've put a profile field in my index.php. It displays custom profile field #6.

I'd like to be able to choose something from the dropdown, then update the database with the selection, and finally be redirected back to index.php.

Here's what I did to index.php:

PHP Code:
      $profilefield=$DB_site->query_first("SELECT title,description,required,hidden,maxlength,size,displayorder,editable,type,options
                                           FROM profilefield
                                           WHERE profilefieldid=6"
);
    
$TheField="";
    
$optionlines explode(','$profilefield[options]);
    
$option_bit=$optionlines[0];
    
$TheField "<select size=\"$profilefield[size]\" name=\"action\" onchange=\"document.updatematrixform.submit();\">";
        while (
$option_bit) {
            
$option_bit=trim($option_bit);
            if (
$option_bit == $bbuserinfo[field6]) { $LocOn "selected"; } else { $LocOn ""; }
            
$TheField .= "<option value=\"$option_bit\" $LocOn>$option_bit</option>";
            
$option_bit=next($optionlines);
    }
    
$TheField .= "</select>";

    if (
$HTTP_POST_VARS['action']=="updatematrix") {
    
$templatesused 'redirect_updatethanks';
    include(
"./global.php");
    
$DB_site->query("UPDATE userfield SET field6=$bbuserinfo[field6] WHERE userid=$bbuserinfo[userid]");
    eval(
"standardredirect(\"".gettemplate("redirect_updatethanks")."\",\"index.php?s=$session[sessionhash]\");");
    } 
The first part of that code works like a charm. I edited it a little but it is from Mutt's hack to create Dropdown fields. Anyway, this generates a dropdown with the correct fields and displays the correct current state of the [field6]. I think it's the second part of the code that's screwed up.

This is my forumhome_logoutcode template where I want this field to show up:

Code:
<form action="index.php" name="updatematrixform" method="post">
$TheField
<input type="hidden" name="action" value="updatematrix">
</form>
Anyway, the field shows up but I don't know how to update the database and redirect back to index.php.

Any help would be awesome, or just a hint.

Thanks
Reply With Quote
  #2  
Old 02-25-2003, 06:17 AM
Nomb's Avatar
Nomb Nomb is offline
 
Join Date: Nov 2002
Location: Phoenix, AZ
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, I think I've improved the code ...

I figured I'd forget the onchange event for now and just see if I can update the database with a submit button. Here's my code:

PHP Code:
      $profilefield=$DB_site->query_first("SELECT title,description,required,hidden,maxlength,size,displayorder,editable,type,options
                                           FROM profilefield
                                           WHERE profilefieldid=6"
);
    
$TheField="";
    
$optionlines explode(','$profilefield[options]);
    
$option_bit=$optionlines[0];
    
$TheField "<select size=\"$profilefield[size]\" name=\"field6\">";
        while (
$option_bit) {
            
$option_bit=trim($option_bit);
            if (
$option_bit == $bbuserinfo[field6]) { $LocOn "selected"; } else { $LocOn ""; }
            
$TheField .= "<option value=\"$option_bit\" $LocOn>$option_bit</option>";
            
$option_bit=next($optionlines);
    }
    
$TheField .= "</select>";

    if (
$HTTP_POST_VARS['action']=="Update Matrix") {
    
$templatesused 'redirect_updatethanks';
      
$DB_site->query("UPDATE userfield SET field6=field6 WHERE userid=$bbuserinfo[userid]");
    eval(
"standardredirect(\"".gettemplate("redirect_updatethanks")."\",\"index.php?s=$session[sessionhash]\");");
    } 
Look at the last query in that code. I don't know how to update "field6" with the current state of the select box. In other words, I choose "Blue" in my select box and then I hit submit. What variable should I use to pass "Blue" into the database?
Reply With Quote
  #3  
Old 02-25-2003, 11:00 PM
Nomb's Avatar
Nomb Nomb is offline
 
Join Date: Nov 2002
Location: Phoenix, AZ
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, it looks like optionlines is an array. How do I know which array element the user chose from the dropdown?
Reply With Quote
  #4  
Old 02-25-2003, 11:03 PM
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Posts: 7,604
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Instead of all the above, just make the form call another PHP file that runs the query that adds the value to the custom profile field. So no need PHP edits, just edit the template, and then upload a new PHP file. It definitely works because I have something similar set up.
Reply With Quote
  #5  
Old 02-25-2003, 11:19 PM
Nomb's Avatar
Nomb Nomb is offline
 
Join Date: Nov 2002
Location: Phoenix, AZ
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That sounds good. But I'm still unsure about how to update the database with the current state of the dropdown. ?
Reply With Quote
  #6  
Old 02-25-2003, 11:54 PM
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Posts: 7,604
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Don't use the automatic dropdown. Make it up manually, then add it as HTML to the template. The form should call the other php file.
Reply With Quote
  #7  
Old 02-26-2003, 12:28 AM
Nomb's Avatar
Nomb Nomb is offline
 
Join Date: Nov 2002
Location: Phoenix, AZ
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, I see what you're saying. But I still am confused about how I get the current state of the dropdown to be passed into the database.

Now, I have a php file xxx.php:

PHP Code:
<?php
error_reporting
(7);

require(
'./global.php');

// The Matrix!!!

    
if ($HTTP_POST_VARS['action']=="Update Matrix") {
    
$templatesused 'redirect_updatethanks';
      
$DB_site->query("UPDATE userfield SET field6=field6 WHERE userid=$bbuserinfo[userid]");
    eval(
"standardredirect(\"".gettemplate("redirect_updatethanks")."\",\"index.php?s=$session[sessionhash]\");");
    }

// The Matrix!!!
?>
And my template looks like this:

Code:
<form action="matrix.php" name="updatematrixform" method="post">
<select size="1" name="field6"><option value="TheValue" >TheValue</option><option value="TheValue1" >TheValue1</option><option value="TheValue2">TheValue2</option><option value="TheValue3">TheValue3</option></select>
<br>
<input type="submit" name="action" value="Update Matrix">
</form>
So, when I hit the submit button it processes the php file correctly and redirects me to the updatethanks template and then back to index.php. What it "does not" do is update the mysql with what ever I've chosen from the drop down. That is the problem.
Reply With Quote
  #8  
Old 02-26-2003, 12:36 AM
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Posts: 7,604
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Replace this:

PHP Code:
$DB_site->query("UPDATE userfield SET field6=field6 WHERE userid=$bbuserinfo[userid]"); 
with this:

PHP Code:
$DB_site->query("UPDATE userfield SET field6=$field6 WHERE userid=$bbuserinfo[userid]"); 
You forgot the $.
Reply With Quote
  #9  
Old 02-26-2003, 04:14 AM
Nomb's Avatar
Nomb Nomb is offline
 
Join Date: Nov 2002
Location: Phoenix, AZ
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Kickass!! That did it man, thanks a lot.
Reply With Quote
  #10  
Old 02-27-2003, 07:18 AM
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Posts: 7,604
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You're welcome!
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 12:09 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.04399 seconds
  • Memory Usage 2,291KB
  • 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
  • (2)bbcode_code
  • (5)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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