Jump to content

Recommended Posts

I am trying to display some text "THIS IS A TEST" on the html page.

I am getting this error:

Notice: Undefined variable: text1 in /home/public_html/themes/videos/content.html on line 23

 

line 23 is this:

 <div class="test"><font color="#696969" font size="3" face="Arial">HELLO<?php echo $text1;?></font>

The php file, related to the html page shows this (partially):

 

$text1 = "THIS IS A TEST";
$cateogry_id = '';
$videos = array();
if ($page == 'trending') {
    $title  = $lang->trending;
    $db->where('privacy', 0);
    $videos = $db->where('time', time() - 172800, '>')->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
}

else if ($page == 'latest') {
    $title  = $lang->latest_videos;
    echo "$text1";
    $db->where('privacy', 0);
    $videos = $db->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
}

else if ($page == 'top') {
    $title  = $lang->top_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
}

else if ($page == 'category') {
    if (!empty($_GET['id'])) {
        if (in_array($_GET['id'], array_keys($categories))) {
            $cateogry = PT_Secure($_GET['id']);
            $title    = $categories[$cateogry];
            $cateogry_id = "data-category='$cateogry'";
            $db->where('privacy', 0);
            $videos   = $db->where('category_id', $cateogry)->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
        } else {
            header("Location: " . PT_Link('404'));
            exit();
        }
    }
}

what do I need to correct to remedy the error?

Any help is appreciated.

Link to comment
https://forums.phpfreaks.com/topic/308343-help-with-undefined-variable-error/
Share on other sites

1 hour ago, Chrisj said:

The php file, related to the html page

"Related" how? The PHP needs to be executed before the HTML, and they must both happen during the same request (so like without any redirects).

Thanks for your reply. Sorry for the truncated code posting.

There is a php file (where I added line 35 and line 39):

<?php

declare( strict_types=1);
// these should be set in PHP.ini
error_reporting(-1); // set maximum errors
ini_set('display_errors' , 'true');


if (empty($_GET['page'])) {
    header("Location: " . PT_Link('404'));
    exit();
}
$page         = PT_Secure($_GET['page']);
$limit        = 20;
$pt->rss_feed = false;
$pt->exp_feed = true;
$pages        = array(
    'trending',
    'category',
    'latest',
    'top'
);

if (!in_array($page, $pages)) {
    header("Location: " . PT_Link('404'));
    exit();
}

if (!empty($_GET['feed']) && $_GET['feed'] == 'rss') {
    $limit        = 50;
    $pt->rss_feed = true;

}

$text1 = 'THIS IS A TEST';
$cateogry_id = '';
$videos = array();
if ($page == 'trending') {
$text1 = 'trending';
    $title  = $lang->trending;
    $db->where('privacy', 0);
    $videos = $db->where('time', time() - 172800, '>')->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
}

else if ($page == 'latest') {
    $title  = $lang->latest_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
}

else if ($page == 'top') {
    $title  = $lang->top_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
}

else if ($page == 'category') {
    if (!empty($_GET['id'])) {
        if (in_array($_GET['id'], array_keys($categories))) {
            $cateogry = PT_Secure($_GET['id']);
            $title    = $categories[$cateogry];
            $cateogry_id = "data-category='$cateogry'";
            $db->where('privacy', 0);
            $videos   = $db->where('category_id', $cateogry)->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
        } else {
            header("Location: " . PT_Link('404'));
            exit();
        }
    }
}

use Bhaktaraz\RSSGenerator\Item;
use Bhaktaraz\RSSGenerator\Feed;
use Bhaktaraz\RSSGenerator\Channel;


