View Full Version : SOLVED. - formulating a if sentence
Vaupell
02-03-2009, 10:37 AM
NO ERRORS ANYMORE READ LAST AREA :P
############################# original post ###############
hmm getting a parse error in this snippit
$vbulletin->input->clean_gpc('r', 'invitation', TYPE_NOHTML);
if ($vbulletin->GPC['invitation']){$invitegroupid = $db->query_first_slave("SELECT NewusergroupID FROM " . TABLE_PREFIX . "vbinvitationcode WHERE invitation = " . $db->escape_string($vbulletin->GPC['InvitationCODE'])}
{
$userdata->set('usergroupid', $invitedgroupid);
}
else
{
$userdata->set('usergroupid', $newusergroupid);
}
Things i suspect, is that
{} dont fit in the if (){} ?
and not really sure that else can be used here, maybe ?
bananalive
02-03-2009, 10:52 AM
You've got
if () {}
{
}
else
{
}
when it should be
if (){
}
else
{
}
Marco van Herwaarden
02-03-2009, 11:00 AM
Something like:
$vbulletin->input->clean_gpc('r', 'invitation', TYPE_NOHTML);
if ($vbulletin->GPC['invitation'])
{
$invitegroupid = $db->query_first_slave("SELECT NewusergroupID FROM " . TABLE_PREFIX . "vbinvitationcode WHERE invitation = '" . $db->escape_string($vbulletin->GPC['InvitationCODE'] . "'");
$userdata->set('usergroupid', $invitedgroupid);
}
else
{
$userdata->set('usergroupid', $newusergroupid);
}
But just guessing. If you need more assistence, please also post the error message.
Vaupell
02-03-2009, 11:18 AM
all it says is parse error, ewen with "show http errors" enabled in ie.
Parse error: parse error in D:\xampp\htdocs\forums\invitationcode.php on line 364
that line is the excakt like where this if takes place
the file is a copy of register and in the template on submit it submits to
invitationcode.php instead of register.php
a db view attached
93985
Vaupell
02-03-2009, 03:31 PM
okay some guy told me i cannot use the else statment there,
when i look around the document i see it buildt excaktly like that.
but if i exclude the else statement,
how can i make sure all that is not "true" here are changed to $newusergroupid
?
Ted S
02-03-2009, 05:01 PM
The else statement is fine. Just follow the code Marco van Herwaarden posted and you'll be in good shape.
Vaupell
02-03-2009, 05:21 PM
still getting error
Parse error: parse error in D:\xampp\htdocs\forums\invitationcode.php on line 363
Gonna try it on a live server, if the code is correct maybe its the server
using php 5.2.8 / mysql 5.1.3 and latest apache release.
but it might be missing a module just running of the install, no special modifications made.
OMG..
now im gonna take a brake, now i just learned it DOSENT execute install query when installing
$db->hide_errors();
$vbulletin->db->query_write("
CREATE TABLE IF NOT EXISTS `". TABLE_PREFIX ."vbinvitationcode` (
`codedbID` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`InvitationCODE` VARCHAR(100) NOT NULL,
`NewusergroupID` VARCHAR(100) NOT NULL,
");
$db->show_errors();
i have also made a drop for the uninstall, but that proberly wont work either.
where does it instruct me, on how to execute a query dureing install,
cant find it in the manual, so simply put it in the install code box.
refering to : http://www.vbulletin.com/docs/html/creating_a_product
off to a brake before i blow up.
--------------- Added 1233706418 at 1233706418 ---------------------------------------------
#########################################EDIT UPDATE BELOW#########################
okay a little update here..
current if statement :$vbulletin->input->clean_gpc('r', 'invitation', TYPE_NOHTML);
if ($vbulletin->GPC['invitation'])
{
$invitegroupid = $db->query_first_slave("SELECT NewusergroupID FROM " . TABLE_PREFIX . "vbinvitationcode WHERE '" . $db->escape_string($vbulletin->GPC['invitation'] . "' = InvitaionCODE");
$userdata->set('usergroupid', $invitedgroupid);
}
else
{
$userdata->set('usergroupid', $newusergroupid);
}
how can if ($vbulletin->GPC['invitation']) <-- do anything
shoundt there be a "if ($vbulletin->GPC['invitation'] = content )
cause if i enter "lol1" as invitation code on registration, then the it would say
if (lol1)
{}
else
{}
dosent it just skib the entire if ? since if will never be true, the SQL query just gets the data
but only if "if" is true.
reference of this : http://www.w3schools.com/php/php_if_else.asp
Im thinking maybe run the query :
$sql = select * InvitationCODE from vbinvitation
if $sql <>
{
set usergroup standard
}
else
{
$newgroupid = select newusergroupID from vbinvitation where $sql = invitation
set usergroupid newgruopid
}
i know its missing alot but its a draft
************************************************** ****SOLVED***************************************
Its not working, but it dosent promt with erros anymore :P
//
if ($vbulletin->GPC['invitation'])
{
$invitegroupid = $db->query_read_slave("
SELECT NewusergroupID
FROM " . TABLE_PREFIX . "vbinvitationcode
WHERE InvitationCODE = '" . $db->escape_string($vbulletin->GPC['invitation']) . "'"
);
$userdata->set('usergroupid', $invitedgroupid);
}
else
{
$userdata->set('usergroupid', $newusergroupid);
}
Dismounted
02-04-2009, 05:09 AM
$invitegroupid, as it stands right now, will return an array. And will not work as you want it to. You want to use $invitegroupid['NewusergroupID'].
how can if ($vbulletin->GPC['invitation']) <-- do anything
shoundt there be a "if ($vbulletin->GPC['invitation'] = content )
The first will check if a value is true. True being one that is not null, not an empty array or string, or the integer 0 (a string that is "0" is not true). The second will actually assign the constant "content" (you were probably meaning to use the string, not the constant) to the variable. You were looking for the equivalence operator "==". This checks if the two values are the same (note that it will not check type).
Vaupell
02-04-2009, 07:21 AM
$invitegroupid, as it stands right now, will return an array. And will not work as you want it to. You want to use $invitegroupid['NewusergroupID'].
The first will check if a value is true. True being one that is not null, not an empty array or string, or the integer 0 (a string that is "0" is not true). The second will actually assign the constant "content" (you were probably meaning to use the string, not the constant) to the variable. You were looking for the equivalence operator "==". This checks if the two values are the same (note that it will not check type).
yeah that did the trick, now i went from a specifik line error to a db error
possebly something wrong with the SELECT
so i checked it in Navicat entered the SELECT and it gave me an error.
DB looks like :
94094
But the Query errrors 1054 :
94095
usercode is the userimput, gonna try to exchange places between InvitationCODE(colum) and imput, so it says imput = colum,,
currently i have Colum = imput.. ill ofcourse report back :p :rolleyes:
EDIT : lol well yeah adding '' helps.. result to the original line :
94096
just wondering why it dosent check out in vb then..
EDIT 2 :
okay now the code runs through error less..
but aparently dosent check / modify usergroup id.. lol
?????????????????????????????????????????????????? ?????????????????? EDIT 3 :
FULL UPDATE CURRENT CODE running, not working, but no errors either :
Invitationcode.php (modifyed copy of register.php)
around line 212-230 added type
'invitation' => TYPE_STR,
line 362 ish right after coppa selection
$vbulletin->input->clean_gpc('r', 'invitation', TYPE_NOHTML);
if ($vbulletin->GPC['invitation'])
{
$invitegroupid = $db->query_first_slave("
SELECT NewusergroupID
FROM " . TABLE_PREFIX . "vbinvitationcode
WHERE InvitationCODE = '" . $vbulletin->GPC[COOKIE_PREFIX . 'invitation'] . "'");
$userdata->set('usergroupid', $invitegroupid['NewusergroupID']);
}
if (empty($user['usergroupid']))
{
$userdata->set('usergroupid', $newusergroupid);
}
This runs through but does not change the usergroup ID.
however if i replace the if statement with the original code it DOES change
the usergroup.. but no DB selection.
if ($vbulletin->GPC['invitation'] == 'awsome')
{
$userdata->set('usergroupid', '5');
}
else
{
$userdata->set('usergroupid', $newusergroupid);
}
################################################## ################################################## #################################### EDIT 4 ################################
Okay moved it all into the existing code for makering usergroups
and it runs smooth, but it still dosent place users in the group
only does "standard behavior" going back to the idea IF dont work as intended
Current usergroupID placement :
// assign user to usergroup 3 if email needs verification
$vbulletin->input->clean_gpc('r', 'invitation', TYPE_NOHTML);
if ($vbulletin->options['verifyemail'])
{
$newusergroupid = 3;
}
else if ($vbulletin->options['moderatenewmembers'] OR $vbulletin->GPC['coppauser'])
{
$newusergroupid = 4;
}
else if ($vbulletin->GPC['invitation'])
{
$invitegroupid = $db->query_first_slave("
SELECT NewusergroupID
FROM " . TABLE_PREFIX . "vbinvitationcode
WHERE InvitationCODE = '" . $vbulletin->GPC[COOKIE_PREFIX . 'invitation'] . "'");
$userdata->set('usergroupid', $invitegroupid['NewusergroupID']);
}
else
{
$newusergroupid = 2;
}
But again if i does this it works, but no db :( :
if ($vbulletin->GPC['invitation'] == 'awsome')
{
$userdata->set('usergroupid', '5');
}
help
Changeing DB table name from NewusergroupID to NUGUID im suspecting interference
between the "other" $newusergroupid used in the same page.
Vaupell
02-04-2009, 04:03 PM
YES EFFING YES,,
it works.. yay.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.