• 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

    • I disagree; they come off very "bitchy" and "whiny". Make a great product and combine that with a great price (free) and people will come over to your side. Or build it and they will come as they say. Constantly trying to get attention by complaining all the time, will turn people off to your product.
    • It use to be a nightmare, with LibreOffice supporting a newer draft ODF standard by default, and Microsoft Office supporting the older non-draft standard. Now that they both support the same version of ODF, they should be interoperable.
    • Brave Browser 1.91.171 by Razvan Serea Brave Browser is a lightning-fast, secure web browser that stands out from the competition with its focus on privacy, security, and speed. With features like HTTPS Everywhere and built-in tracker blocking, Brave keeps your online activities safe from prying eyes. Brave is one of the safest browsers on the market today. It blocks third-party data storage. It protects from browser fingerprinting. And it does all this by default. Speed - Brave is built on Chromium, the same technology that powers Google Chrome, and is optimized for speed, providing a fast and responsive browsing experience. Brave Browser also features Brave Rewards, a system that rewards users with Basic Attention Tokens (BAT) for viewing opt-in ads. This innovative system provides an alternative revenue model for content creators and a way to support the Brave community. SlimBrave Neo takes all the good things about Brave and makes them even better by keeping everything clean, light, and privacy-focused. It removes the extra clutter, turns off features you might not need, and cuts down on anything that could slow you down or collect unnecessary data. Because it relies on simple settings and policies instead of modifying the browser itself, you still get full Brave compatibility—just in a smoother, lighter, and more privacy-friendly package. Brave Browser 1.91.171 changelog: General Fixed Cardano not being disabled on upgrade to Brave Origin. Upgraded Chromium to 149.0.7827.103. Origin Removed “Survey Panelist” setting from brave://settings/privacy. Fixed P3A and usage ping under brave://settings/privacy being displayed on first launch on Linux. Upgraded Chromium to 149.0.7827.103. Download: Brave Browser 64-bit | 1.2 MB (Freeware) Download: Brave Browser 32-bit View: Brave Homepage | Offline Installers | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Hi. As the title suggests, I can't access the forum on my phone. I'm using Edge on Android and when I try to navigate to the forum I get a "we value your privacy" popup and none of the buttons are clickable. It effectively stonewalls me from reading any forum content.
    • Honestly you're not wrong about AdGuard. Neowin frequently has lifetime license discounts for them and that's how I got my cheap family license a few years ago to run it on all my devices.
  • Recent Achievements

    • Rookie
      Marzoid went up a rank
      Rookie
    • Community Regular
      coch went up a rank
      Community Regular
    • One Year In
      slackerzz earned a badge
      One Year In
    • One Year In
      highriskpaym earned a badge
      One Year In
    • One Month Later
      highriskpaym earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      519
    2. 2
      PsYcHoKiLLa
      190
    3. 3
      +Edouard
      156
    4. 4
      Steven P.
      84
    5. 5
      ATLien_0
      75
  • Tell a friend

    Love Neowin? Tell a friend!