//Export rss feed
if ($pt->rss_feed) {
    $rss_feed_xml   = "";
    $fl_rss_feed    = new Feed();
    $fl_rss_channel = new Channel();


$fl_rss_channel
    ->title($pt->config->title)
    ->description($pt->config->description)
    ->url($pt->config->site_url)
    ->appendTo($fl_rss_feed);

if (is_array($videos)) {
    foreach ($videos as $feed_item_data) {
        $feed_item_data = PT_GetVideoByID($feed_item_data, 0, 0, 0);
        $fl_rss_item    = new Item();
        $fl_rss_item
         ->title($feed_item_data->title)
         ->description($feed_item_data->markup_description)
         ->url($feed_item_data->url)
         ->pubDate($feed_item_data->time)
         ->guid($feed_item_data->url,true)
         ->media(array(
            'attr'  => 'url',
            'ns'    => 'thumbnail',
            'link'  => PT_GetMedia($feed_item_data->org_thumbnail)))
         ->appendTo($fl_rss_channel);
    }
}

header('Content-type: text/rss+xml');
echo($fl_rss_feed);
exit();
}


$html_videos = '';
if (!empty($videos)) {
    foreach ($videos as $key => $video) {
    	$video = PT_GetVideoByID($video, 0, 0, 0);
        $html_videos .= PT_LoadPage('videos/list', array(
            'ID' => $video->id,
            'VID_ID' => $video->id,
	        'TITLE' => $video->title,
	        'VIEWS' => $video->views,
            'VIEWS_NUM' => number_format($video->views),
	        'USER_DATA' => $video->owner,
	        'THUMBNAIL' => $video->thumbnail,
	        'URL' => $video->url,
	        'TIME' => $video->time_ago,
            'DURATION' => $video->duration
        ));
    }
}

if (empty($videos)) {
	$html_videos = '<div class="text-center no-content-found empty_state"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-video-off"><path d="M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>' . $lang->no_videos_found_for_now . '</div>';
}
$pt->videos_count= count($videos);
$pt->page        = $page;
$pt->title       = $title . ' | ' . $pt->config->title;
$pt->description = $pt->config->description;
$pt->keyword     = @$pt->config->keyword;
$pt->content     = PT_LoadPage('videos/content', array(
    'TITLE' => $title,
    'VIDEOS' => $html_videos,
    'TYPE' => $page,
    'CATEGORY_ID' => $cateogry_id
));

 

and an html file ( I added line 23):

 

<div class="wo_about_wrapper_parent">
	<div class="wo_about_wrapper">
		<div class="hero hero-overlay" style="background-color: #033d5d;">
			<div class="container">
				<h1 class="text-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-video"><polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect></svg> {{TITLE}}</h1>
			</div>
		</div>
		<svg id="wave" viewBox="0 0 1440 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(0.000000, -564.000000)" fill="#033d5d"><g id="Head-background" transform="translate(-168.000000, -346.000000)"><g id="waves-background" transform="translate(888.000000, 934.000000) scale(-1, 1) translate(-888.000000, -934.000000) translate(168.000000, 910.000000)"><path d="M0,14.60779 C101.722445,4.7613277 195.244576,-4.14113188e-14 429,-2.84217094e-14 C732,-1.97619698e-14 798,45.6756592 1089,45.6756592 C1245.83848,45.6756592 1364.64602,29.5028807 1440,14.5904096 C1440,14.60779 1440,48 1440,48 L0,48 C0,48 0.0410082206,34 0,14.60779 Z" id="Path-3-Copy"></path></g></g></g></g></svg>
	</div>
</div>
<div class="content pt_shadow pt_page_margin" style="padding-top: 25px;">
	<div class="col-md-12">

		<div class="upload-head">
			<div style="float: right;">
				<button class="btn btn-main" data-action="multuple-buy-video" onclick="PT_MultipleBuyVideo();">View all selected</button>
			</div>
			<h4><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg></h4>
			<hr>
	</div>
 <div class="test"><font color="#696969" font size="3" face="Arial">HELLO<?php echo $text1;?></font>
