PDA

View Full Version : Getting URL out of submission code


Mark.B
04-13-2009, 07:45 PM
In another thread there has been some discussion of creating a style chooser dropdown that actually updates the member's profile details.

We have achieved that part of it ok.

It works like the existing style chooser, from a drop down list that then refreshes the page.

That works fine, but I would *also* like to get a URL equivalent to the dropdown that achieves the same thing. This will be for use in the postbit where I have an entry showing people's style as a clickable link.

The submit code being used in the php file is this:
if ($_POST['do'] == 'updateoptions')
{
if ($show['member']){

$vbulletin->input->clean_array_gpc('p', array('newstyleset' => TYPE_INT));

$userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD);
$userdata->set_existing($vbulletin->userinfo);

// style set
if ($vbulletin->options['allowchangestyles'] AND $vbulletin->userinfo['realstyleid'] != $vbulletin->GPC['newstyleset'])
{
$userdata->set('styleid', $vbulletin->GPC['newstyleset']);
}

($hook = vBulletinHook::fetch_hook('profile_updateoptions') ) ? eval($hook) : false;
$userdata->save();
}
else {
exec_header_redirect("../index.php?");
}
}

And the HTML in the template is this:

<input type="hidden" name="s" value="" />
<input type="hidden" name="do" value="updateoptions" />
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" />
<select class="forumselector" name="newstyleset" id="sel_newstyleset" onchange="this.form.submit()";>
<optgroup label="$vbphrase[quick_style_chooser]">
$quickchooserbits
</optgroup>
</select>

Could someone let me know if it's possible to submit this form via a clickable URL? Or failing that, a submit button would do.... And if so what the syntax is?

Lynne
04-13-2009, 08:09 PM
I don't believe you will be able to use the form in the postbit - or at least not for moderators or admins. You can't have a form within a form and for mods and admins, all the posts are located within a form for use in the Moderation dropdown at the bottom of the page. I suppose you could put a condition and if it's a mod/admin, you can have a link to go to another page which has the form.

Mark.B
04-13-2009, 08:25 PM
Ah, I never thought of that. Thanks Lynne.

Do you know the URL format anyway? As I could also use it on THIS (http://www.bowlandcentral.com/forum/styles.php?) page which lists all my styles in thumbnail form. A link or button below each one is what I'd like.

No forms on this page, it's just generated with static html.

Lynne
04-13-2009, 08:33 PM
I'm not sure I completely understand what you want. You just want to get the current page url so you can add the styleid=x to the end of it to get the style to change? Google gives me this - PHP: How to Get the Current Page URL (http://www.webcheatsheet.com/PHP/get_current_page_url.php)

Mark.B
04-13-2009, 09:04 PM
Well, I sort of want a URL (or a button) that people could click to submit the form.
For this one I was thinking along the lines of a URL like:

myprofile.php?do=updateoptions&newstyleset=114

However that doesn't work!

Failing that, I've been trying to convert the dropdown in the submission form into a button, but no joy there either!

Lynne
04-13-2009, 10:08 PM
Well, you realize that doing it via a link is a GET, not a POST, right?

Mark.B
04-13-2009, 10:13 PM
To be honest, no...I'm a bit out of what I'm comfortable with here.

I'm quite willing to accept it's not actually possible to this.

Alternatively I could modify the "myprofile" file that's used here and call it myprofile2 or something.

But a button would do just as well as a link...that would still be a POST presumably? But I'm struggling to make that work. It seems to load the page and redirect ok, but doesn't actually change the style.

Lynne
04-13-2009, 10:18 PM
If you have a form, and you set the do parameter in the form (<input type="hidden" name="do" value="updateoptions" /> ), then using "if ($_POST['do'] == 'updateoptions')" would be appropriate. However, if you are sending the do variable ONLY via the url - myprofile.php?do=updateoptions&newstyleset=114 - then $_POST['do'] is not valid, you must change that line to use $_GET['do']. If using a button, as per the template you posted, then the condition using $_POST['do'] is valid.

Mark.B
04-13-2009, 11:09 PM
Thanks Lynne, that's sorted it, I have managed to do it using buttons.