• 0

How to make PHP subpages with ID?


Question

Recommended Posts

  • 0

You could try something like this:

<?php

switch($_GET['id'])
{
case 1:
include 'mypage.html';
break;
case 2:
include 'mysecondpage.html';
break;
default:
include 'home.html';
}

?>

Just add more cases to the switch to include more files and IDs, or you could use a database with the IDs in it and page references to include.

Smctainsh

  • 0

?php

switch($_GET['id'])
{
case 1:
include 'mypage.php';
break;
case 2:
include 'mysecondpage.php';
break;
default:
include 'home.php';
}

?>

OK.. so i put this in index.php..

for the links to work..

<a href="mypage.php?id=1">My page</a>

<a href="mysecondpage.php?id=2">Second Page</a>

???

  • 0
?php

switch($_GET['id'])
{
case 1:
include 'mypage.php';
break;
case 2:
include 'mysecondpage.php';
break;
default:
include 'home.php';
}

?&gt;

OK.. so i put this in index.php..

for the links to work..

<a href="mypage.php?id=1">My page</a>

<a href="mysecondpage.php?id=2">Second Page</a>

???

if you pasted that code in your index.php file, all of the links should be:

index.php?id=1 (to call mypage.php)

index.php?id=2 (to call mysecondpage.php)

etc.

  • 0

This is how I'd do it:

1) index.php

&lt;?php
$query = $_GET['p'];

$query = strtolower($query);
$space = array(' ','%20');
$path = str_replace($space,'_',$query);

if (!file_exists('./content/'.$path.'.php')) {$path = '404'; $title = 'Error 404';}		// Error 404

require_once('./source/template.php');
?&gt;

template.php

&lt;!--html here--&gt;&lt;?php include './content/'.$path.'.php'; ?&gt;&lt;!-- more hml --&gt;

where the include is the middle section aka content portion of your page.

  • 0
?php

switch($_GET['id'])
{
case 1:
include 'mypage.php';
break;
case 2:
include 'mysecondpage.php';
break;
default:
include 'home.php';
}

?&gt;

OK.. so i put this in index.php..

for the links to work..

<a href="mypage.php?id=1">My page</a>

<a href="mysecondpage.php?id=2">Second Page</a>

???

OK, I got everything to work.. but somehow.. when i click on mypage.php?id=1.. it doesn't replace the content from mypage.php ... ???

post-141808-1169088981_thumb.jpg

  • 0

you should be clicking on a link for index.php?id=1, not mypage.php?id=1

also, in the index.php file that you're using for this, there should be no content, only structural objects. all of the content is stored inside of the separate php files like mypage.php, mysecondpage.php, and home.php.

i assume that you just copied and pasted the code we gave you after some content in your existing index.php file. you can't do that.

  • 0

I actually wanted to make it for my blog pages.. without using wordpress..

ex. blog.php?id=1 (for january 17, 2007), blog.php?id=2 (for january 18, 2007)..

so i should leave blog.php empty.. with the php code and structural objects?

Edited by NYU_KID
  • 0

here are the bare essentials what you should have in your blog.php file for it to retrieve a specific blog entry:

&lt;?php
// Define the id you want to retrieve from the url
$id = $_GET['id'];

// Build the mysql query and corresponding array of retrieved information
$query = mysql_query("SELECT * FROM blogTable WHERE id='$id'");
$entry = mysql_fetch_row($query);

/* Here's where you would escape out of php and back into it
in order to format things for you */
?&gt;

one thing i STRONGLY recommend is to create a function that has all of the formatting information in it that will take the different parts of the mysql row as arguments. this way, you can use a loop to call the function several times, once per row, and have a list of blog entries. trust me, this will help a lot later on as you develop your script.

  • 0
here are the bare essentials what you should have in your blog.php file for it to retrieve a specific blog entry:

&lt;?php
// Define the id you want to retrieve from the url
$id = $_GET['id'];

// Build the mysql query and corresponding array of retrieved information
$query = mysql_query("SELECT * FROM blogTable WHERE id='$id'");
$entry = mysql_fetch_row($query);

/* Here's where you would escape out of php and back into it
in order to format things for you */
?&gt;

one thing i STRONGLY recommend is to create a function that has all of the formatting information in it that will take the different parts of the mysql row as arguments. this way, you can use a loop to call the function several times, once per row, and have a list of blog entries. trust me, this will help a lot later on as you develop your script.

I would love to create a function that has all the formatting information in it.. but that is also complex.. for me, a beginner working with php language. I don't even get the bare essential code for my blog.php :(

  • 0
