If there is no 'title' show something

It’s me again and need help with this one. I’m sure is not something hard but can’t do it alone. So now I have title like this

<title><?php echo $caption;?></title>

But if there is no $caption in database I get the URL of page instead. How to chek if there is no title to show something static ‘No title’ for example?

Also I have something strange in output of facebook meta tags. This is how I get image path:

<meta property="og:image" content="http://mysite.com/upload/<?php echo $file_path;?>" />

And in output I get two dots ‘…’ I don’t know from where

<meta property="og:image" content="http://mysite.com/upload/../upload/067d15bf9df056d7dc67f82bb573edf9.jpg" />

Thank’s in advance!

The second problem: it seems that $file_path contains a relative path.

For both problems: are you using a template system? You’ll have to find the part of the script that actually puts the values in $caption and $file_path and operate on that code.

You can use the ternary operator to check if $caption is empty and output a default title if so.

<title><?php echo (empty($caption)) ? $caption : 'No title' ?></title>

Yes, I was looking for something like this. But this doesn’t work. If there is no title there is url… instead of ‘No title’…

Try this instead:

[COLOR=#000000][FONT=monospace]<title>[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]<?php [/FONT][/COLOR][COLOR=#007700][FONT=monospace]echo empty([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]$caption[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) ? [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]'No $caption ' : [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]$caption; ?>[/FONT][/COLOR][COLOR=#000000][FONT=monospace]</title>

[ot]I always used isset() but looks as though empty() is better because not only does it return FALSE for a variable not set it also caters for empty variables.

Oops, sorry, I got the order the wrong way round, it should be:

<title><?php echo (empty($caption)) ? 'No title' : $caption ?></title>

Edit: John beat me to it :wink:

Yes, now is ok. Working good.
For my second question I still can’t understand from where are this two dots…

How is $file_path derived? Where does it come from?

from database ->

$sql = "SELECT name, caption, file_path FROM images order by id desc LIMIT $offset, $rowsperpage";

When I upload image in DB is stored like this


In upload path to folder is like this

$path = "../upload/" . $myFile;

So from here is come… but if remove them from upload form it doesn’t work

I’ve made it like this and seems to me is working

<meta property="og:image" content="http://localhost<?php echo substr($file_path, 2);?>" />