</div>
		<div class="videos-latest-list row">
      	{{VIDEOS}}
		</div>
		<?php if ($pt->videos_count > 1) { ?>
			<div class="watch-video-show-more desc load-more" data-type="{{TYPE}}" {{CATEGORY_ID}}>
                {{LANG show_more}}
            </div>
		<?php } ?>
		<div class="clear"></div>
	</div>
	<div class="clear"></div>
</div>

 

I am seeing the error on the html page: 
Notice: Undefined variable: text1 in /home/public_html/themes/videos/content.html on line 23

Any additional guidance to remedy this error is appreciated.

 

 

 

The file is being executed through that PT_LoadPage function. Variables defined in your first PHP file will not be accessible in the second file.

If you want to send a value through then do it like the other values are being sent through.

Thanks so much again for your reply. 
Based on your suggestion, I tried this in the php:

 

$pt->content     = PT_LoadPage('videos/content', array(
    'TITLE' => $title,
    'VIDEOS' => $html_videos,
    'TYPE' => $page,
    'CATEGORY_ID' => $category_id,
    'TEXT' => $text1

to try to send the value through, and still see the same error. Any guidance into what I have incorrect here is appreciated.

Thanks for your reply got it now.

html needed this:

<div class="test">HELLO{{TEXT}}</div>

now it displays: "HELLO THIS IS A TEST"

Much thanks.

I am interested in a little more help, if you are so inclined.

My initial intention was to display unique text, when each of three pages appears. When if ($page == 'trending')
"unique text 1" displays. When if ($page == 'latest') than "unique text 2" displays, and when if ($page == 'top') than "unique text 3" displays. But, then I got that undefined variable error. Now, I'm trying to have the unique texts display again.

I just tried this:

 

$text1 = 'THIS IS A TEST';
$text2 = 'THIS IS TEST 2';
$category_id = '';
$videos = array();

if ($page == 'trending') {
    $title  = $lang->trending;
    $db->where('privacy', 0);
    $videos = $db->where('time', time() - 172800, '>')->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
    $text1 = 'TEXT';
}


else if ($page == 'latest') {
    $title  = $lang->latest_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
    $text2 = 'TEXT2';
}

and this in the html code:

 

<div class="test">HELLO{{TEXT}}{{TEXT2}}</div>

 

but it shows me this on all three displayed pages:


HELLOTHIS IS A TESTTHIS IS TEST 2

 

Any guidance as to how to display unique text when each unique page is loaded, will be appreciated. 

 

I also have this in the php (I would have edited the last posting, but I don't see where I can):

 

$pt->content     = PT_LoadPage('videos/content', array(
    'TITLE' => $title,
    'VIDEOS' => $html_videos,
    'TYPE' => $page,
    'CATEGORY_ID' => $category_id,
    'TEXT' => $text1,
    'TEXT2' => $text2

 

You're assigning a value to both variables, then sending both variables to PT_LoadPage(), where you print both out. So by showing both, your code is actually doing exactly what you're asking it to do.

You've already got some logic to determine the page. Inside those logic blocks, you can set a value to $text that is specific to that page. Then only include $text as a parameter of PT_LoadPage(). That way, you'll know the variable is set no matter what page you're on but it'll be populated with page-specific data.

You could also continue the way you're going and look into template conditional logic tags, but at that point you're mixing your logic and display code to an extant that's - IMO - missing the point of using a templating language anyway.

Thanks for your reply.

I've now tried this:

 

$text = '';
$category_id = '';
$videos = array();

if ($page == 'trending') {
    $title  = $lang->trending;
    $db->where('privacy', 0);
    $videos = $db->where('time', time() - 172800, '>')->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
	$text = 'trending text here';
}

else if ($page == 'latest') {
    $title  = $lang->latest_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
   $text = 'Latest text here';
}

else if ($page == 'top') {
    $title  = $lang->top_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
    $text = 'Top text here';
}


along with this:


$pt->content     = PT_LoadPage('videos/content', array(
    'TITLE' => $title,
    'VIDEOS' => $html_videos,
    'TYPE' => $page,
    'CATEGORY_ID' => $category_id,
    'TEXT' => $text

and the html file page has this:

 <div class="test">HELLO{{TEXT}}</div>

 

Yet, all that is displayed is: HELLO

Any additional guidance is appreciated. 

Thanks for your reply.

I didn't write this code, I'm just trying to modify it.

So, it seems that the load page part should be at the end, which it is, assuming the everything should run first and then you load the page, I would guess.

And saying that the conditional blocks aren't working doesn't seem correct. They serve a purpose for the script. 

 

Any other ideas will be welcomed

I can pretty conclusively tell you that the code is not running as you've portrayed. Programming isn't magical or random: computers follow a very specific set of instructions (code) as entered by a programmer.

I could be missing something obvious, but assuming not then the code you've shown will not cause the problems you have. There is something going on that we can't see because we're not sitting in front of your computer, and ignoring us by saying "well that's how it is" and "it's not my code" doesn't help us and more importantly doesn't help you.

How about you post the entire contents of the PHP half of this? Unedited, as it is right now.

Thanks for your reply.

I added this as per your instructions:

die("<pre>".var_export($page, true)."</pre>");

$text = '';
$category_id = '';
$videos = array();

And all I see displayed on the whole html page is simply this: 'category'

 

I look forward to any other guidance. Much thanks again

Thanks for your reply. You really don't have to be so condescending. I'm just trying to learn.

 

Here's the code as requested.

 

<?php

declare( strict_types=1);
// these should be set in PHP.ini
error_reporting(-1); // set maximum errors
ini_set('display_errors' , 'true');


if (empty($_GET['page'])) {
    header("Location: " . PT_Link('404'));
    exit();
}
$page         = PT_Secure($_GET['page']);
$limit        = 20;
$pt->rss_feed = false;
$pt->exp_feed = true;
$pages        = array(
    'trending',
    'category',
    'latest',
    'top'
);

if (!in_array($page, $pages)) {
    header("Location: " . PT_Link('404'));
    exit();
}

if (!empty($_GET['feed']) && $_GET['feed'] == 'rss') {
    $limit        = 50;
    $pt->rss_feed = true;

}


die("<pre>".var_export($page, true)."</pre>");

$text = '';
$category_id = '';
$videos = array();

if ($page == 'trending') {
    $title  = $lang->trending;
    $db->where('privacy', 0);
    $videos = $db->where('time', time() - 172800, '>')->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
	$text = 'trending text here';
}

else if ($page == 'latest') {
    $title  = $lang->latest_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
   $text = 'Latest text here';
}

else if ($page == 'top') {
    $title  = $lang->top_videos;
    $db->where('privacy', 0);
    $videos = $db->orderBy('views', 'DESC')->get(T_VIDEOS, $limit);
    $text = 'Top text here';
}

else if ($page == 'category') {
    if (!empty($_GET['id'])) {
        if (in_array($_GET['id'], array_keys($categories))) {
            $category = PT_Secure($_GET['id']);
            $title    = $categories[$category];
            $category_id = "data-category='$category'";
            $db->where('privacy', 0);
            $videos   = $db->where('category_id', $category)->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
        } else {
            header("Location: " . PT_Link('404'));
            exit();
        }
    }
}

use Bhaktaraz\RSSGenerator\Item;
use Bhaktaraz\RSSGenerator\Feed;
use Bhaktaraz\RSSGenerator\Channel;


//Export rss feed
if ($pt->rss_feed) {
    $rss_feed_xml   = "";
    $fl_rss_feed    = new Feed();
    $fl_rss_channel = new Channel();


    $fl_rss_channel
        ->title($pt->config->title)
        ->description($pt->config->description)
        ->url($pt->config->site_url)
        ->appendTo($fl_rss_feed);

    if (is_array($videos)) {
        foreach ($videos as $feed_item_data) {
            $feed_item_data = PT_GetVideoByID($feed_item_data, 0, 0, 0);
            $fl_rss_item    = new Item();
            $fl_rss_item
             ->title($feed_item_data->title)
             ->description($feed_item_data->markup_description)
             ->url($feed_item_data->url)
             ->pubDate($feed_item_data->time)
             ->guid($feed_item_data->url,true)
             ->media(array(
                'attr'  => 'url',
                'ns'    => 'thumbnail',
                'link'  => PT_GetMedia($feed_item_data->org_thumbnail)))
             ->appendTo($fl_rss_channel);
        }
    }

    header('Content-type: text/rss+xml');
    echo($fl_rss_feed);
    exit();
}


$html_videos = '';
if (!empty($videos)) {
    foreach ($videos as $key => $video) {
    	$video = PT_GetVideoByID($video, 0, 0, 0);
        $html_videos .= PT_LoadPage('videos/list', array(
            'ID' => $video->id,
            'VID_ID' => $video->id,
	        'TITLE' => $video->title,
	        'VIEWS' => $video->views,
            'VIEWS_NUM' => number_format($video->views),
	        'USER_DATA' => $video->owner,
	        'THUMBNAIL' => $video->thumbnail,
	        'URL' => $video->url,
	        'TIME' => $video->time_ago,
            'DURATION' => $video->duration,
            //'PRICE' => number_format($video->video_play_price<$config['video_play_price'] ? $config['video_play_price'] : $video->video_play_price)
        ));
    }
}

if (empty($videos)) {
	$html_videos = '<div class="text-center no-content-found empty_state"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-video-off"><path d="M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>' . $lang->no_videos_found_for_now . '</div>';
}
$pt->videos_count= count($videos);
$pt->page        = $page;
$pt->title       = $title . ' | ' . $pt->config->title;
$pt->description = $pt->config->description;
$pt->keyword     = @$pt->config->keyword;

$pt->content     = PT_LoadPage('videos/content', array(
    'TITLE' => $title,
    'VIDEOS' => $html_videos,
    'TYPE' => $page,
    'CATEGORY_ID' => $category_id,
    'TEXT' => $text

));

 

Thanks for your reply.

I've added: $text = 'category text here';

 

else if ($page == 'category') {
    if (!empty($_GET['id'])) {
        if (in_array($_GET['id'], array_keys($categories))) {
            $category = PT_Secure($_GET['id']);
            $title    = $categories[$category];
            $category_id = "data-category='$category'";
            $db->where('privacy', 0);
            $videos   = $db->where('category_id', $category)->orderBy('id', 'DESC')->get(T_VIDEOS, $limit);
            $text = 'category text here';
        } else {
            header("Location: " . PT_Link('404'));
            exit();
        }
    }
}

 

when I remove 

die("<pre>".var_export($page, true)."</pre>");

I see this displayed on the html page:

HELLOcategory text here

 

when I add it back in I see blank page except for: 'category'

 

And additional guidance is welcomed

 

 

 

The goal has been achieved. The script is doing exactly what you've said you wanted - you're printing custom text on each of the three specified pages; you're just not testing from one of those three pages. If you need custom text per page and don't want to limit it to the three listed pages, you'll have to account for those pages in your conditional logic.

Thanks for your reply. However, I'm not clear on your message.

My initial intention was to display separate unique text, on each page, of the three pages.

When you say you're "printing custom text on each of the three specified pages", I see that I'm printing the same text on all three pages. Is that what you mean?

Also, I'm not clear on this "you're just not testing from one of those three pages". Can you please explain what you mean?

You say "If you need custom text per page", -  yes, that's what I'd like.

"and don't want to limit it to the three listed pages" - I do want it to display on each of just those three pages

you'll have to account for those pages in your conditional logic" so, having  if ($page == 'latest') and $text = 'Latest text here'; is accounting for those pages?

 

Any additional guidance is appreciated.

 

 

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.