displaying uploaded images - php

I am trying to create a code which obtains uploaded images, stores them and also displays the image preview and confirms that the image was successfully uploaded.
<?php
$name=$_FILES['myfile']['name'];
$tmp=$_FILES['myfile']['tmp_name'];
$error=$_FILES['myfile']['error'];
$path='myweb/';
if(move_uploaded_file($tmp,$path.$name)==1){echo 'success';}else{echo $error;};
echo ('<img src="$path.$name" height="100px" width="100px"/>');
<?php
The problem is that images are not displaying.
I have also tried
echo ('<img src="$path$name" height="100px" width="100px"/>');
but it still doesn't work.
How can I get the images to display?

problem was with single and double quotes.
echo '<img src="' . $path.$name . '" height="100px" width="100px"/>';
You have used single quote and because of that it was not taking the variable name.

You have to include the variable in the printed string like this:
echo ('<img src="'.$path.$name.'" height="100px" width="100px"/>');
You can read more about it in the documentation.
If you don't do so, PHP will think that you want to print the text $path.$name instead the variables content.

<img src="<?php echo $path,$name; ?>" height="100px" width="100px"/>
OR
echo '<img src="' . $path.$name . '" height="100px" width="100px"/>';

There is a difference between using double "" and single '' quotes.
Double quotes are getting parsed, which means that
$variable = 10;
echo "$variable";
will output:
10
Single quotes don't get parsed:
$variable = 10;
echo '$variable';
will output:
$variable
you use variables within '' which means they don't get parsed.

i replaced line 13 in above code like so.
echo (" <img src=$path.$name height=100px width=100px/>");
And its working now.
Seems like double quotes were the problem here.
I'l read m0re about it.
Thank u s0 much guys u all've been very helpful.:)

Related

Using php to echo a dynamic URL correctly

I am using php and conditional code to give a dynamic url to a photo. The result should read as http://example.com/biophotos/1.jpg. But instead I am getting
http://example.com/%22http://example.com/biophotos/1.jpg%22
How can I force it to just give the one url and without the %22 space on the end?
if ($emresult[0]['photo'] = "y") {
echo '<img class=\"alignright\" src=\"http://example.com/biophotos/' .
$theID . '.jpg" width=\"150\" height=\"150\">';
}
else {
echo 'There is no author photo.';
}
There is no reason in escaping double quotes when your using single quotes.
echo '<img class="alignright" src="http://example.com/biophotos/' . $theID . '.jpg" width="150" height="150" />';
As much as I agree with #slik, you also might want to look into %22 (double quotes) added to url out of nowhere
Check if magic quotes is on in your php.ini file. You can look into html_entity_encode() to encode the %22 as a slash.

Single and Double quote issues in print php variables

Am echoing php variables which works fine but when i tried to output image, nothing seems to work
working.php
echo ("addMarker($lat, $lon,'<b>$name</b>$address<br><br>$desc');\n");
not_working.php
for image display, i added
<img src='http://localhost/services/status/" .$pic. "'>
hence
echo ("addMarker($lat, $lon,<img src='http://localhost/services/status/" .$pic. "'>,'<b>$name</b>$pic<br><br>$desc');\n");
Any Help
The php documentation about strings should clarify your issue, i hope. In simple words, variables are not expanded (parsed) in single quotes.
Best solution is to use sprintf:
sprintf('<img src="http://localhost/services/status/%s">', $pic);
OK solution:
echo '<img src="http://localhost/services/status/' . $pic . '">'
Not so ok solution:
echo "<img src=\"http://localhost/services/status/$pic\">"

Displaying image from within a php module

