vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Calling a form (https://vborg.vbsupport.ru/showthread.php?t=49332)

Nomb 02-25-2003 03:35 AM

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 :)

Nomb 02-25-2003 06:17 AM

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?

Nomb 02-25-2003 11:00 PM

OK, it looks like optionlines is an array. How do I know which array element the user chose from the dropdown?

Erwin 02-25-2003 11:03 PM

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.

Nomb 02-25-2003 11:19 PM

That sounds good. But I'm still unsure about how to update the database with the current state of the dropdown. ?

Erwin 02-25-2003 11:54 PM

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.

Nomb 02-26-2003 12:28 AM

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.

Erwin 02-26-2003 12:36 AM

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 $. :)

Nomb 02-26-2003 04:14 AM

Kickass!! That did it man, thanks a lot. :D

Erwin 02-27-2003 07:18 AM

You're welcome! :)


All times are GMT. The time now is 07:33 AM.

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.01062 seconds
  • Memory Usage 1,768KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (5)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete