Call a php function to echo in place - php

I have this code
$css=0;
<?php
echo "<div>";
function style(){
global $css;
echo $css;
}
echo "</div>";
$css =5 ; style();
?>
what i want to happen is this
<div>5</div>
and what really happens is
<div></div>5
I need to declare the value of the variable then go back and echo it in the same place it intended to be in, and I can't change the order due to many reasons in the code structure .
UPDATE :: after reading all the answers it seems i wasn't clear enough .
<html>
<?php $css=0; ?>
<div id="<?php echo $css ?>"></div>
<div id ="K"></div>
<?php
$css=5;
?>
</html>
this is the situation
1- i can not declare $css before the echo.
2- i can not reposition anything from this structure .
3- i can not put #K after the declaring of the $css .
what i really need a way to put the value inside the variable and let echo where it's .
any ideas ?

you can try this as well using js
<?php
$css=0;
echo "<div id='tt'>";
/*function style(){global $css; echo $css;}*/
echo "</div>";
$css =5 ;
echo "<script>";
echo "document.getElementById('tt').innerHTML = $css";
echo "</script>";
?>

Your function is run when you call it, and as it is called below the you get the expected 5.
To fix this:
echo "<div>";
style();
echo "</div>";

<?php
echo "<div>";
function style() {
global $css;
echo $css;
}
$css =5 ;
style();
echo "</div>";
?>
or simply:
<?php
function style() {
global $css;
echo $css;
}
$css = 5;
echo "<div>" . style() . "</div>";
?>
Previously, you well calling the function to echo out the variable after closing the div.

Related

PHP function output sent as variable across GET

This code with a couple of functions to modify a date works:
<?php
function date_up($input_date){
echo date("Y-m-d",strtotime('+1 day',strtotime($input_date)));
}
function date_up_friday($input_date){
echo date("Y-m-d",strtotime('+3 day',strtotime($input_date)));
}
function date_down($input_date){
return date("Y-m-d",strtotime('-1 day',strtotime($input_date)));
}
function date_down_monday($input_date){
echo date("Y-m-d",strtotime('-3 day',strtotime($input_date)));
}
echo 'Input date: ';echo $date='2017-09-25';
echo '<BR><BR>';
echo 'Down 1: ';
echo date_down($date);
echo '<BR>';
echo 'Down 3: ';date_down_monday($date);
echo '<BR>';
echo 'Up 1: ';date_up($date);
echo '<BR>';
echo 'Up 3: ';date_up_friday($date);
?>
I am trying to send the output from the function to another page when the hyperlink. New code shown below. But no date is sent in the hyperlink. I don't understand this and I apologise if their is a simple explanation. I am new to working with PHP.
Many thanks in advance !
echo 'Input date: ';echo $date='2017-09-25';
echo '<BR><BR>';
echo '<a href="Dev/Update_date_shortfall.php?date="';
echo date_down($date);
echo '">Down 1: </a>';
echo date_down($date);
echo '<BR>';
echo 'Down 3: ';date_down_monday($date);
echo '<BR>';
echo 'Up 1: ';date_up($date);
echo '<BR>';
echo 'Up 3: ';date_up_friday($date);
You need to send it like this:
echo 'Down 1: ';
And in Update_date_shortfall.php, you need to
echo $_GET['date'];
you can try this
echo 'Down 1: ';
working demo : https://ideone.com/bZNwMr

How to pass the name of the file as a parameter to the controller?