what parts of it don't you get? i'll see if i can't explain them.

OK, that code you gave me, I put it into my blog.php file.. without editing any parts of the code? and how do i retrieve past entries using that code? How do i set up a function and loop it?

the other code..

&lt;?php

switch($_GET['id'])
{
case 1:
include 'blog.php';
break;
case 2:
include 'blog2.php';
break;
default:
include 'index.php';
}

?&gt;

this seems easier?

also.. can someone give me different examples of scroll bar types? except from the regular ones?

..and last..

is there a different between ?page=blog and blog.php?id=1 ??

THANKS AGAIN guys.

  • 0
here are the bare essentials what you should have in your blog.php file for it to retrieve a specific blog entry:

&lt;?php
// Define the id you want to retrieve from the url
$id = $_GET['id'];

// Build the mysql query and corresponding array of retrieved information
$query = mysql_query("SELECT * FROM blogTable WHERE id='$id'");
$entry = mysql_fetch_row($query);

/* Here's where you would escape out of php and back into it
in order to format things for you */
?&gt;

one thing i STRONGLY recommend is to create a function that has all of the formatting information in it that will take the different parts of the mysql row as arguments. this way, you can use a loop to call the function several times, once per row, and have a list of blog entries. trust me, this will help a lot later on as you develop your script.

OK, that code you gave me, I put it into my blog.php file.. without editing any parts of the code? and how do i retrieve past entries using that code? How do i set up a function and loop it?

the other code..

&lt;?php

switch($_GET['id'])
{
case 1:
include 'blog.php';
break;
case 2:
include 'blog2.php';
break;
default:
include 'index.php';
}

?&gt;

this seems easier?

also.. can someone give me different examples of scroll bar types? except from the regular ones?

..and last..

is there a different between ?page=blog and blog.php?id=1 ??

THANKS AGAIN guys.

first, i'll dissect this:

&lt;?php
/* $_GET is a superglobal associative array that retrieves values from the url. So, let's say that the url is as follows:
http://www.yoursite.com/blog.php?entry=1&amp;date=23

$_GET would have the following values:
$_GET['entry'] == 1
$_GET['date'] == 23

It retrieves all values from the url after the question mark. Each variable and it's value are separated by an =, and each set is separated by an &amp;.

$_POST is the same kind of associative superglobal, only it doesn't retrieve values from the url, only server-side sent information, like from an html form.
*/

// Define the id you want to retrieve from the url
$id = $_GET['id'];

/*
mysql_query() is a function that will generate a mysql query to manipulate your database. You'll need to look up stuff on mysql and all of the commands and syntax because it's too numerous to fit into any single post.

mysql_fetch_row() is a function that returns an array starting at index 0 with each column. Let's say that you have a table with the following columns: name, phone, age; and one row containing the information John, 1234567, 24.

By using mysql_query() to create a query to find the information, and mysql_fetch_row() to assign that data to an array, you would get this.

$query = mysql_query("SELECT name, phone, age FROM users");
$data = mysql_fetch_row($query);

$data[0] == "John";
$data[1] == 1234567;
$data[2] == 24;
*/

// Build the mysql query and corresponding array of retrieved information
$query = mysql_query("SELECT * FROM blogTable WHERE id='$id'");
$entry = mysql_fetch_row($query);

/* Here's where you would escape out of php and back into it
in order to format things for you */
?&gt;

for the function, you'd have something like this:

function blogEntryFormat(title, message){
  ?&gt;

&lt;div id="title"&gt;&lt;?php echo $title; ?&gt;&lt;/div&gt;
&lt;div id="message"&gt;&lt;?php echo $message; ?&gt;&lt;/div&gt;

  &lt;?php
}

to loop through all entries in the table and output all of the messages with that function, you'd do this:

$query = mysql_query("SELECT title, message FROM blog");
while($data = mysql_fetch_row($query)){
   blogEntryFormat($data[0], $data[1]);
}

the while loop will continue to retrieve individual rows and perform the operations inside of the loop until there are no more rows left to analyze based on the query you entered.

if you're looking ONLY for a way to use one template file to generate other pages for your site, like if you have a page for your portfolio, one for home, and one for links, and all have the same design and html structure, you would use the switch command from the other page. you'd just take whatever content is on each page and put it into a corresponding file. it would look like this:

&lt;div id="mainContent"&gt;
&lt;?php
$page = $_GET['page'];
switch($page){
   case "portfolio": include("portfolio.php"); break;
   case "links": include("links.php"); break;
   default: include("home.php"); break;
}
?&gt;
&lt;/div&gt;

