Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Need help with a code

Status
Not open for further replies.

WizyWyg

Technical User
Jan 31, 2001
854
JP
Okay, I can't figure out how to use the new code. This will be a a little long

Code:
// Defined functions
//--------------------------

function get_param($param_name)
{
  global $HTTP_POST_VARS;
  global $HTTP_GET_VARS;

  $param_value = "";
  if(isset($HTTP_POST_VARS[$param_name]))
    $param_value = $HTTP_POST_VARS[$param_name];
  else if(isset($HTTP_GET_VARS[$param_name]))
    $param_value = $HTTP_GET_VARS[$param_name];

  return $param_value;
}

function tosql($value, $type)
{
  if(!strlen($value))
    return "NULL";
  else
    if($type == "Number")
      return str_replace (",", ".", doubleval($value));
    else
    {
      if(get_magic_quotes_gpc() == 0)
      {
        $value = str_replace("'","''",$value);
        $value = str_replace("\\","\\\\",$value);
      }
      else
      {
        $value = str_replace("\\'","''",$value);
        $value = str_replace("\\\"","\"",$value);
      }

      return "'" . $value . "'";
    }
}


//===============================
// Action of the Record Form
//-------------------------------
function event_action($sAction)
{
  global $db;
  global $tpl;
  global $sForm;
  global $seventErr;
  $bExecSQL = true;
  $sActionFileName = "";
  $sParams = "?";
  $sWhere = "";
  $bErr = false;
  $pPKeventid = "";
  $fldevent_title = "";
  $fldevent_desc = "";
  $fldevent_start = "";
  $fldevent_end = "";
  $fldWNDate = "";
  $fldroomid = "";
  $fldteam = "";
  $flduserid = "";
  $fldtype = "";

// event CustomAction Event begin
//-------------------------------
  $sActionFileName = "admin_eventadd.php";
  $sParams .= "eventid=" . urlencode(get_param("Trn_eventid"));


// CANCEL action
//-------------------------------
  if($sAction == "cancel")
  {
	header("Location: admin_event.php");
    exit;
  }


// Build WHERE statement
//-------------------------------
  if($sAction == "update" || $sAction == "delete") 
  {
    $pPKeventid = get_param("PK_eventid");
    if( !strlen($pPKeventid)) return;
    $sWhere = "eventid=" . tosql($pPKeventid, "Number");
  }


// Load all form fields into variables
//-------------------------------
  $fldevent_title = get_param("event_title");
  $fldevent_desc = get_param("event_desc");
  $fldevent_start = get_param("event_start");
  $fldevent_end = get_param("event_end");
  $fldWNDate = get_param("WNDate");
  $fldroomid = get_param("roomid");
  $fldteam = get_param("team");
  $flduserid = get_param("userid");
  $fldtype = get_param("type");

// Validate fields
//-------------------------------
  if($sAction == "insert" || $sAction == "update") 
  {
    if(!strlen($fldevent_title))
      $seventErr .= &quot;The value in field Name is required.<br>&quot;;
    
    if(!strlen($fldevent_desc))
      $seventErr .= &quot;The value in field Description is required.<br>&quot;;
    
    if(!strlen($fldevent_start))
      $seventErr .= &quot;The value in field Start is required.<br>&quot;;
    
    if(!strlen($fldevent_end))
      $seventErr .= &quot;The value in field End is required.<br>&quot;;
    
    if(!strlen($fldWNDate))
      $seventErr .= &quot;The value in field Date is required.<br>&quot;;
    
    if(!strlen($fldroomid))
      $seventErr .= &quot;The value in field Room is required.<br>&quot;;
    
    if(!strlen($fldteam))
      $seventErr .= &quot;The value in field Team is required.<br>&quot;;
    
    if(!strlen($flduserid))
      $seventErr .= &quot;The value in field Posted By is required.<br>&quot;;
    
    if(!is_number($fldroomid))
      $seventErr .= &quot;The value in field Room is incorrect.<br>&quot;;
    
    if(!is_number($fldteam))
      $seventErr .= &quot;The value in field Team is incorrect.<br>&quot;;
    
    if(!is_number($flduserid))
      $seventErr .= &quot;The value in field Posted By is incorrect.<br>&quot;;
    
    if(strlen($seventErr)) return;
  }

// Create SQL statement
//-------------------------------
  switch(strtolower($sAction)) 
  {
    case &quot;insert&quot;:
	$formated_datetime = &quot;$fldWNDate $fldevent_start&quot;;
	$fldevent_start = strtotime($formated_datetime);

	$formated_datetime2 = &quot;$fldWNDate $fldevent_end&quot;;
	$fldevent_end = strtotime($formated_datetime2);

	 if ($sSQL == &quot;&quot;)
      {
        $sSQL = &quot;insert into event (&quot; . 
          &quot;event_title,&quot; . 
          &quot;event_desc,&quot; . 
          &quot;event_start,&quot; . 
          &quot;event_end,&quot; . 
          &quot;event_date,&quot; . 
          &quot;roomid,&quot; . 
          &quot;team,&quot; . 
          &quot;userid,&quot; . 
          &quot;type)&quot; . 
          &quot; values (&quot; . 
          tosql($fldevent_title, &quot;Text&quot;) . &quot;,&quot; . 
          tosql($fldevent_desc, &quot;Memo&quot;) . &quot;,&quot; . 
          tosql($fldevent_start, &quot;Text&quot;) . &quot;,&quot; . 
          tosql($fldevent_end, &quot;Text&quot;) . &quot;,&quot; . 
          tosql($fldWNDate, &quot;Date&quot;) . &quot;,&quot; . 
          tosql($fldroomid, &quot;Number&quot;) . &quot;,&quot; . 
          tosql($fldteam, &quot;Number&quot;) . &quot;,&quot; . 
          tosql($flduserid, &quot;Number&quot;) . &quot;,&quot; . 
          tosql($fldtype, &quot;Text&quot;) . 
          &quot;)&quot;;
      }
    break;
    case &quot;update&quot;:
	
	$formated_datetime = &quot;$fldWNDate $fldevent_start&quot;;
	$fldevent_start = strtotime($formated_datetime);

	$formated_datetime2 = &quot;$fldWNDate $fldevent_end&quot;;
	$fldevent_end = strtotime($formated_datetime2);

      if($sSQL == &quot;&quot;)
      {
        $sSQL = &quot;update event set &quot; .
          &quot;event_title=&quot; . tosql($fldevent_title, &quot;Text&quot;) .
          &quot;,event_desc=&quot; . tosql($fldevent_desc, &quot;Memo&quot;) .
          &quot;,event_start=&quot; . tosql($fldevent_start, &quot;Text&quot;) .
          &quot;,event_end=&quot; . tosql($fldevent_end, &quot;Text&quot;) .
          &quot;,event_date=&quot; . tosql($fldWNDate, &quot;Date&quot;) .
          &quot;,roomid=&quot; . tosql($fldroomid, &quot;Number&quot;) .
          &quot;,team=&quot; . tosql($fldteam, &quot;Number&quot;) .
          &quot;,userid=&quot; . tosql($flduserid, &quot;Number&quot;) .
          &quot;,type=&quot; . tosql($fldtype, &quot;Text&quot;);
        $sSQL .= &quot; where &quot; . $sWhere;
      }
    break;
  }

// Execute SQL statement
//-------------------------------
  if(strlen($seventErr)) return;
  if($bExecSQL)
    $db->query($sSQL);
  switch($sAction)
  {
    case &quot;insert&quot;:

// event AfterInsert Event begin

$last = mysql_insert_id ();
$sParams .= $last; 

// event AfterInsert Event end

    break;
  }
  header(&quot;Location: &quot; . $sActionFileName . $sParams);
  exit;
//-------------------------------
// event CustomAction Event end
//-------------------------------
}



