Jump to content

Recommended Posts

Hello!
Ok, first off i am a total noob at PHP i am making a website for part of my presentation and i have got stuck!
Right what a want is to filter my product types from my database using the URL parameter in Dreamweaver.
I have got my links all working (ending with "TypeID=1/2/3/4 etc") and database sorted, i just need to know how to filter them so it only shows up the products with an ID of 1 or 2 or 3 etc depending on the link.
If you need any more information let me know, i am using phpMyAdmin and Dreamweaver to create the site.
Plleeaaassee help someone!
Sarah
yes, be more specific. show your current code. 

here's how i interpret this: you have a link that shows, for example:

[code]
<a href='blah.php?TypeID=1'>Type 1</a>
[/code]

right?

and now you want to do what...select from the database based on TypeID? in blah.php you would do something like this:

[code]
<?php
  if ($_GET['TypeID']) {
    $TypeID = $_GET['TypeID'];
    //good place to sanitize your variable here

    //change tablename to your tablename and id to your column name that holds the id
    $sql = "select * from tablename where id='$TypeID'";
    $result = mysql_query($sql);
  }

  //need to echo the results?
  while ($list = mysql_fetch_array($result)) {
    //$list is now an array of each columnname => value
    //you can echo it out
    echo $list['column1'] . " " . $list['column2'] . "<br>";
    //or store it in another array so you can use it later
    $info[] = $list;
    //or just dump everything out?
    foreach($list as $key => $val) {
      echo $key . " : " . $val . "<br>";
    }
  }
?>
[/code]
So you have link like "mypage.php?TypeID=1/2/3/4", yes?

To process,
[code]<?php
$typeArray = explode('/', $_GET['TypeID']);  // split at each / to get an array
$typeList = join (',' , $typeArray);  // now jon them with commas (-->1,2,3,4)
$sql = "SELECT * FROM products WHERE type IN ($typeList)";
?>[/code]
or yeah, if you meant that instead.. you can reduce barand's code down a bit:

[code]
<?php
  $typeList = preg_replace('|/|',',',$_GET['TypeID']);
  $sql = "SELECT * FROM products WHERE type IN ($typeList)";
?>
[/code]

oh snap! I outdid Barand!  ;D
Thank you everyone for replying! sorry i really dont understand much of what you posted though lol

yes i do have a link with the following code in the "Properties" part:

"products.php?TypeID=<?php echo $row_rsProductTypes['TypeID']; ?>"

the link name has a "repeat region" so it shows up with all the names of the products and when you click on one of them each seperate link ends in a different "?TypeID=1/2/3/4/5" number.

Here is my code for the main bit
[code]
"<?php require_once('Connections/fitnessdatabase.php'); ?>
<?php


$currentPage = $_SERVER["PHP_SELF"];

$maxRows_rsProducts = 4;
$pageNum_rsProducts = 0;
if (isset($_GET['pageNum_rsProducts'])) {
  $pageNum_rsProducts = $_GET['pageNum_rsProducts'];
}
$startRow_rsProducts = $pageNum_rsProducts * $maxRows_rsProducts;

$colname_rsProducts = "-1";
if (isset($_GET['1'])) {
  $colname_rsProducts = (get_magic_quotes_gpc()) ? $_GET['1'] : addslashes($_GET['1']);
}
mysql_select_db($database_fitnessdatabase, $fitnessdatabase);
$query_rsProducts = sprintf("SELECT ProductID, ProductName, Price, Description, Image FROM products WHERE TypeID = 1 ORDER BY ProductName ASC", $colname_rsProducts);
$query_limit_rsProducts = sprintf("%s LIMIT %d, %d", $query_rsProducts, $startRow_rsProducts, $maxRows_rsProducts);
$rsProducts = mysql_query($query_limit_rsProducts, $fitnessdatabase) or die(mysql_error());
$row_rsProducts = mysql_fetch_assoc($rsProducts);

if (isset($_GET['totalRows_rsProducts'])) {
  $totalRows_rsProducts = $_GET['totalRows_rsProducts'];
} else {
  $all_rsProducts = mysql_query($query_rsProducts);
  $totalRows_rsProducts = mysql_num_rows($all_rsProducts);
}
$totalPages_rsProducts = ceil($totalRows_rsProducts/$maxRows_rsProducts)-1;

mysql_select_db($database_fitnessdatabase, $fitnessdatabase);
$query_rsProductTypes = "SELECT TypeID, TypeName FROM producttypes WHERE Online = 1 ORDER BY TypeName ASC";
$rsProductTypes = mysql_query($query_rsProductTypes, $fitnessdatabase) or die(mysql_error());
$row_rsProductTypes = mysql_fetch_assoc($rsProductTypes);
$totalRows_rsProductTypes = mysql_num_rows($rsProductTypes);

$queryString_rsProducts = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_rsProducts") == false &&
        stristr($param, "totalRows_rsProducts") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_rsProducts = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_rsProducts = sprintf("&totalRows_rsProducts=%d%s", $totalRows_rsProducts, $queryString_rsProducts);
?>"[/code]

I hope you understand what i mean? please help! if you want anything else just ask.
Sarah
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.