Join the Stack Overflow Community
Stack Overflow is a community of 6.4 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

I looked at many other questions, but I can't find my own answer in it. here is my syntax error (unexpeted T_IF):

while(($rij1 = mysql_fetch_object($result1))
and( if ($voornaam=NULL) {
            $rij2 = ' ';}
elseif($voornaam!=NULL){
            $rij2 = mysql_fetch_object($result2);})

I looked at the line before the syntax, but I couldn't find what is wrong... Does someone know it?

share|improve this question

closed as too localized by j08691, hakre, Mike B, tereško, Peter O. Nov 9 '12 at 22:32

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
What's with the and and if there? and expects expressions as its operands, not statements. What are you trying to do? – Felix Kling Nov 9 '12 at 21:08
    
Please, don't use mysql_* functions in new code. They are no longer maintained and the deprecation process has begun on it. See the red box? Learn about prepared statements instead, and use PDO or MySQLi - this article will help you decide which. If you choose PDO, here is a good tutorial. – tereško Nov 9 '12 at 21:24
up vote 3 down vote accepted

Try rewriting your code as:

while ($rij1 = mysql_fetch_object($result1))
{
    if ($voornaam === NULL) 
    {
        $rij2 = ' ';
    } 
    else
    {
        $rij2 = mysql_fetch_object($result2);
    }
}

Edit: Corrected your condition in the first if, as @andrewsi spotted - = is an assignment operator, so previously your code was changing $voornaam to NULL, then checking if the result evaluated to true (which, of course, it never would - so the second block would always execute)

In your original code, you're using the and operator - presumably having seen it used in some well meaning but poorly coded examples like mysql_connect(...) or die('an error occurred');.

What's happening in that example is that the result of the first statement - mysql_connect() - is checked. If it evaluates to true, the second statement never executes, but if it evaluates to false then the second statement - die('an error occurred'); - is executed. As you've just discovered, this pattern is confusing and best avoided.

share|improve this answer
2  
The if statement should be if ($voornaam==NULL) { – andrewsi Nov 9 '12 at 21:07
    
+1 Proper indenting makes code so much more readable – Arjan Nov 9 '12 at 21:09
    
thank you all, haha sorry I don't do this often... But now I got a syntax error on line 22, an unexpected '{' (line 22 is the first line here) – user1813397 Nov 9 '12 at 21:12
    
@user1813397 Your code also had an extraneous ( in the while statement, which caused that error - I've removed it in my latest edit. – Kelvin Nov 9 '12 at 21:16
1  
@KelvinMackay: The else-if was sense-less (always true), also compare with NULL with === three. If you keep some little space in there, it's more clear. Just for the code here, you don't need to write code that way at home. – hakre Nov 9 '12 at 21:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.