I am trying to print the image whose location is saved in my database, I have stored the absolute location in the database and not the relative one , I browsed through a lot of question including this one
include a PHP result in img src tag
I tried all the options that were given to the respective asker of the question but I didn't get my output, rest everything is being displayed apart from the image, its showing no file found
Here's my code, any help will be appreciated
while($result=#mysql_fetch_array($resul,MYSQL_ASSOC)){
$image = $result['image'];
echo $result['company'] . " " . $result['model'] . "<br>" ;
echo '<img src="$image" height="50" width="50" />';
}
I know I am using mysql functions instead of mysqli but this code is not getting live ever.
As watcher said, PHP does not do variable interpolation within single-quoted strings.
The most important feature of double-quoted strings is the fact that variable names will be expanded.
Read more about strings from the PHP manual.
Therefore, when you view the HTML, you will literally see this:
<img src="$image" height="50" width="50" />
Your code should be:
while($result = mysql_fetch_array($resul,MYSQL_ASSOC)) {
$image = $result['image'];
echo $result['company'] . " " . $result['model'] . "<br>";
echo "<img src='$image' height='50' width='50'>";
}
Alternatively, interpolate the array value:
while($result = mysql_fetch_array($resul,MYSQL_ASSOC)) {
echo $result['company'] . " " . $result['model'] . "<br>";
echo "<img src='{$result['image']}' height='50' width='50'>";
}
If the filename contains spaces or other special characters, you may need to use rawurlencode(). In this case, you must concatenate the string since you are calling a function that returns a string value:
echo "<img src='" . rawurlencode($result['image']) . "' height='50' width='50'>";
PHP will not interpolate variables when you include them within single quotes. For more information, see the manual.

Echoing through PHP an HTML image path which is dynamic

I am trying to echo a dynamic image path in PHP. I have this code that works
<?php
//this code works
$image = '<img src="img/newlogo.jpg">';
echo($image);
?>
//gives me an image
And this code that doesn't
<?php
//this code doesn't
$lineofstring='newlogo.jpg';
$image = '<img src="img/$lineofstring">';
echo($image);
?>
$lineofsting is actually going to be an image path which is stored in a mysql database where one row is filled with, for example: pictureabc.jpg, second row is picturexyz.jpg etc.
I am trying to pass on the searched imagepath name onto $lineofstring, which is then echo'd but no picture comes out. Where am i going wrong?
To interpolate variables in PHP, you need to use double quote marks ", e.g.
$image = "<img src=\"img/$lineofstring\">";
In this case, you need to escape the inner ".
You can also concatenate strings with .:
$image = '<img src="img/' . $lineofstring . '">';
if it's easier.
Your $lineofstring variable is in a string using single quotes. Single quotes tell PHP to use the string literally so your variable is not being recognized as a variable. Change it to double quotes or use concatenation to accomplish your goals.
$image = "<img src=\"img/$lineofstring\">";
Or:
$image = '"<img src="img'.$lineofstring.'">';
$profilepicture="images/profiles/".$myid.".gif";
$noprofilepicture="images/profiles/no_avatar.gif";
echo "<IMG SRC='";
if (file_exists($profilepicture)) {
echo "".$profilepicture."";
} else {
echo "".$noprofilepicture."";
}
echo "'>";

My php variables are not being printed out.

<?php if ( is_user_logged_in() ) {
echo '<img id="visit-the-forums" src="<?php bloginfo('template_url') ?>/images/visit-the-forums.png" alt="Check out the Forums!" />'
} else {
echo '<img id="join-the-forums" src="<?php bloginfo('template_url') ?>/images/join-the-forums.png" alt="Join the Forums!" />'
}
?>
I think there is something wrong w/ the way I set up the "php bloginfo" code inside but I'm not sure how to fix it.
The code below should work for you. You had to make use of string concatenation:
<?php if ( is_user_logged_in() ) {
echo '<img id="visit-the-forums" src="' . bloginfo('template_url'). '/images/visit-the-forums.png" alt="Check out the Forums!" />'
} else {
echo '<img id="join-the-forums" src="' . bloginfo('template_url') . '/images/join-the-forums.png" alt="Join the Forums!" />'
}
?>
You have 2 problems:
Most likely this code is not
executing because you're echoing a
string that's delimited with single
quotes and inside it you've put
unescaped single quotes. (You can tell this is the case because even on this page, the syntax colouring is messed up :)
Even if you had escaped the single
quotes (e.g. <?php
bloginfo(\'template_url\') ?>) this
would not work because you're using
PHP to echo PHP code, which will then
be passed to the browser, instead of
being executed by the PHP engine.
What you need to do is to add the result of bloginfo() (or get_bloginfo(), see edit below) to the string you're outputting:
echo '<img id="visit-the-forums" src="'. bloginfo('template_url') . '/images/visit-the-forums.png" alt="Check out the Forums!" />'
(note the correct usage of single-quotes as delimiters, and the correct syntax highlighting on this page: strings are reddish, code is black)
EDIT: if bloginfo here is the WordPress function, you will want to replace it in my code above with get_bloginfo which actually returns the result rather than printing it, but your original question wasn't clear about what bloginfo is/does.

Categories