Jump to content

Help with code. query does not work inside a function?


r2get

Recommended Posts

Hello all,

 

This is my first post. Im trying to learn PHP from scratch. So for myself im making a registration system and some other things but there is something strange happening and i can not figure it out.

 

I have a registration form that makes a email activation link. So now on activation.php im doing something like this


<?phpif (isset($_GET['emailcode']))
{ 
$emailcode = strip_tags(trim($_GET['emailcode']));


//Check if only numbers and letters
if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){


echo $emailcode;
$errors[] = 'code is not ok..';
} 
else {
activateUser($emailcode);
}
}

activateUser goes tot functions.php where i do this

function activateUser($emailcode) {
$sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1";
$query = mysqli_query($db_connect, $sql);


$code_check = mysqli_num_rows($query);


if ($code_check == 1) {


echo 'exists';


}


}

the strange thing is, it returns nothing.. but when i attach te code on the activation page itself like this:

<?phpif (isset($_GET['emailcode']))
{ 
$emailcode = strip_tags(trim($_GET['emailcode']));


//Check if only numbers and letters
if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){


echo $emailcode;
$errors[] = 'De door jou opgegeven email code klopt niet';
} 
else {
$sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1";
$query = mysqli_query($db_connect, $sql);


//Tellen hoeveel rijen er gevonden zijn 0 of 1 
$code_check = mysqli_num_rows($query);


if ($code_check == 1) {


echo 'exists';


}


}
}
?>
it does work.... what am i doing wrong?
 
on the activation page I have included de db connect and the functions...

Hi, could you please post ALL related code and files, we need to see all of the page contents also;

 

you dont have a closing ?> after

 

else {
activateUser($emailcode);
}
}

 

that maybe why its not working, if not then come back with all the code from the pages please

here is actiovation .php

<?php include_once('config/db_connect.php');
include_once('config/init.php');
include_once ('functions/functions.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
<title>ASK</title>
<script type="text/javascript">
  WebFontConfig = {
    google: { families: [ 'PT+Sans:400,700:latin' ] }
  };
  (function() {
    var wf = document.createElement('script');
    wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
      '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
    wf.type = 'text/javascript';
    wf.async = 'true';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(wf, s);
  })(); </script>
  
<link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700' rel='stylesheet' type='text/css'>


    <!-- MAIN STYLE -->
    <link rel="stylesheet" href="assets/css/style.css">
    
<!-- BOOTSTRAP STYLE http://twitter.github.com/bootstrap/ -->
<link rel="stylesheet" href="assets/css/bootstrap.css" media="screen">
    
    <!-- BOOTSTRAP MODAL EXTEND https://github.com/jschr/bootstrap-modal/ -->
    <link rel="stylesheet" href="assets/css/bootstrap-modal.css" media="screen" />


<!-- JQUERY -->
<script type="text/javascript" src="assets/js/jquery-1.9.1.min.js"></script>


<!-- REGISTER JS -->
<script type="text/javascript" src="assets/js/register.js"></script>
    
    <!-- BOOTSTRAP JS, ADDONS & CUSTOM -->
    <script type="text/javascript" src="assets/js/script.js"></script>
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>


</head>
<body>






<?php include_once('template/topNav.php'); ?>    


<!-- BEGIN MAIN CONTAINER --> 
<div  id="mainContainer" class="container">
<?php include_once('template/mainHeader.php'); ?>      
      <div class="row" id="activateBody">
      <!-- <img src="assets/img/signup-right.png" /> -->




Dit is de activerings pagina.... 




<?php


if (isset($_GET['emailcode']))
{ 
$emailcode = strip_tags(trim($_GET['emailcode']));


//Check if only numbers and letters
if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){


echo $emailcode;
$errors[] = 'De door jou opgegeven email code klopt niet';
} 
else {
$sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1";
$query = mysqli_query($db_connect, $sql);


//Tellen hoeveel rijen er gevonden zijn 0 of 1 
$code_check = mysqli_num_rows($query);


if ($code_check == 1) {


echo 'exists';


}


}
}


?>
</div>
</div>
 <?php include_once('template/footer.php'); ?>  
<!-- END MAIN CONTAINER --> 
</body>
</html>

ans here is functions

<?phpfunction activateUser($emailcode) {
$sql = "SELECT * FROM users WHERE emailcode='$emailcode' LIMIT 1";
$query = mysqli_query($db_connect, $sql);


//Tellen hoeveel rijen er gevonden zijn 0 of 1 
$code_check = mysqli_num_rows($query);


if ($code_check == 1) {


echo 'exists';


}


}
?>
but please refer back to origial post because now i have put the code in activation to test.. but i want this in functions..

It's a question of variable scope. Your $db_connect variable is no available inside the function, you need to pass it to the function as a an argument when you call the function.

 

http://php.net/manual/en/language.variables.scope.php

It's a question of variable scope. Your $db_connect variable is no available inside the function, you need to pass it to the function as a an argument when you call the function.

 

http://php.net/manual/en/language.variables.scope.php

 

ok but if i include the connect in the function then it should also work right? but it does not..

I think, that's a logic error b/s of if{}else{} block and the $emailcode has never been assigned a value as an argument to the activateUser function.

 

So, try something like that:

<?php 
if (isset($_GET['emailcode'])) { 
$emailcode = strip_tags(trim($_GET['emailcode']));

//Check if only numbers and letters
if (!preg_match("/^[a-zA-Z0-9]+$/", $emailcode)){
$errors[] = 'De door jou opgegeven email code klopt niet';
 }

 // check for errors
 if (!empty($errors)) {
 // display the errors and return false
    
 } else{
 // call the activateUser function and procced the query statement
 activateUser($emailcode);     
 }
}

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.