Skip to main content
Inspiring
November 30, 2011
Question

any ideas how to join tables getting very desperate!

  • November 30, 2011
  • 1 reply
  • 799 views

I have posted before but to no avail. i have created a join join query in the advanced recordset i have a log in page, and a user page when they log in it takes them to  a user page. when i have one recordset it works fine but when i try to get information from two records it just shows information from the first entry into the database

i have a table with userID, email, password  and propID etc

i have another table with propID, add1, town postcode etc

the join SQL statement i have is

SELECT *

FROM tenant_signup, name_editprop

WHERE name_editprop.prop_id =tenant_signup.prop_id AND Colname

And the php for this is

<?php

//initialize the session

if (!isset($_SESSION)) {

  session_start();

}

// ** Logout the current user. **

$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";

if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){

  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);

}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){

  //to fully log out a visitor we need to clear the session varialbles

  $_SESSION['MM_Username'] = NULL;

  $_SESSION['MM_UserGroup'] = NULL;

  $_SESSION['PrevUrl'] = NULL;

  unset($_SESSION['MM_Username']);

  unset($_SESSION['MM_UserGroup']);

  unset($_SESSION['PrevUrl']);

 

  $logoutGoTo = "../index.html";

  if ($logoutGoTo) {

    header("Location: $logoutGoTo");

    exit;

  }

}

?>

<?php

if (!isset($_SESSION)) {

  session_start();

}

$MM_authorizedUsers = "";

$MM_donotCheckaccess = "true";

// *** Restrict Access To Page: Grant or deny access to this page

function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {

  // For security, start by assuming the visitor is NOT authorized.

  $isValid = False;

  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.

  // Therefore, we know that a user is NOT logged in if that Session variable is blank.

  if (!empty($UserName)) {

    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login.

    // Parse the strings into arrays.

    $arrUsers = Explode(",", $strUsers);

    $arrGroups = Explode(",", $strGroups);

    if (in_array($UserName, $arrUsers)) {

      $isValid = true;

    }

    // Or, you may restrict access to only certain users based on their username.

    if (in_array($UserGroup, $arrGroups)) {

      $isValid = true;

    }

    if (($strUsers == "") && true) {

      $isValid = true;

    }

  }

  return $isValid;

}

$MM_restrictGoTo = "failed-login.php.php";

if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {  

  $MM_qsChar = "?";

  $MM_referrer = $_SERVER['PHP_SELF'];

  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";

  if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)

  $MM_referrer .= "?" . $_SERVER['QUERY_STRING'];

  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);

  header("Location: ". $MM_restrictGoTo);

  exit;

}

?>

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

  if (PHP_VERSION < 6) {

    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {

    case "text":

      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

      break;   

    case "long":

    case "int":

      $theValue = ($theValue != "") ? intval($theValue) : "NULL";

      break;

    case "double":

      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

      break;

    case "date":

      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

      break;

    case "defined":

      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

      break;

  }

  return $theValue;

}

}

$colname_RsUser = "-1";

if (isset($_SESSION['MM_Username'])) {

  $colname_RsUser = $_SESSION['MM_Username'];

}

mysql_select_db($database_nameprop, $nameprop);

$query_RsUser = sprintf("SELECT * FROM tenant_signup WHERE userid = %s", GetSQLValueString($colname_RsUser, "text"));

$RsUser = mysql_query($query_RsUser, $nameprop) or die(mysql_error());

$row_RsUser = mysql_fetch_assoc($RsUser);

$Colname_RsUser = "-1";

if (isset($_GET['MM_Username'])) {

  $Colname_RsUser = $_GET['MM_Username'];

}

mysql_select_db($database_nameprop, $nameprop);

$query_RsUser = sprintf("SELECT * FROM tenant_signup, name_editprop WHERE name_editprop.prop_id =tenant_signup.prop_id AND %s", GetSQLValueString($Colname_RsUser, "text"));

$RsUser = mysql_query($query_RsUser, $nameprop) or die(mysql_error());

$row_RsUser = mysql_fetch_assoc($RsUser);

$totalRows_RsUser = mysql_num_rows($RsUser);

?>

<?php if (!$row_RsUser['auth']) {

                    header("Location: pass.php");

                    exit();

          } ?>

and an example of the feilds that need the data are

{RsUser.userid}

{RsUser.prop_id}

the login page code is

<?php require_once('../Connections/hostprop.php'); ?>

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

  if (PHP_VERSION < 6) {

    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {

    case "text":

      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

      break;   

    case "long":

    case "int":

      $theValue = ($theValue != "") ? intval($theValue) : "NULL";

      break;

    case "double":

      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

      break;

    case "date":

      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

      break;

    case "defined":

      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

      break;

  }

  return $theValue;

}

}

?>

<?php

// *** Validate request to login to this site.

if (!isset($_SESSION)) {

  session_start();

}

$loginFormAction = $_SERVER['PHP_SELF'];

if (isset($_GET['accesscheck'])) {

  $_SESSION['PrevUrl'] = $_GET['accesscheck'];

}