how can i pass the id as the name.I used this code.
<?php
$i = 1;
foreach ($view as $row)
{
echo "<tr>";
echo "<td>".$i."</td>";
echo "<a href="<?php echo base_url();?>admin/play/songs/<?php echo $row->audio"><td>". $row->audio . "</td>";
$i++;
echo "</tr>";
}
?>
I want to play the song when user press the name of the song.but i am not able to pass the name of the song to my controller "play".so please help and this is my controller where i want to pass the data.
class Play extends CI_Controller {
public function songs($name){
$data['name'] = $name;
$this->load->view('admin/play',$data);
}
You should grab id instead of name it will make your job easier.
<?php
$i = 1;
foreach ($view as $row)
{
echo "<tr>";
echo "<td>".$i."</td>";
echo "<a href="<?php echo base_url();?>admin/play/songs/<?php echo $row->id"><td>". $row->audio . "</td>";
$i++;
echo "</tr>";
}
?>
First of all you should know that you can pass the url you want after base_url as a parament in base_url like
base_url('admin/play/songs/');
Secondly you can pass anything to controller via this method
base_url('admin/play/songs/{$row->audio}');
Just excited to know if it works

How to assign a PHP expression to a PHP variable

I need to do something like
$var = "Hello World ..the value is <?php echo 'XYZ' ?>";
Any help will be highly useful. I am stuck in this from the very long time but not able to acheive this. please help
Below is my PHP code that I need to assigned again to php variable (this variable will be passed to return of my ajax call)
<div class="photo-post">
<h4 class="h4-1">Some data...</h4>
<?php
$i=0;
$unique_seq="888094499";
$pic_counter=1;
foreach (glob("target/*".$unique_seq."*") as $filename)
{
$i++;
}
$total_pics=$i;
echo "<div id='post-photo-slider'>";
if($i>1)
{
echo "<a href='#' class='control_next_photo'>></a>";
echo "<a href='#' class='control_prev_photo'><</a>";
}
echo "<ul>";
foreach (glob("target/*".$unique_seq."*") as $filename)
{
echo "<li>";
echo "<div class='photos-slide-container'>";
echo "<img src='".$filename."' width='540px' height='225px'>";
echo "<span class='count-span-photos'>".$pic_counter." of ".$total_pics."</span>";
echo "</div>";
echo "</li>";
$pic_counter++;
}
if ($i==1)
{
echo "<li></li>";
}
echo "</ul>";
echo "</div><!-- post-photo-slider END -->";
echo "<hr class='hr4'>";
?>
</div><!-- photo end -->
you cannot do it in this way
$var = "Hello World ..the value is <?php echo 'XYZ' ?>";
when you return this string to your javascript php code cannot be execute on client side!!!!
why do not return do this simple way?
$var = "Hello World ..the value is " . "XYZ";

PHP Session SID URL - url does not have SID

I'm trying to learn how to use Sessions to maintain state between pages.
I think my problem is that I dont know how to escape properly. When I load the page im not getting the SID at the end of the url, instead I'm getting this:
mytestsite.com/login.php?<?php echo SID;?>
I have session_start() at the top of every page. And the session initialy works as I see the login name appear on the page and the Register and Login links, but then when I click to another page the session is not maintained.
The main site nav is dynamically createdusing an array($nav) and foreach loop. Here too I'm not sure how to echo the url and php SID constant. I don't think my syntax is correct.
//LOGIN BAR
echo "<nav id='statusBar'>";
echo "<ul>";
if(isset($_SESSION['userIn']) && $_SESSION['userIn'] != ''){
echo "<li id='userLo'>Log Out</li>";
echo "<li id='userLi'>User Logged In: " . $_SESSION['userIn'] . "</li>";
} else{
echo '<li>Register</li>';
echo '<li>Login</li>';
}
echo "</ul>";
echo "</nav>";
//START MAIN MENU
echo "<nav id='nav'> ";
$nav = array();
$nav['index.php?<?php echo SID;?>'] = 'Home';
$nav['public1.php?<?php echo SID;?>'] = 'Public 1';
$nav['public2.php?<?php echo SID;?>'] = 'Public 2';
$nav['members.php?<?php echo SID;?>'] = 'Members';
//CREATE UNORDERED LIST
echo '<ul>';
foreach ($nav as $key => $navValues) {
echo "<li>";
echo "<a href='$key'>$navValues</a>";
echo "</li>";
}
echo '</ul>';
echo "</nav>";
Below everything within echo '..'; is interpreted as html.
echo '<li>Login</li>';
If you want to use variables inside the string you have to concatenate them like so:
echo 'Login' ;
For concatenating php code take a look at:
http://php.net/manual/en/language.operators.string.php
and more about sessions:
http://php.net/manual/en/session.constants.php

Add class to variable inside echo

How can i add to variable $title inside echo ? In the foreach:
<?php
foreach($this->searchfields as $fsearch) {
$title = $this->field->showFieldTitle($this->catid,$fsearch);
echo "<div id=".$fsearch->name.">".htmlspecialchars($title)."";
$this->field->showFieldSearch($fsearch,$this->catid,null);
echo "</div>";
}?>
I tried echo "<div id=".$fsearch->name.">".htmlspecialchars(<div class="header">$title</div>).""; but it doesnt work :)
How about:
echo "<div id='".$fsearch->name."'><div class='header'>".htmlspecialchars($title)."</div>";
?

Categories