Page 1 of 1

Call to Undefine Function Problem for Newie!

Posted: Tue Dec 07, 2004 4:52 pm
by mmc01ms
I keep getting the error

Code: Select all

Fatal error: Call to undefined function: in_use() in c:\program files\apache group\apache2\htdocs\register2.php on line 220
Im trying to call in a function from a class i have created i thought that if you placed require('page.inc'); or include "common_db.php"; then you could call the functions into the file?

code is:

Code: Select all

<?php
	
	require('page.inc');
	include "common_db.php";
	
	
	$registerpage = new Page();
	
	$registerpage -> Display();
	
	function register_form()
	{
?>

<center><form name="register" method="post" action="register2.php?action=register">
		<table>
			<font color="#000000" size="2" face="Courier New, Courier, mono">
				<tr>
					<td>* Enter Desired Username: </td>
					<td><input name="username" type="text" maxlength="10" id="username"></td>
				</tr>
				<tr>
					<td>* Enter Desired Password: </td>
					<td><input name="password1" type="password" maxlength="10" id="password1"></td>
				</tr>
				<tr>
					<td>* Type Password Again: </td>
					<td><input name="password2" type="password" maxlength="10" id="password2"></td>
				</tr>
				<tr>
					<td>* Email: </td>
					<td><input name="email" type="text" maxlength="40" id="email"></td>
				</tr>
				<tr>
					<td>* First Name: </td>
					<td><input name="firstName" type="text" maxlength="20" id="firstName"></td>
				</tr>
				<tr>
					<td>* Last Name: </td>
					<td><input name="lastName" type="text" maxlength="20" id="lastName"></td>
				</tr>
				<tr>
					<td>* Inital: </td>
					<td><input name="inital" type="text" maxlength="4" id="inital"></td>
				</tr>
				<tr>
					<td>* Address Line One: </td>
					<td><input name="addressLineOne" type="text" maxlength="25" id="addressLineOne"></td>
				</tr>
				<tr>
					<td>* Address Line Two: </td>
					<td><input name="addressLineTwo" type="text" maxlength="25" id="addressLineTwo"></td>
				</tr>
				<tr>
					<td>* City:  </td>
					<td><input name="city" type="text" maxlength="15" id="city"></td>
				</tr>
				<tr>
					<td>County:  </td>
					<td><input name="county" type="text" maxlength="15" id="county"></td>
				</tr>
				<tr>
					<td>* Postcode:  </td>
					<td><input name="postcode" type="text" maxlength="8" id="postcode"></td>
				</tr>
				<tr>
					<td>* Home Phone Number:  </td>
					<td><input name="homePhoneNumber" type="text" maxlength="11" id="homePhoneNumber"></td>
				</tr>
				<tr>
					<td>* Mobile Number:  </td>
					<td><input name="mobilePhoneNumber" type="text" maxlength="11" id="mobilePhoneNumber"></td>
				</tr>
				<tr>
					<td>* Date of Birth:  </td>
					<td>Day: <select name ="day">
							<option>1</option>
							<option>2</option>
							<option>3</option>
							<option>4</option>
							<option>5</option>
							<option>6</option>
							<option>7</option>
							<option>8</option>
							<option>9</option>
							<option>10</option>
							<option>11</option>
							<option>12</option>
							<option>13</option>
							<option>14</option>
							<option>15</option>
							<option>16</option>
							<option>17</option>
							<option>18</option>
							<option>19</option>
							<option>20</option>
							<option>21</option>
							<option>22</option>
							<option>23</option>
							<option>24</option>
							<option>25</option>
							<option>26</option>
							<option>27</option>
							<option>28</option>
							<option>29</option>
							<option>30</option>
							<option>31</option>
						</select>
						Month: <select name ="month">
							<option>1</option>
							<option>2</option>
							<option>3</option>
							<option>4</option>
							<option>5</option>
							<option>6</option>
							<option>7</option>
							<option>8</option>
							<option>9</option>
							<option>10</option>
							<option>11</option>
							<option>12</option>
						</select>
						Year: <select name ="year">
							<option>1950</option>
							<option>1951</option>
							<option>1952</option>
							<option>1953</option>
							<option>1954</option>
							<option>1955</option>
							<option>1956</option>
							<option>1957</option>
							<option>1958</option>
							<option>1959</option>
							<option>1960</option>
							<option>1961</option>
							<option>1962</option>
							<option>1963</option>
							<option>1964</option>
							<option>1965</option>
							<option>1966</option>
							<option>1967</option>
							<option>1968</option>
							<option>1969</option>
							<option>1970</option>
							<option>1971</option>
							<option>1972</option>
							<option>1973</option>
							<option>1974</option>
							<option>1975</option>
							<option>1976</option>
							<option>1977</option>
							<option>1978</option>
							<option>1979</option>
							<option>1980</option>
							<option>1981</option>
							<option>1982</option>
							<option>1983</option>
							<option>1984</option>
							<option>1985</option>
							<option>1986</option>
							<option>1987</option>
							<option>1988</option>
						</select>
					</tr>
					<tr>
					</td>
					<td>
						<input type="submit" name="Submit" value="Submit">
						<input type="reset" name="Reset" value="Reset">
					</td>
				</tr>
			</table>
			
			
		</form></font></center>
<?php
	}
	
	function create_account() {
		
		$link_id = db_connect();
		
		$username = $_POST['username'];
		$firstName = $_POST['firstName'];
		$lastName = $_POST['lastName'];
		$inital = $_POST['inital'];
		$addressLineOne = $_POST['addressLineOne'];
		$addressLineTwo =$_POST['addressLineTwo'];
		$city = $_POST['city'] ;
		$county = $_POST['county'] ;
		$postcode = $_POST['postcode'];
		$homePhoneNumber = $_POST['homePhoneNumber'] ;
		$mobilePhoneNumber = $_POST['mobilePhoneNumber'] ;
		$email = $_POST['email'] ;
		$password1 = $_POST['password1'] ;
		$password2 = $_POST['password2'] ;
		$Date_of_Birth = $_POST['year']."-".$_POST['month']."-".$_POST['day'];
		
		if($password1 != $password2) error_message("Passwords do not match please re-enter them.");
		if(empty($username)) error_message("Enter your desired Username.");
		//if(empty($password1)) error_message("Please enter a password.");
		if(empty($firstName)) error_message("Please enter a firstname.");
		//if(empty($lastName)) error_message("Please enter a last name.");
		if(empty($email)) error_message("Please a enter an email.");
		//if(strlen($password1 < 4 )) error_message("Password too short must be more then 4 characters.");
		//if(empty($password2)) error_message("Please re-enter second password for verification.");
		if(empty($email)) error_message("Enter your email.");
		if(empty($addressLineOne)) error_message("Enter your address.");
		if(empty($addressLineTwo)) error_message("Enter the second line of your address.");
		if(empty($postcode)) error_message("Please enter your postcode.");
		if(empty($city)) error_message("Enter the city you live in.");
		if(empty($homePhoneNumber)) error_message("Please enter a home phone number.");
		if(empty($mobilePhoneNumber)) error_message("Please enter a mobile phone number.");
		if(empty($inital)) error_message("Please enter your title.");
		//if(strlen($homePhoneNumber  < 11)) error_message("Invalid Home Phone Number.");
		//if(strlen($mobilePhoneNumber < 11)) error_message("Invalid Mobile Phone Number.");
		if(empty($Date_of_Birth)) error_message("Invalid Birth Date");
		
		
		if(in_use($username))
			error_message("$username is in use. Please choose a diffrent ID.");
		
		if(!$county){
			
			$queryA = "insert into customers values('NULL', '$firstName', '$lastName', '$inital', '$addressLineOne', '$addressLineTwo', '$city','$postcode', '$homePhoneNumber', '$mobilePhoneNumber', '$email', '$Date_of_Birth', '$password1', 'NULL', 'NULL')";
			mysql_query($queryA, $connection);
			$results = mysql_affected_rows();
			
			if($results>0) {
				$succesful=1;
			}else
			echo 'Could not insert query A';
		}
		
		if ($firstName && $lastName && $inital && $addressLineOne && $addressLineTwo && $city && $county && $postcode && $homePhoneNumber && $mobilePhoneNumber && $email && $Date_of_Birth && $password1 && $password2){
			
			$queryB = "insert into customers values('NULL', '$firstName', '$lastName', '$inital', '$addressLineOne', '$addressLineTwo', '$city','$county', '$postcode', '$homePhoneNumber', '$mobilePhoneNumber', '$email', '$Date_of_Birth', '$password1', 'NULL', 'NULL')";
			mysql_query($queryB, $connection);
			$results = mysql_affected_rows();
			
			if($results>0) {
				$succesful=1;
			}else
			echo 'Could not insert query B';
		}
		
		if ($succesful==1){
			echo $firstName
				." "
				. $lastName 
				. ", You have succesfully become a customer of Funky Monkey Records. You will recieve a validation e-mail so you can activiate your account.<br><br>
						";
				$sql = mysql_query("Select customer_id from customers where username = '$username'");
			$row = mysql_fetch_array($sql);
			$customer_id = $row['customer_id'];
			
			$emailMessage = "<html><body>Dear ". $firstName . " " . $lastName. "<br><br>
				You have registred an account at Funky Monkey Records. In order to complete registration you have to click this activation
				link:<br><a href="validate.php?page=validate&customer_id=" . $customer_id . "">validate.php?page=validation&customer_id=" . $customer_id . "</a></body></html>";
			
			$to = $email;
			$from = "mmc01ms@hotmail.com";
			$message= $emailMessage;
			$subject = "Succesfully registred as ". $username;
			$headers = "From: $from";
			if(mail($to,$subject,$message,$headers)){
			} else{
				echo"<br><br>Failed sending an email";
				
			}
		}
	}
	
	
	if($_GET['action'] == "register")
	{
		create_account();
		exit;
		break;
	}else
	
	if($_GET['action'] == "login")
	{
		header("Location: login3.php");
		exit;
		break;
	}
	else
		register_form();
	
	
?>

Posted: Tue Dec 07, 2004 6:14 pm
by John Cartwright
Yes you can, check your function names and make sure it is in the declared class. Althought I'm not sure you can call functions from non-php files.

Posted: Wed Dec 08, 2004 8:54 am
by DrHoliday
If in_use() is part of a class, then you have to call it static like classname::in_use() or via an instance of that object like $object->in_use()

Wolfgang