if someone went to the url http://www.yourpage.com/index.php?page=links then whatever is in the links.php page would be output. but if someone went to just http://www.yourpage.com/index.php, then home.php would be output.

  • 0
yes, you would, but you shouldn't have that many.

by the way, let me ask now, what are you actually trying to do?

on my blog.php, i want to be able to have only my most recent 2 entries displayed on blog.php file..and then older entries on blog.php?id=1,2,3 so i can click 'BACK" or "NEXT" to my older or newer entries..

such.. click on BACK.. to blog.php?id=2 .. or NEXT to blog.php?id=1 ...

i dont really need the subpages on my index.php or any other pages... just focusing on blog.php

i'm reading http://www.php-mysql-tutorial.com/index.php for help as of now..and still a bit confused.

post-141808-1169181058_thumb.jpg

  • 0

here's what your code should be.

&lt;?php
if(isset($_GET['id'])){

  // Get and output the entry of the id in the url
  $id = $_GET['id'];
  $query = mysql_query("SELECT * FROM blog WHERE id = '$id'");
  $data = mysql_fetch_assoc($query);
  blogFormat($data['title'], $data['message'], whatever other columns you want to output);

  // Check for first and last entries
  $query = mysql_query("SELECT id FROM blog ORDER BY id DESC LIMIT 1");
  $data= mysql_fetch_row($query);
  $last = $data[0];
  $query = mysql_query("SELECT id FROM blog ORDER BY id ASC LIMIT 1");
  $data= mysql_fetch_row($query);
  $first = $data[0];

  // Output Back and Next if the entry the user is looking at is less than the latest id and greater than the first
  if($id &gt; $first){ echo "&lt;a href=\"blog.php?id=".$id-1."\"&gt;Back&lt;/a&gt;"; }
  if($id &lt; $last){ echo "&lt;a href=\"blog.php?id=".$id+1."\"&gt;Next&lt;/a&gt;"; }

} else {

// Output the latest two entries if no entry is specified in the url
$query = mysql_query("SELECT * FROM blog ORDER BY id DESC LIMIT 2");
while($data = mysql_fetch_assoc($query)){
  blogFormat($data['title'], $data['message'], whatever other columns you want to output);
}
?&gt;

  • 0

mine's just a short script to retrieve a blog entry based on an id in the url or the 2 latest entries.

the link you just provided is for an entire class that will process all of the blog entries and do quite a bit more. i wouldn't touch it since you're new to php.

  • 0
did you just copy and paste the code verbatim?

things like this "whatever other columns you want to output" shouldn't be in there.

do you think you could paste the entire code of your blog.php file in this thread?

&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;
&lt;HEAD&gt;
&lt;title&gt;Blog&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css" href="style.css"&gt;

&lt;!--[if IE 7]&gt;
&lt;link rel="stylesheet" type="text/css" href="iestyle.css" media="screen" /&gt;
&lt;![endif]--&gt;

&lt;/HEAD&gt;

&lt;body id="home"&gt; 
&lt;div id="col1i"&gt;
&lt;img src="/header56.jpg" alt="header"&gt;
&lt;/div&gt;

&lt;div id="col2i"&gt;
&lt;img src="/navigation7.jpg" alt="navigation"&gt;
&lt;table bgcolor="#ffffcc" width=238px height=21px&gt;
  &lt;tbody&gt;
	&lt;tr&gt;
			&lt;td align=center&gt;
&lt;a href="/contact.php"&gt;Contact&lt;/a&gt;
&lt;a href="/blog.php"&gt;Blog&lt;/a&gt;
&lt;a href="/"&gt;Home&lt;/a&gt;

&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;br&gt;
&lt;?php
if(isset($_GET['id'])){

  $id = $_GET['id'];
  $query = mysql_query("SELECT * FROM blog WHERE id = '$id'");
  $data = mysql_fetch_assoc($query);
  blogFormat($data['title'], $data['message'];

  $query = mysql_query("SELECT id FROM blog ORDER BY id DESC LIMIT 1");
  $data= mysql_fetch_row($query);
  $last = $data[0];
  $query = mysql_query("SELECT id FROM blog ORDER BY id ASC LIMIT 1");
  $data= mysql_fetch_row($query);
  $first = $data[0];

  if($id &gt; $first){ echo "&lt;a href=\"blog.php?id=".$id-1."\"&gt;Back&lt;/a&gt;"; }
  if($id &lt; $last){ echo "&lt;a href=\"blog.php?id=".$id+1."\"&gt;Next&lt;/a&gt;"; }

} else {

$query = mysql_query("SELECT * FROM blog ORDER BY id DESC LIMIT 2");
while($data = mysql_fetch_assoc($query)){
  blogFormat($data['title'], $data['message'];
}
?&gt;

&lt;div id="blog"&gt;
&lt;table bgcolor=#ffffcc width=610px&gt;
  &lt;tbody&gt;
	&lt;tr&gt;
		  &lt;td&gt;
&lt;p&gt;dsa&lt;/p&gt;
&lt;ul id="navigation"&gt;
&lt;li class="left"&gt;&lt;a href="/"&gt; &lt;&lt; Back&lt;/a&gt;&lt;/li&gt;
&lt;li class="right"&gt;&lt;a href="#"&gt;Archives&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Google's next-gen Tensor AI chips might be produced by Samsung, report says by Hamid Ganji Image via Google Google’s Tensor Processing Unit (TPU) is produced in collaboration with companies such as Broadcom and TSMC, but a recent report suggests that the search giant is in talks with Samsung to hand over part of the production to the Korean tech company. According to a report by The Information, citing people familiar with the matter, Google has begun talks with Samsung about using its chip manufacturing capacity for the next generation of Tensor AI chips. Google’s upcoming TPUs are reportedly codenamed “Icefish” and will be produced using Samsung's 2-nanometer process technology. Meanwhile, Samsung is expected to produce only a portion of the next-generation Tensor chips, with most of the production remaining at TSMC. The Information says the new Tensor chips are currently in the design stage and are scheduled to enter mass production in 2028. TSMC is generally considered one of the most reliable chip manufacturing partners and is trusted by tech giants such as Apple and Google. However, the growing demand for TSMC’s AI chips, combined with the company’s focus on meeting demand from AI data centers, has reportedly prompted Google to seek additional manufacturing partners for its next-generation TPUs. Besides Samsung and TSMC, Intel could also be assigned part of the production. The Information reported this week is that Google has begun talks with Intel to produce up to three million TPUs in 2028. However, this is not the first time Google has partnered with Samsung on chip production, as Samsung has previously manufactured Tensor chips for Pixel smartphones. Google’s Tensor Processing Unit is used in cloud data centers and competes with NVIDIA’s chips, which currently dominate the market. By relying on in-house chips, Google can not only reduce its dependence on third-party providers but also create new revenue opportunities. The company has already supplied its TPUs to the AI firm Anthropic.
    • Reminder that the Premium and Ultimate plans already come with a 100 hour per month limit, which you then have to pay more to increase in 15 hour blocks.
    • It does invite Linux because MS should have been improving their products all along these years instead chose to ignore the users now this year they’re making all of these improvements to their products where as Linux doesn’t have this kind of problems in fact it has gotten so good I can even play Windows games in Steam that I no longer ever needed Windows to carry on with my life, unlike you still use Windows and chose to try beat down down those who don't use Windows because they love their LG TV. (Surprisingly I actually own a 55” LED LG TV and it has been going strong for almost 14 years, longer than any Sony TV”)
    • As much as I love owning my own hardware, it's hard to argue with the value. I'm not a huge gamer, I'd actually be interested in a cheaper plan with limited monthly hours, or even a pay-by-the-hour plan.
    • Well, they (LibreOffice/The Document Foundation) are bitchy and whiny, yes, but they're right, at least this time. It doesn't make sense to market something as "free and open source to thwart dependency on foreign companies' software" but at the same time, using the formats of said companies (Microsoft) by default. That way, you are changing nothing, essentially, you're just using another UI. We all know that users just use the defaults and almost never change them. I'm not saying they should drop other formats altogether, but they shouldn't default to the thing they're trying to run away from in the first place. If you're gonna do something, just go all the way in, don't stop in the middle, IMO. Otherwise, shut up and move along.
  • Recent Achievements

    • Week One Done
      FBSPL earned a badge
      Week One Done
    • One Year In
      Jim Dugan earned a badge
      One Year In
    • One Month Later
      Tommi118 earned a badge
      One Month Later
    • One Month Later
      sjbousquet earned a badge
      One Month Later
    • Week One Done
      sjbousquet earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      487
    2. 2
      PsYcHoKiLLa
      196
    3. 3
      +Edouard
      155
    4. 4
      Steven P.
      84
    5. 5
      ATLien_0
      69
  • Tell a friend

    Love Neowin? Tell a friend!