I wish to set the title of my webpage to Ultan.me - Whatever the post title. I want it to display the post title. The posts are submitted to a MySQL database and the title row is called "title". Any help is appreciated with this small question.
Update:
Here is the page itself now but it doesn't display the title. Should I open the php document and connect to my database somewhere different to it's current locations?
The Code (The only necessary piece is the beginning):
<html>
<head>
<meta name="keywords" content="Mac user Ultan Casey TheCompuGeeks UltanKC">
<title>Ultan.me - <?echo $title;?></title>
<link rel="stylesheet" href="css/styles.css" type="text/css" />
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript"
src="js/jquery.labelify.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(":text").labelify();
});
</script>
<style>
a {text-decoration:none}
</style>
</head>
<body>
<div id="main">
<!-- Menu Start -->
<div id="menu">
<ul>
<li>home</li>
<li>about me</li>
<li>archives</li>
<li>contact</li>
<li>gallery</li>
</ul>
</div>
<!-- Menu End -->
<img src="images/banner.png" />
<div id="content">
<div id="posts">
<?php
mysql_connect ('localhost', 'root', 'root') ;
mysql_select_db ('ultankc');
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
die("Invalid ID specified.");
}
$id = (int)$_GET['id'];
$sql = "SELECT * FROM php_blog WHERE id='$id' LIMIT 1";
$result = mysql_query($sql) or print ("Can't select entry from table php_blog.<br />" . $sql . "<br />" . mysql_error());
while($row = mysql_fetch_array($result)) {
$date = date("l F d Y", $row['timestamp']);
$title = stripslashes($row['title']);
$entry = stripslashes($row['entry']);
$get_categories = mysql_query("SELECT * FROM php_blog_categories WHERE `category_id` = $row[category]");
$category = mysql_fetch_array($get_categories);
?>
<p><?php echo "<p id='post-title'><strong>" . $title . "</strong></p>"; ?><br /><br />
<div id="entry"><?php echo $entry; ?>
</div><br /><br />
<p id="date">Posted in <?php echo $category['category_name']; ?> on <?php echo $date; ?></p>
</p>
<h2 id="share-title">Share This Post</h2>
<div id="social-share">
<li id="link-right"><a href="http://twitter.com/home?status=
I just read <?php echo $title; ?> at http://ultan.me/post.php?id=<?php echo $id; ?>"><center>Twitter</center></a></li>
<li id="link-left"><center>Digg</center></li>
<br>
<li id="link-right"><center>Facebook</center></li>
<li id="link-left"><a href="http://www.google.com/buzz/post?url=http://ultan.me/post.php?id=<?php echo $id; ?>
"><center>Google Buzz</center></a></li>
<div class="clr"></div>
</div>
<h2 id="comments-title">Comments</h2>
<div id="comment-list">
<?php
}
$commenttimestamp = strtotime("now");
$sql = "SELECT * FROM php_blog_comments WHERE entry='$id' ORDER BY timestamp";
$result = mysql_query ($sql) or print ("Can't select comments from table php_blog_comments.<br />" . $sql . "<br />" . mysql_error());
while($row = mysql_fetch_array($result)) {
$timestamp = date("l F d Y", $row['timestamp']);
printf("<div class='comment-ind'><p id='comments'><a id='username' href=\"%s\">%s</a> %s</p>", stripslashes($row['url']), stripslashes($row['name']), $timestamp);
print("<p class='comments'>" . stripslashes($row['comment']) . "</p><div class='clr'><br></div></div>");
}
?>
<div class="clr"></div>
<form id="commentform" method="post" action="process.php">
<p><input type="hidden" name="entry" id="entry" value="<?php echo $id; ?>" />
<input type="hidden" name="timestamp" id="timestamp" value="<?php echo $commenttimestamp; ?>">
<input type="text" name="name" id="name" title="Name (required)" /><br />
<input type="text" name="email" id="email" title="Mail (will not be published) (required)" /><br />
<input type="text" name="url" id="url" title="Website" value="http://" /><br />
<br />
<textarea title="Your Comment Goes Here" name="comment" id="comment"></textarea></p>
<p><input type="submit" name="submit_comment" id="submit_comment" value="Add Comment" /></p>
</form>
</div>
<div id="pages">
<?php
$total_results = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS num FROM php_blog"));
$total_pages = ceil($total_results['num'] / $blog_postnumber);
if ($page > 1) {
$prev = ($page - 1);
echo "<< Newer ";
}
for($i = 1; $i <= $total_pages; $i++) {
if ($page == $i) {
echo "$i ";
}
else {
echo "$i ";
}
}
if ($page < $total_pages) {
$next = ($page + 1);
echo "Older >>";
}
?>
</div>
</div>
</div>
<!-- Sidebar Start -->
<div class="sidebar">
<!-- Item 1 -->
<div id="side-item">
<h2>
<a href="http://www.dailybooth.com/UltanCasey">
<img src="images/db-icon.jpg">Dailybooth
</a></h2>
<div id="side-item-content">
<center>
<img src="http://dailybooth.com/UltanCasey/latest/medium.jpg" />
</center>
</div>
</div>
<!-- Item 2 -->
<div id="side-item">
<h2><img src="images/connect.jpg" />Connect</h2>
</div>
<div id="side-item-content">
<div class="tweet-title"><p>Latest Tweet:</p></div>
<div id="tweet">
<?php
function getTwitterStatus($userid){
$url = "http://twitter.com/statuses/user_timeline/$userid.xml?count=1";
function auto_link_twitter ($text)
{
// properly formatted URLs
$urls = "/(((http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
$text = preg_replace($urls, " <a href='$1'>$1</a>", $text);
// URLs without protocols
$text = preg_replace("/href=\"www/", "href=\"http://www", $text);
// Twitter usernames
$twitter = "/#([A-Za-z0-9_]+)/is";
$text = preg_replace ($twitter, " <a href='http://twitter.com/$1'>#$1</a>", $text);
// Twitter hashtags
$hashtag = "/#([A-Aa-z0-9_-]+)/is";
$text = preg_replace ($hashtag, " <a href='http://hashtags.org/$1'>#$1</a>", $text);
return $text;
}
$xml = simplexml_load_file($url) or die("could not connect");
foreach($xml->status as $status){
$text = $status->text;
}
echo auto_link_twitter ($text);
}
getTwitterStatus("UltanKC");
?>
</div>
<br>
<ul>
<li id="social">YouTube</li>
<li id="social">Twitter</li>
<li id="social">LastFM</li>
<li id="social">Email</li>
</ul>
</div>
<!-- Item 2 End-->
<div id="side-item">
<h2><img src="images/archive.jpg" />Archives</h2>
</div>
<div id="archive-side">
<?php
mysql_connect ('localhost', 'root', 'root') ;
mysql_select_db ('ultankc');
$result = mysql_query("SELECT FROM_UNIXTIME(timestamp, '%Y') AS get_year, COUNT(*) AS entries FROM php_blog GROUP BY get_year");
while ($row = mysql_fetch_array($result)) {
$get_year = $row['get_year'];
$entries = $row['entries'];
echo "<li id='tag'>Entries from " . $get_year . " (" . $entries . ")<br /></li>";
}
$result1 = mysql_query("SELECT * FROM php_blog_categories ORDER BY category_name ASC");
while($row = mysql_fetch_array($result1)) {
$result2 = mysql_query("SELECT COUNT(`id`) AS entries FROM php_blog WHERE category = $row[category_id]");
$num_entries = mysql_fetch_array($result2);
echo '<li id="tag">' . $row['category_name'] . ' (' . $num_entries['entries'] . ')</li>';
}
?>
</div>
</div>
<div class="clr" />
</div>
<!-- Sidebar End -->
<div id="footer">
<p> © Ultan Casey 2010</p>
<p style="margin-top: -18px; float:right">Home | About Me | Email Me</p>
</div>
</div>
</div>
</body>
</html>
?>
Here's the method I use (for similar things, not just title):
<?
ob_start (); // Buffer output
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title><!--TITLE--></title>
</head>
<body>
<?
$pageTitle = 'Title of Page'; // Call this in your pages' files to define the page title
?>
</body>
</html>
<?
$pageContents = ob_get_contents (); // Get all the page's HTML into a string
ob_end_clean (); // Wipe the buffer
// Replace <!--TITLE--> with $pageTitle variable contents, and print the HTML
echo str_replace ('<!--TITLE-->', $pageTitle, $pageContents);
?>
PHP usually works be executing any bits of code and printing all output directly to the browser. If you say "echo 'Some text here.';", that string will get sent the browser and is emptied from memory.
What output buffering does is say "Print all output to a buffer. Hold onto it. Don't send ANYTHING to the browser until I tell you to."
So what this does is it buffers all your pages' HTML into the buffer, then at the very end, after the tag, it uses ob_get_contents () to get the contents of the buffer (which is usually all your page's HTML source code which would have been sent the browser already) and puts that into a string.
ob_end_clean () empties the buffer and frees some memory. We don't need the source code anymore because we just stored it in $pageContents.
Then, lastly, I do a simple find & replace on your page's source code ($pageContents) for any instances of '' and replace them to whatever the $pageTitle variable was set to. Of course, it will then replace <title><!--TITLE--></title> with Your Page's Title. After that, I echo the $pageContents, just like the browser would have.
It effectively holds onto output so you can manipulate it before sending it to the browser.
Hopefully my comments are clear enough.
Look up ob_start () in the php manual ( http://php.net/ob_start ) if you want to know exactly how that works (and you should) :)
You parse the field from the database as usual.
Then let's say you put it in a variable called $title, you just
<html>
<head>
<title>Ultan.me - <?php echo htmlspecialchars($title);?></title>
</head>
EDIT:
I see your problem. You have to set $title BEFORE using it. That is, you should query the database before <title>...
header.php has the title tag set to <title>%TITLE%</title>; the "%" are important since hardly anyone types %TITLE% so u can use that for str_replace() later. then, you use output buffer like so
<?php
ob_start();
include("header.php");
$buffer=ob_get_contents();
ob_end_clean();
$buffer=str_replace("%TITLE%","NEW TITLE",$buffer);
echo $buffer;
?>
For more reference, click PHP - how to change title of the page AFTER including header.php?
What about using something like:
<?php
$page_title = "Your page tile";
include("navigation.php"); // if required
echo("<title>$page_title</title>");
?>
Move the data retrieval at the top of the script, and after that use:
<title>Ultan.me - <?php echo htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); ?></title>
You need to set the value of $title before echoing it.
Also, you should really sanitize any data before using it in queries as this is a security risk
create a new page php and add this code:
<?php
function ch_title($title){
$output = ob_get_contents();
if ( ob_get_length() > 0) { ob_end_clean(); }
$patterns = array("/<title>(.*?)<\/title>/");
$replacements = array("<title>$title</title>");
$output = preg_replace($patterns, $replacements,$output);
echo $output;
}
?>
in <head> add code: <?php require 'page.php' ?> and on each page you call the function ch_title('my title');
The problem is that $title is being referenced on line 5 before it's being assigned on line 58. Rearranging your code isn't easy, because the data is both retrieved and output at the same time. Just to test, how does something like this work?
Because you're only retrieving one row, you don't need to use a while loop, but I left it with hopes that it'll make it easier for you to relate to your current code. All I've done is removed the actual output from your data retrieval, and added variables for category and category name which are then referred to as usual later on. Also, I haven't tested this. :)
It'll be tricky to rearrange your code to make this work, but I'll try :)
So, put this at the top of your code:
<?php require_once('mysql.php'); ?>
The top of the file should look like:
<?php require_once('mysql.php'); ?>
<html>
<head>
<meta name="keywords" content="Mac user Ultan Casey TheCompuGeeks UltanKC">
<title>Ultan.me - <?php echo htmlspecialchars($title); ?> </title>
Then, create a file called mysql.php in the same directory that the file which contains the code you quoted is in.
Put this is mysql.php:
<?php
mysql_connect ('localhost', 'root', 'root');
mysql_select_db ('ultankc');
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
die("Invalid ID specified.");
}
$id = (int)$_GET['id'];
$sql = "SELECT * FROM php_blog WHERE id='$id' LIMIT 1";
$result = mysql_query($sql) or print ("Can't select entry from table php_blog.<br />" . $sql . "<br />" . mysql_error());
$res = mysql_fetch_assoc($result);
$date = date("l F d Y", $res['timestamp']);
$title = $res['title'];
$entry = $res['entry'];
$get_categories = mysql_query("SELECT * FROM php_blog_categories WHERE `category_id` = $res['category']");
$category = mysql_fetch_array($get_categories);
?>
Well, hope that helped :)
I know this is an old post but having read this I think this solution is much simpler (though technically it solves the problem with Javascript not PHP).
<html>
<head>
<title>Ultan.me - Unset</title>
<script type="text/javascript">
function setTitle( text ) {
document.title = text;
}
</script>
<!-- other head info -->
</head>
<?php
// Make the call to the DB to get the title text. See OP post for example
$title_text = "Ultan.me - DB Title";
// Use body onload to set the title of the page
print "<body onload=\"setTitle( '$title_text' )\" >";
// Rest of your code here
print "<p>Either use php to print stuff</p>";
?>
<p>or just drop in and out of php</p>
<?php
// close the html page
print "</body></html>";
?>
Simply add $title variable before require function
<?php
$title = "Your title goes here";
require("header.php");
?>
header.php
<title><?php echo $title; ?></title>
<?php echo APP_TITLE?> - <?php echo $page_title;?>
this should work fine for you
if you want to current script filename as your title tag
include the function in your project
function setTitle($requestUri)
{
$explodeRequestUri = explode("/", $requestUri);
$currentFileName = end($explodeRequestUri);
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $currentFileName);
$explodeCurrentFileName = explode("-", $withoutExt);
foreach ($explodeCurrentFileName as $curFileValue)
{
$fileArrayName[] = ucfirst($curFileValue);
}
echo implode(" ", $fileArrayName);
}
and in your html include the function script
and replace your title tag with this
<title>Your Project Name -
<?php setTitle($_SERVER['REQUEST_URI']); ?>
</title>
it works on php7 and above but i dont have any idea about php 5.*
Hope it helps
Related
Recently I am writing a products catalog for my company. I use the dropdown list to provide a filter to a grid views product list that has pagination. The filter is work fine if products not more than 1 page. When more then one page of search result, the browser will show all products same as no filter applied. Below is my code of the index.php. Please help because I already stuck in here for a week. Thank in advance.
<!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">
<?php session_start();
if (!isset($_SESSION['user_name']))
{
echo "<script>window.open('../login.php','_self')</script>";
}
$user_name=isset($_SESSION['user_name'])?$_SESSION['user_name']:'';
?>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="css/gallery.css" rel="stylesheet" type="text/css" />
<script src="js/jquery-3.2.1.min.js"></script>
<meta name="theme-color" content="#444" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<?php
include_once('../database/db_conection.php');//Include the database connection
?>
<div class="container">
<div class="col-md-2"> <br/>
<i class="fa fa-home" style="font-size:28px"></i>Home <br/>
<br/>
<br/>
<form action="buckle.php'" method="post" >
<div class="cf_header5">MATERIAL<br/>
(e.g.Brass, Alloy...)</div>
<select name="material" style="width:150px; height:25px;font-size:16px">
<option value="">Please select ....</option>
';
<?php
$sql_ml = "SELECT distinct material FROM products where material !='' order by material";
$records_ml=mysqli_query($dbcon,$sql_ml);
while ($row_ml=mysqli_fetch_array($records_ml)){
echo '<option value="'.$row_ml['material'].'">'.$row_ml['material'].'</option>';
}
?>
</select>
<br/>
<br/>
<div class="cf_header5">DESCRIPTION</div>
<select name="description" style="width:150px; height:25px;font-size:16px">
<option value="">Please select ....</option>
';
<?php
$sql_dn = "SELECT distinct catagory FROM products where catagory !='' order by catagory";
$records_dn=mysqli_query($dbcon,$sql_dn);
while ($row_dn=mysqli_fetch_array($records_dn)){
echo '<option value="'.$row_dn['catagory'].'">'.$row_dn['catagory'].'</option>';
}
?>
</select>
<br/>
<br/>
<div class="cf_header5">SIZE</div>
<select name="size" style="width:150px; height:25px;font-size:16px">
<option value="">Please select ....</option>
<?php
$sql_se = "SELECT distinct size FROM products where size !='' order by size";
$records_se=mysqli_query($dbcon,$sql_se);
while ($row_se=mysqli_fetch_array($records_se)){
echo '<option value="'.$row_se['size'].'">'.$row_se['size'].'</option>';
}
?>
</select>
<br/>
<br/>
<input type="submit" name="submit" value="Search" />
</form>
<?php //get the value from dropdown list and stored it to a variable
$material=isset($_POST['material']) ? $_POST['material'] : "";
$size=isset($_POST['size']) ? $_POST['size'] : "";
$description=isset($_POST['description']) ? $_POST['description'] : "";
?>
</div>
<div class="col-md-10">
<div id="main">
<header>
<div class="logo-outer">
<div class="logo"> <img src="../images/logo4.png" /> </div>
<?php
//////SET UP THE TOTAL images PER PAGE & CALCULATIONS:
$per_page = 12;// Number of images per page, change for a different number of images per page
// Get the page and offset value:
if (isset($_GET['page'])) {
$page = $_GET['page'] - 1;
$offset = $page * $per_page;
}
else {
$page = 0;
$offset = 0;
}
//Display no of items in cart
echo '<a href="viewcart.php?page=';echo $page+1;echo '&type=buckle';echo'">';
echo "You have";
$t_sql="select count(product_id) as nocart from cart where user_name='$user_name'";
$t_run=mysqli_query($dbcon,$t_sql);
$t_row=mysqli_fetch_array($t_run);
$cart_count=$t_row['nocart'];
echo ' ';
echo '<span class="badge" >';echo $cart_count; echo '</span>';
echo ' items on list</a>';
//end of display number of items in cart
?>
</div>
</div>
</header>
<div class="margin">
<div id="pagination"><!-- #pagination start -->
<?php
$images_sql="select count(id) from products where product_type='buckle'";
if(isset($_POST['material'])and $material!='')
{$images_sql=$images_sql." and material='$material'";}
if(isset($_POST['description'])and $description!='')
{$images_sql=$images_sql." and catagory='$description'";}
if(isset($_POST['size'])and $size!='')
{$images_sql=$images_sql." and size='$size'";}
$images_sql=$images_sql." ORDER by id ASC";
$result_images = mysqli_query($dbcon, $images_sql);
$row_images = mysqli_fetch_array($result_images);
$total_images = $row_images[0];
// Calculate the number of pages:
if ($total_images > $per_page) {//If there is more than one page
$pages_total = ceil($total_images / $per_page);
$page_up = $page + 2;
$page_down = $page;
$display ='';//leave the display variable empty so it doesn't hide anything
}
else {//Else if there is only one page
$pages = 1;
$pages_total = 1;
$display = ' class="display-none"';//class to hide page count and buttons if only one page
}
////// DISPLAY THE PAGE COUNT AND BUTTONS:
echo '<h2'.$display.'>Page '; echo $page + 1 .' of '.$pages_total;//Page out of total pages
$i = 1;//Set the $i counting variable to 1
echo '<div id="pageNav"'.$display.'>';// $display variable will do nothing if more than one page
// Show the page buttons:
if ($page) {
echo '<button><<</button>';//Button for first page [<<]
echo '<button><</button>';//Button for previous page [<]
}
for ($i=1;$i<=$pages_total;$i++) {
if(($i==$page+1)) {
echo '<button class="active">'.$i.'</button>';//Button for active page, underlined using 'active' class
}
//In this next if statement, calculate how many buttonso show.
if(($i!=$page+1)&&($i<=$page+3)&&($i>=$page-1)) {//This is set for two below and two above the current page
echo '<button>'.$i.'</button>'; }
}
if (($page + 1) != $pages_total) {
echo '<button>></button>';//Button for next page [>]
echo '<button>>></button>';//Button for last page [>>]
}
echo '</div>';// #pageNav end
?>
</div>
<div id="gallery"><!-- Gallery start-->
<?php
// DISPLAY THE images:
//Define the SQL statement based on the dropdown list
if ($total_images>0)
{
$img_sql="select * from products where product_type='buckle'";
if(isset($_POST['material'])and $material!='')
{$img_sql=$img_sql." and material='$material'";}
if(isset($_POST['description'])and $description!='')
{$img_sql=$img_sql." and catagory='$description'";}
if(isset($_POST['size'])and $size!='')
{$img_sql=$img_sql." and size='$size'";}
$img_sql=$img_sql." ORDER by id ASC LIMIT $offset, $per_page";
$result = mysqli_query($dbcon, $img_sql);
while($row = mysqli_fetch_array($result)) {//Open the while array loop
//Define the image variable:
$image=$row['images'];
$product_id=$row['product_id'];
$product_type=$row['product_type'];
$size=$row['size'];
$material=$row['material'];
$description=$row['catagory'];
echo '<div class="img-container">';
echo '<div class="img">';
echo '<img src="images/'.$image.'">';
echo '</a>';
echo '</div>';
echo $product_id;echo '    ';
echo 'Add to List';
echo '<br/>Size:';echo $size;
echo '    Material: '; echo $material ;
echo '<br/>Description: ';echo $description;
echo '</div>';// .img-container end
}//Close the while array loop
}
else
{
echo'<br/><br>';
echo '<h1>Sorry! No result is matched, please search again.</h1>';
echo'<br/><br>';
}
?>
</div>
<!-- Gallery end-->
<div class="clearfix"></div>
</div>
</div>
<!-- #main end -->
</div>
</body>
</html>
Your logic seems OK but your problem is when you navigate trough pages you make a new call of the document, which doesn't include variables like filters but the current page ($_GET['page']).
Either you send filters as variables trough URL as well, which isn't the cleanest way to do table pagination.
Or you gather results in a javascript array, and then on click on a pagination button display the previous/next rows. By doing this you also avoid refreshing the whole document every time, which isn't necessary.
Hey there stackoverflow users, i have come upon a very confusing problem that I cant seem to move past. I am creating a forum type web page and am currently working on the comments section. I have a form that uses the post method to send your comment as well as a hidden input to store the threads ID. I will post the entire php file below just to make sure nothing is left out.
<?php
session_start();
parse_str($_SERVER['QUERY_STRING'], $link);
$threadID = $link['ID'];
require("config.php");
$connection = mysqli_connect($host, $user, $password, $database);
$error = mysqli_connect_error();
if($error != null) {
$output = "<p>Unable to connect to database!</p>";
exit($output);
} else {
//Get Thread Data
$query = "SELECT username, title, content FROM threads, users WHERE threads.ID = $threadID AND users.ID = threads.makerID;";
$results = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($results);
//Get Comment Data
$query = "SELECT username, comment FROM comments, users WHERE threadID = $threadID AND users.ID = comments.makerID;";
$results = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($results);
}
?>
<!DOCTYPE html>
<html>
<head lang="en">
<title>BodyweightMate</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../css/styling.css"/>
</head>
<body>
<!--Top masthead-->
<header class="masthead" id="top">
<h1 class="masthead-title"> Welcome To BodyweightMate </h1>
</header>
<!--Navigation bar-->
<nav class="navbar">
<table class="navbar-table">
<tr>
<!--Logo-->
<td>
<a class="navbar-brand" href="main.php">
<img src="../images/logo.jpg" alt="BodyweightMate" height="30" width="30">
</a>
</td>
<!--Login/Profile-->
<?php if(isset($_SESSION['login_user'])) {
echo"<td><a class=\"navbar-profile\" href=\"profile.php\"> Profile </a></td>";
echo"<td><a class=\"navbar-logout\" href=\"logout.php\"> Logout </a></td>";
} else {
echo"<td><a class=\"navbar-login\" href=\"login.php\"> Login </a></td>";
}?>
</tr>
</table>
</nav>
<!--Main portion-->
<section class="content-section">
<article>
<h3><?php echo $row['username']. ": " .$row['title']; ?></h3>
<p><?php echo $row['content']; ?></p>
<br>
<h3>Comments</h3>
<p>Some annoying user: Gr8 B8 M8</p>
<p>Annoying users friend: I R8 8/8</p>
</article>
<div>
<!--If logged in, ability to comment-->
<?php if(isset($_SESSION['login_user'])): ?>
<form role="comment-form" method="POST" action="processcomment.php" id="mainForm">
<input type="hidden" value="$threadID" name="threadID">
<div class="form-group">
<label for="comment">Comment </label> <br>
<textarea class="comment-text" name="comment" rows="2" maxlength="255"></textarea>
</div> <br>
<input type="Submit" class="btn-newcomment" value="Submit Comment" name="submit">
</form>
<?php endif ?>
</div>
</section>
<!--Right portion-->
<aside class="content-aside">
<div>
<!--If logged in, be able to create a thread-->
<?php
if(isset($_SESSION['login_user'])) {
echo"<form method=\"post\" action=\"makethread.php\">";
echo"<input type=\"submit\" class=\"btn-newthread\" value=\"Create New Thread\" name=\"submit\">";
echo"</form>";
}
?>
</div>
<!--Info-->
<div>
<p> GOING TO NEED A SEARCH FUNCTION HERE
This is the cool little aside section. It will always be there to provide you with some very nice little details, helpful links, maybe a list of moderators? who knows! The uses are endless when you have a beautiful little aside like this one! Here are a few very useful bodyweight fitness links to get us started :D </p>
</div>
<br>
<div>
<ul class="content-aside-links">
<li>
Reddit's Bodyweightfitness Forum
</li>
<li>
Reddit's Bodyweightfitness RR
</li>
<li>
Antranik's Bodyweightfitness Routine
</li>
</ul>
</div>
<div></div>
</aside>
<!--Footer -->
<footer class="footer">
<div>
<p> Use of this site constitutes acceptance of our User Agreement © 2017 BodyweightMate inc. All rights reserved. </p>
</div>
</footer>
</body>
</html>
The error is occurring under the main portion where i check if a user is logged in, and if they are add a short form consisting of a message, a text area, and a submit button. This form sends the information to the following php file.
<?php
session_start();
if(!isset($_SESSION['login_user'])) { header("location: main.php"); }
?>
<!DOCTYPE html>
<html>
<body>
<?php
require("config.php");
$connection = mysqli_connect($host, $user, $password, $database);
$error = mysqli_connect_error();
if($error != null) {
$output = "<p>Unable to connect to database!</p>";
exit($output);
} else {
//Validation
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$comment = $_POST['comment'];
$threadID = $_POST['threadID'];
$user = $_SESSION['login_user'];
} else {
//Redirect back to register
echo"<p>Form must use post or input was bypassed.</p>";
echo" Return to home page. ";
mysqli_close($connection);
exit();
}
There is no issue with connecting to the database, and I don't believe the remainder of the code is necessary to help me with this error since that one if statement of checking if the form is using post is failing and the else statement is always called. Why is this? i have rewritten the form multiple times ensuring that its properly structured and using post yet it fails every time!
I have problem with my (made with tutorial) PHP comment box.
The problem is this number 1. I think that problem is in last code, but as I am beginner I don't know where is problem.
I'm posting all 3 php files without header and footer file.
PrtSc of problem on page
Source code in chrome of page
This is full code in php....
First php file
<?php
$title = "FilmoviRecenzije";
$content = '
<img src="Slike_filmovi/novo_Mockingjay2.jpg" class="imgLeft"/>
<h2>The Hunger Games: Mockingjay - Part 2 (2015)</h2>
<p><i>"Žanr: Avantura, Znanstvena fantastika"</i></p>
<p>Režija: Francis Lawrence<p>
<h4>
U grand finalu spektakularne kino-hit franšize Igre gladi Katniss Everdeen (Jennifer Lawrence),
nakon što je postala vođa masovne pobune potlačenih, zajedno sa Distriktom 13 pokreće
sveopću revoluciju protiv autokratskog Kapitola. Katniss nastavlja svoju ulogu heroja
koji se u nevjerojatnoj bitci za preživljavanje bori za svoj narod!
</h4>
<dev class="videoCenter">
<iframe width="720" height="405" src="https://www.youtube.com/embed/n-7K_OjsDCQ" frameborder="0" allowfullscreen></iframe>
</dev>
';
include ('Template_Mockingjay2.php');
?>
Next file which is connected through "include" is:
<?php include('Header.php'); ?>
<div id="wrapper">
<div id="banner">
</div>
<nav id="navigation">
<ul id="nav">
<li>Početna </li>
<li>Novi Filmovi</li>
<li>Kontakt</li>
</ul>
</nav>
<div id="content_area">
<?php echo $content; ?>
</div>
<div id="sidebar">
<?php echo include('novo_Mockingjay2_komentar.php'); ?>
</div>
<?php include ("Footer.php"); ?>
And last file for Mysql, same included is:
<?php
mysql_connect("localhost","root","");
mysql_select_db("db_komentari");
if (isset($_POST['Ime']) && isset($_POST['Komentar'])){
// $Ime = isset($_POST['Ime']) ? $_POST['Ime'] :
$Ime = $_POST['Ime'];
$Komentar = $_POST['Komentar'];
$submit = $_POST['submit'];
$dbLink = mysql_connect("localhost","root","");
if($submit)
{
if($Ime&&$Komentar)
{
$insert=mysql_query("INSERT INTO novo_mockingjay2 (Ime,Komentar) VALUES ('$Ime','$Komentar') ");
echo "<meta HTTP-EQUIV='REFRESH' content='0; url=novo_Mockingjay2.php'>";
}
else
{
echo "Molim Vas ispunite oba polja";
}
}
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Komentari</title>
<center>
<form action="novo_Mockingjay2.php" method="POST">
<table>
<tr><td>Ime: <br><input type="text" name="Ime"/></td></tr>
<tr><td colspan="2">Komentar: </td></tr>
<tr><td colspan="5"><textarea name="Komentar" rows="1" cols="18"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="Objavi"></td></tr>
</table>
</form>
<?php
$dbLink = mysql_connect("localhost","root","");
$getquery=mysql_query("SELECT * FROM novo_mockingjay2 ORDER BY ID DESC");
while($rows=mysql_fetch_assoc($getquery))
{
$ID=$rows['ID'];
$Ime=$rows['Ime'];
$Komentar=$rows['Komentar'];
echo $Ime . ':<br/>' . $Komentar . '<br/>' . '<br/>' . '<hr size="4"/>';}
?>
Thank You in Advance!
As include language construct returns 1 on successful file including - this value is passed to your echo, so line:
echo include('novo_Mockingjay2_komentar.php');
means - include file, execute it and echo the result of inclusion. As result is 1 - it's echo'ed.
Change it to:
include('novo_Mockingjay2_komentar.php'); // without echo
<?php
mysql_connect("localhost","username","password") or die (mysql_error());
mysql_select_db("databasename") or die (mysql_error());
$sqlmydata = mysql_query("SELECT id, label, title, info, body FROM table LIMIT 0,10");
// Build the Output Section Here
$outputListdata1 = '';
while($row = mysql_fetch_array($sqldata)){
$id = $row["id"];
$label = $row["label"];
$title = $row["title"];
$info = $row["info"];
$body = $row["body"];
$outputListdata1 .= '<div class="content1">
<a href= "#" >' .$title. '</a>
</div><!-- end of content1 -->
<div class="content2">
' .$info. '
</div><!-- end of content2 -->';
} // close while loop
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>my site</title>
</head>
<body>
<div class="container">
<?php print "$outputListdata1"; ?>
</div><!-- end of container -->
</body>
</html>
look at the line14 in $outputListdata1 where $title is placed in between href:
<a href="#" >' .$title. '</a>
i want to insert a $label variable in place of # inside the href. And so, it should display the result of the variable from my database.
<a href="$label" >' .$title. '</a>
For example:
if my database have the result for the $label variable is karthik means then it should look like(consider variable $title has the result as fan of stack overflow),
<a href="karthik" > fan of stack overflow</a>
i know my question maybe simple or tough but i'm 100% sure you guys come forward with an answer..thanks in advance.
(note: this is my second question so plz excuse it my questioning method is awkward)
You can write php in line with HTML, with the echo command you can output variables/strings into the HTML that will be sent to the user
<a href="<?php echo $var1; ?>" > <?php echo $var2; ?></a>
Just insert the $Label Var in the Attribute:
<?php
$outputListdata1 .= '<div class="content1">
<a href= "' .$label. '" >' .$title. '</a>
</div><!-- end of content1 -->
<div class="content2">' .$info. '</div><!-- end of content2 -->';
?>
You should learn the Basics of PHP, maybe do a Tutorial like this: php-for-the-absolute-beginner.
I just put the link in something like
$SomeLink="index.php";
then use the
echo "<div>$nam Your Password Could not be Found
<br><br>
<a href=$SomeLink>Click and Return to Login Page</a>
</div>";
with the double quotes on the ends it works on IE, Edge and Google Chrome
It isn't working because you encapsulated the variable with a single quote. Use a double quote to retrieve the value of the variable rather than the literal variable text.
$outputListdata1 .= "<div class='content1'><a href='$label'>$title</a></div><div class='content2'>$info</div>";
Hi use it in the same way as you use $title:
$outputListdata1 .= '<div class="content1">
<a href= "'.$label.'" >' .$title. '</a>
</div><!-- end of content1 -->
<div class="content2">
' .$info. '
</div><!-- end of content2 -->';
<a href = "$label" >' .$title. '</a>
Just paste that line of code in line 14 and this will work for you guaranteed ;)
<?php mysql_connect("localhost","username","password") or die (mysql_error());
mysql_select_db("databasename") or die (mysql_error());
$sqlmydata = mysql_query("SELECT id, label, title, info, body FROM table LIMIT 0,10"); // Build the Output Section Here
$outputListdata1 = '';
while($row = mysql_fetch_array($sqldata))
{
$id = $row["id"];
$label = $row["label"];
$title = $row["title"];
$info = $row["info"];
} // close while loop
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>my site</title>
</head>
<body>
<div class="container">
<div class="content1">
<a href= "#" ><?php echo $title;?></a>
</div><!-- end of content1 -->
<div class="content2">
<?php echo $info;?>
</div>
</div><!-- end of container -->
</body>
</html>
I'm after creating a webpage that includes a blog section and it currently displays the whole post on the homepage. I'd like to set it so that it only displays a certain part of the entry i.e 50 words. I'd then like to be able to set it so that I have a read more button below the post that links to the post id. I currently use post.php?=# (# = whatever the post id is).
Here is the homepage:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Blog Name</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<body>
<div id="upper-bar">
<div id="bar-content">
Home
Archives
Contact
About
<img src="images/twitter.png" id="tweet"><img src="images/feed.png" id="feed">
</div>
</div>
<div id="clear">
</div>
<div class="main">
<h1>Blog Name</h1>
<div class="post-col">
<?php
mysql_connect ('localhost', 'root', 'root') ;
mysql_select_db ('tmlblog');
$sql = "SELECT * FROM php_blog ORDER BY timestamp DESC LIMIT 5";
$result = mysql_query($sql) or print ("Can't select entries from table php_blog.<br />" . $sql . "<br />" . mysql_error());
while($row = mysql_fetch_array($result)) {
$date = date("l F d Y", $row['timestamp']);
$title = stripslashes($row['title']);
$entry = stripslashes($row['entry']);
$id = $row['id'];
?>
<div id='post-info'><?php echo "<p id='title'><strong>" . $title . "</strong></p>"; ?><br /></div>
<div id="post">
<?php echo $entry; ?>
<!--<br /><br />
Posted on <?php echo $date; ?> !-->
</p>
</div>
</p>
</div>
<?php
}
?>
</div>
</div>
</body>
</html>
Must it be words? Very long or short words could result in vastly differing character counts. Perhaps you should do a character count instead.
If so, you could use substr to print part of a string (change the 50 to whichever number of characters you want):
<?php echo htmlspecialchars(substr($entry, 0, 50)) ?>...
read more
Alternatively, you could select a substring through SQL with SELECT SUBSTRING
SELECT SUBSTRING_INDEX(entry, ' ', 51) as entry FROM php_blog;
This will take up to 50 words for each entry (assuming that words are delimited with a single whitespace).
$truncatedEntry = substr($entry, 0, 50) . '...';
// truncate with word-wrapping
$truncatedEntry = substr($entry, 0, strpos(wordwrap($entry, 50), "\n")) . ' ...';
On your main page, query your blog posts like this:
$sql = "SELECT id, title, blog_timestamp, LEFT(blog_contents, 50) AS txt
FROM php_blog ORDER BY timestamp DESC LIMIT 5";
Then, when processing the results, trim to the nearest word and add a link.