if (isset($_POST['username'])) {

  $loginUsername=$_POST['username'];

  $password=$_POST['password'];

  $MM_fldUserAuthorization = "";

  $MM_redirectLoginSuccess = "welcome.php";

  $MM_redirectLoginFailed = "failed-login.php";

  $MM_redirecttoReferrer = false;

  mysql_select_db($database_hostprop, $hostprop);

 

  $LoginRS__query=sprintf("SELECT userid, password FROM plus_signup WHERE userid=%s AND password=%s",

    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));

  

  $LoginRS = mysql_query($LoginRS__query, $hostprop) or die(mysql_error());

  $loginFoundUser = mysql_num_rows($LoginRS);

  if ($loginFoundUser) {

     $loginStrGroup = "";

   

          if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}

    //declare two session variables and assign them

    $_SESSION['MM_Username'] = $loginUsername;

    $_SESSION['MM_UserGroup'] = $loginStrGroup;               

    if (isset($_SESSION['PrevUrl']) && false) {

      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];

    }

    header("Location: " . $MM_redirectLoginSuccess );

  }

  else {

    header("Location: ". $MM_redirectLoginFailed );

  }

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<body>

<form id="form1" name="form1" method="POST" action="<?php echo $loginFormAction; ?>">

  <table width="100%" border="0" cellspacing="0" cellpadding="0">

    <tr>

      <td>username      </td>

      <td><input type="text" name="username" id="username" /></td>

    </tr>

    <tr>

      <td>password</td>

      <td><input type="text" name="password" id="password" />

      <input type="submit" name="submit" id="submit" value="Submit" /></td>

    </tr>

  </table>

</form>

</body>

</html>

i would really appreciate help as i am getting pretty desperate now

thanks

Jon

{RsUser.phoneNumber}

{RsUser.Add1}

This topic has been closed for replies.

1 reply

Community Expert
December 1, 2011

i have a table with userID, email, password  and propID etc

i have another table with propID, add1, town postcode etc

the join SQL statement i have is

SELECT *

FROM tenant_signup, name_editprop

WHERE name_editprop.prop_id =tenant_signup.prop_id AND Colname

That's not a JOIN statement.  If you are trying to join on the "propID" the statement should look like:

SELECT * FROM tenant_signup LEFT JOIN name_editprop ON tenant_signup.propID = name_editprop.propID WHERE {code goes here};

I don't know what your WHERE clause should be so I just left it blank for now.  Then the whole piece of code is:

mysql_select_db($database_nameprop, $nameprop);

$query_RsUser = sprintf("SELECT * FROM tenant_signup, name_editprop WHERE name_editprop.prop_id =tenant_signup.prop_id AND %s", GetSQLValueString($Colname_RsUser, "text"));

$RsUser = mysql_query($query_RsUser, $nameprop) or die(mysql_error());

$row_RsUser = mysql_fetch_assoc($RsUser);

$totalRows_RsUser = mysql_num_rows($RsUser);

There's no code that I can see where you are running a loop to print all results.  The following is a PHP while loop example from a mySQL query to return all results:

http://www.tizag.com/mysqlTutorial/mysqlselect.php

Participating Frequently
December 1, 2011

>>SELECT *

>>FROM tenant_signup, name_editprop

>>WHERE name_editprop.prop_id =tenant_signup.prop_id AND Colname

>That's not a JOIN statement. 

Sure it is. A valid join can be in the FROM clause or the WHERE clause. In this case he is joining name_editprop with tenant_signup on the prop_id column. However, it's not a valid SQL statement as it contains the fragment "AND Colname" which does not contain a column or operator.

His query should be something like:

$query_RsUser = sprintf("SELECT * FROM tenant_signup, name_editprop WHERE name_editprop.prop_id =tenant_signup.prop_id AND userID = %s", GetSQLValueString($Colname_RsUser, "text"));

Jon, note that I'm not sure the correct name of the column you want to filter on; I'm guessing it's something like userID.

>There's no code that I can see where you are running a loop to print all results.

I don't think he wants to loop in a repeating region- I think he wants to display a result set filtered by a user id value passed via querystring.

Inspiring
December 1, 2011

this is what i need to do, there is a property table (name_editprop) and each property has its own ID the column is called prop_id. I now have a column in the tenant table called prop_id and i have the set up a form that sends the prop_id from the property table to the column called prop_id the the tenant table.

i need to get the property ID and all the other property information from the property table into the tenant page using the property ID. when i load this into the SQL

SELECT *

FROM tenant_signup, name_editprop

WHERE name_editprop.prop_id =tenant_signup.prop_id

it gets all the information from both tables

i need each property id that is unique to each user to display the information relevant to the user/property

one user each has there own property

so to recap.......i input the property information using a form this gets stored in the database in the property table

they use an application form. they select the property the wish to live in. this property is defined by the property ID , address, town etc...( this information comes from the property table called name_editprop in the DB). they fill in their information about themselves. that form get send off. the property ID ONLY and the user inforamation gets sent to the user table called tenant_signup

then i neeto get all the information from both tables then show that in the user  page

i hope this is clearer