Link to home
Start Free TrialLog in
Avatar of mappenzellar
mappenzellar

asked on

query and if statement won't work

Ok. I am looping through the numbers 1 - 31. I have a url variable called month. I have a query and statement that should be like.....if date = '12/5' then link number otherwise, don't link number. For example there is a 12/5 in the database and the url month=12, but right now everything is linking. Here is the code, but something isn't right:

$count = 1;
while ($count <=31)
{
     $sql = "SELECT id from oldies_history where date = '$_REQUEST[month]/$count'";
     $ok = @mysql_query($sql);
          if (!@ok)
               {
                    echo("$count&nbsp;&nbsp;");
               }
          else
              {
                   echo( "<a href='edit_history_detail.php?month=$_REQUEST[month&day=$count'>$count</a></li>&nbsp;&nbsp;" );
              }                              
     $count++;
}
Avatar of arjanh
arjanh

try changing
          if (!@ok)
into
          if (! $ok)
Avatar of mappenzellar

ASKER

nope caught that, but still no go
$ok = @mysql_query($sql);

the '@' is masking all errors I think, so try

$ok = mysql_query($sql);
ASKER CERTIFIED SOLUTION
Avatar of arjanh
arjanh

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I believe that when you put arrays directly into strings you have to put braces around them. eg "{$_REQUEST['month']}"

On an aside, you should really put your input through mysql_escape_string(), before sending it to the database.

mysql_query will return a value even if no rows are returned.
If you want to see if a row was returned use mysql_num_rows($result) // where $result is what is returned from mysql_query().

you should be using the if($ok) for error checking, since if it returns false(or 0), you generally have a problem. You shouldn't be using it to check if a row exists, because quite simply that is not how it works.

You also didn't close the square bracket in your altenative option.

I think you are trying to find all the rows with that date, but I'm not quite sure.

I've made a few changes to your code.

$count = 1;
for($count = 1; $count <=31; ++$count) {
     $sql = "SELECT id from oldies_history where date = '{$_REQUEST['month']}/$count'";
     $ok = mysql_query($sql);
     if(!$ok){
        die(sprintf("Query Failed: %s\n", mysql_error());
     }

     $date_exists = mysql_num_rows($ok);
          if (!$date_exists)
               {
                    echo("$count&nbsp;&nbsp;");
               }
          else
              {
                   echo( "<a href='edit_history_detail.php?month={$_REQUEST['month']}&day=$count'>$count</a></li>&nbsp;&nbsp;" );
              }
}