I know that my new code will have to be:

Code:
$sql = &quot;SELECT COUNT(*) FROM event WHERE ($fldevent_start BETWEEN event_start AND event_end) OR ($fldevent_end BETWEEN event_start AND event_end) AND roomid=$fldroomid;&quot;; 
$result = $db->query($sql);

so that it can return a result.
So essentially, how can I get it to do this:

Code:
if(mysql_num_rows($result) == 0) 
{ 
     mysql_query(&quot;insert into event (&quot; . 
          &quot;event_title,&quot; . 
          &quot;event_desc,&quot; . 
          &quot;event_start,&quot; . 
          &quot;event_end,&quot; . 
          &quot;event_date,&quot; . 
          &quot;roomid,&quot; . 
          &quot;team,&quot; . 
          &quot;userid,&quot; . 
          &quot;type)&quot; . 
          &quot; values (&quot; . 
          tosql($fldevent_title, &quot;Text&quot;) . &quot;,&quot; . 
          tosql($fldevent_desc, &quot;Memo&quot;) . &quot;,&quot; . 
          tosql($fldevent_start, &quot;Text&quot;) . &quot;,&quot; . 
          tosql($fldevent_end, &quot;Text&quot;) . &quot;,&quot; . 
          tosql($fldWNDate, &quot;Date&quot;) . &quot;,&quot; . 
          tosql($fldroomid, &quot;Number&quot;) . &quot;,&quot; . 
          tosql($fldteam, &quot;Number&quot;) . &quot;,&quot; . 
          tosql($flduserid, &quot;Number&quot;) . &quot;,&quot; . 
          tosql($fldtype, &quot;Text&quot;) . 
          &quot;)&quot;; 
} 
else { $error_message = &quot;There is already an event already scheduled. Please pick a different time and/or room&quot;; }

And make sure it re-displays the form?
 
Two notes, unrelated to the solution:

1. In your code you still have $http_POST_VARS. I think sleipnir214 pointed out before that PHP variable names are case sensitive.

2. If you use the SQL with the COUNT(*) then you will always get 1 row - it might hold the count of '0' zero.
Code:
if(mysql_num_rows($result) == 0)
will never be true.

You need:
Code:
 $row = mysql_fetch_row($result);
if ($row[0]==0) { ...etc.
 
DRJ , if it isn't true, then why does it work? It displays correctly when pulling information from the DB. Both if there is a reservation or not. Im just having trouble inserting my &quot;custom&quot; code into an already established code:

So, I tried this:

PHP:
//-------------------------------
// Create SQL statement
//-------------------------------
  switch(strtolower($sAction)) 
  {
    case &quot;insert&quot;:
//-------------------------------
// event Insert Event begin
$formated_datetime = &quot;$WNDate $event_start&quot;;
$fldevent_start = strtotime($formated_datetime);
$formated_datetime2 = &quot;$WNDate $event_end&quot;;
$fldevent_end = strtotime($formated_datetime2);

// custom sql
$sql = &quot;SELECT COUNT(*) FROM event WHERE ($fldevent_start BETWEEN event_start AND event_end) OR ($fldevent_end BETWEEN event_start AND event_end) AND roomid=$fldroomid;&quot;; 

$result = $db->query($sql);
if(mysql_num_rows($result) == 0) 
			{ 
			$sSQL = &quot;insert into event (&quot; . 
				&quot;event_title,&quot; . 
				&quot;event_desc,&quot; . 
				&quot;event_start,&quot; . 
				&quot;event_end,&quot; . 
				&quot;event_date,&quot; . 
				&quot;roomid,&quot; . 
				&quot;team,&quot; . 
				&quot;userid,&quot; . 
				&quot;type)&quot; . 
				&quot; values (&quot; . 
				tosql($fldevent_title, &quot;Text&quot;) . &quot;,&quot; . 
				tosql($fldevent_desc, &quot;Memo&quot;) . &quot;,&quot; . 
				tosql($fldevent_start, &quot;Text&quot;) . &quot;,&quot; . 
				tosql($fldevent_end, &quot;Text&quot;) . &quot;,&quot; . 
				tosql($fldWNDate, &quot;Date&quot;) . &quot;,&quot; . 
				tosql($fldroomid, &quot;Number&quot;) . &quot;,&quot; . 
				tosql($fldteam, &quot;Number&quot;) . &quot;,&quot; . 
				tosql($flduserid, &quot;Number&quot;) . &quot;,&quot; . 
				tosql($fldtype, &quot;Text&quot;) . 
				&quot;)&quot;; 
			} 
		else 
			{ 
			$seventErr .= &quot;<b><font color=\&quot;#FF0000\&quot;>There is already an event already scheduled. Please pick a different time and/or room</font></b>&quot;; 
			} 
		
// end custom sql
// event Insert Event end
//-------------------------------
    break;
    case &quot;update&quot;:

//-------------------------------
// event Update Event begin
$formated_datetime = &quot;$fldWNDATE $fldevent_start&quot;;
$fldevent_start = strtotime($formated_datetime);
//
$formated_datetime2 = &quot;$fldWNDATE $fldevent_end&quot;;
$fldevent_end = strtotime($formated_datetime2);
// event Update Event end
//-------------------------------
      if($sSQL == &quot;&quot;)
      {
        $sSQL = &quot;update event set &quot; .
          &quot;event_title=&quot; . tosql($fldevent_title, &quot;Text&quot;) .
          &quot;,event_desc=&quot; . tosql($fldevent_desc, &quot;Memo&quot;) .
          &quot;,event_start=&quot; . tosql($fldevent_start, &quot;Text&quot;) .
          &quot;,event_end=&quot; . tosql($fldevent_end, &quot;Text&quot;) .
          &quot;,event_date=&quot; . tosql($fldWNDate, &quot;Date&quot;) .
          &quot;,roomid=&quot; . tosql($fldroomid, &quot;Number&quot;) .
          &quot;,team=&quot; . tosql($fldteam, &quot;Number&quot;) .
          &quot;,userid=&quot; . tosql($flduserid, &quot;Number&quot;) .
          &quot;,type=&quot; . tosql($fldtype, &quot;Text&quot;);
        $sSQL .= &quot; where &quot; . $sWhere;
      }
    break;
  }
//-------------------------------

//-------------------------------
// Execute SQL statement
//-------------------------------
  if(strlen($seventErr)) return;
  if($bExecSQL)
    $db->query($sSQL);
  switch($sAction)
  {
    case &quot;insert&quot;:
//-------------------------------
// event AfterInsert Event begin
$last = mysql_insert_id ();
//append the value to the sParams variable. This should be done only if the record form has transfer input parameters
$sParams .= $last; 

// event AfterInsert Event end
//-------------------------------
    break;
  }
  header(&quot;Location: &quot; . $sActionFileName . $sParams);
  exit;
//-------------------------------
// event CustomAction Event end
//-------------------------------
[/code]


But no matter what I input, it displays the error message. Even if the &quot;time &quot; is open/free.
 
I don't know what extensions you use, but in standard MySQL/PHP use the following is never true:
Code:
$sql = &quot;SELECT COUNT(*) FROM myTable WHERE 0&quot;;
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {...

DRJ , if it isn't true, then why does it work?[\i]
Do you mean it is working now?


As I said before: COUNT() will always return a row. The row holds the result of the count. The result can be 0 (zero) or any positive number. That is what you need to inspect.

It displays correctly when pulling information from the DB.
WHat does it display?


Im just having trouble inserting my &quot;custom&quot; code into an already established code.
Which part is it that you refer to as the &quot;custom&quot; code?

Your answers will help me to answer to you.


 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top