Re: mysql_fecth_array() and function call as parameter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I finally got the function to work.  However I have a problem with
another function.  It is almost exactly like the origional function
but in this function I am determining the days instead of the month. 
I made the same changes to the days function as I did to the month
function.  However no value is being set to be returned. I can't find
my error. My function is below:

function determineDay ()
	{
		$return = "";
		$query1 = mysql_query("SELECT months FROM Month WHERE m_id =
month(curdate())");
		$query2 = mysql_query("SELECT dayNum FROM Days WHERE dayNum =
day(curdate())");
		$query3 = mysql_query("SELECT year FROM Year WHERE year = year(curdate())");
		
		$query1_data = mysql_fetch_assoc($query1);
		$query2_data = mysql_fetch_assoc($query2);
		$query3_data = mysql_fetch_assoc($query3);
		
		switch ($query1_data["months"])
		{
			case "January":
			case "March":
			case "May":
			case "July":
			case "August":
			case "October":
			case "December":
				if ($query2_data["dayNum"] == 31)
					$return .= "SELECT dayNum FROM Days";
				else
					$return .= "SELECT dayNum FROM Days WHERE dayNum >= day(curdate()) +1";
			break;
			case "February":
				if ($query2_data["dayNum"] == 28 || $query2_data["dayNum"] == 29)
				{
					if ($query2_data["dayNum"] == 28)
						$return .= "SELECT dayNum FROM Days WHERE dayNum <= 28";
					else
						$return .= "SELECT dayNum FROM Days WHERE dayNum <= 29";
				}
				else
				{
					if (($query3_data["year"] % 4 == 0) &&($query3_data["year"] % 100
!= 0 || $query3_data["year"] % 400 == 0))
						$return .= "SELECT dayNum FROM Days WHERE dayNum >=
day(curdate()) +1 AND dayNum <=28";
					else
						$return .= "SELECT dayNum FROM Days WHERE dayNum >=
day(curdate()) +1 AND dayNum <=29";
				}
			break;
			case "April":
			case "June":
			case "September":
			case "November":
				if ($query2_data["dayNum"] == 30)
					$return .= "SELECT dayNum FROM Days WHERE dayNum <= 30";
				else
					$return .= "SELECT dayNum FROM Days WHERE dayNum >=
day(curdate())+1 AND dayNum <= 30";
			break;
		}
		return $return;
	}

Here is the code for where I output the contents of the query

	$day = $this->determineDay();
	$Day_query = mysql_query($day);
	while ($a = mysql_fetch_assoc($Day_query))
	{
		$form .=" <option value={$a["dayNum"]}>{$a["dayNum"]}</option>\n";
	}
	$form .="					</select>\n";

If anyone can find my error please let me know.  I have looked at this
for about an hour and I can't figure it out.

Thanks,

Paul
On 3/27/06, Brady Mitchell <bradym@xxxxxxxxxxx> wrote:
> > I have done the following to my code hoping that the fix would work
> >
> > $query1 = mysql_query("SELECT months FROM Month WHERE m_id =
> month(curdate())");
> > //echo $query1 . "<br />";
> >
> > $query1_data = mysql_fetch_assoc($query1);
> >               echo $query1_data . "<br />";  returns Array
> > (The word that is)
>
> Use:  print_r($query1_data) or var_dump($query1_data) to see everything
> in the array.  If you want to use echo, you'd have to echo each index of
> the array one at a time with something like:  echo $query1_data[0];
>
> http://php.net/echo
> http://php.net/print_r
> http://php.net/var_dump
>
> > switch ($query1_data)
> > {
>
> You can't switch on an entire array.  Switch is used to check the value
> of a variable (which could be an index of the array, but not the entire
> array).
>
> Something like this should work:
>
> switch($query1_data[months])
> {
>
> }
>
> http://php.net/switch
>
> In your original posting you have lines like the following in your
> switch statement:
>
> > if($query2 == 31)
>
> As someone mentioned, mysql_query returns a resource ID, you then have
> to use mysql_fetch_assoc (or one of the other mysql_fetch_* functions)
> to get an array that you can use as you are trying to do.
>
> So after doing:  $query2_data = mysql_fetch_assoc($query2);
>
> You could do:  if($query2_data[dayNum] == 31)
>
> In your switch statement you are checking for the full name of the
> month, but your query will be returning the month number.  Since you
> don't have a default case on your switch statement, $return is never
> being set, so " $month = $this->determineMonth(); " is not setting
> $month to anything, which is why you are getting error messages.
>
> http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
>
> Brady
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux