我正在我的Wordpress网站上编写一些PHP代码,这些代码工作直到我尝试在脚本中使用变量。操作说明:
违规行是348,或接近底部,
$(this).attr('href', '<?php echo $MYURL; ?>');
这是先前在第314行定义的,
$MYURL = "http://trailmeister.com/TOPO_VIEWS/showmap.php?gpx={$row[gpx_file]}&trail={$_GET[tname]}";
我很难过。在向我投票之前,如果您需要更多信息,请告诉我。这段代码的关键部分在最后一节。这是代码:
<?php
if ( is_user_logged_in() ) {
$routequery = mysql_query("SELECT * from wp_routes WHERE trail_id = ".$trailid."");
$MYURL = "http://example.com/showmap.php?gpx=$row[gpx_file]&trail=$_GET[tname]";
echo "<h2>Rider's Routes</h2><a href='/submit-route?trail=$_GET[trail]'><b>";
echo "[ Submit a new route ]</b></a><br>";
if (mysql_num_rows($routequery)){
require_once('GPXIngest.class.php');
while ($row = mysql_fetch_array($routequery)) {
$user = get_user_by( 'id', '1' );
echo "<div style='float:left;margin-right:5px;'>";
$smallmap = '[iframe src="http://trailmeister.com/TOPO_VIEWS/showmap2.php';
$smallmap .= '?gpx='.$row[gpx_file].'&trail='.$_GET[tname].'"]';
echo "<a id='bigmap' href='http://trailmeister.com/TOPO_VIEWS/showmap.php?";
echo "gpx=$row[gpx_file]&trail=$_GET[tname]' style='border:1px red solid; ";
echo "margin-right: -150px; z-index:999; position:absolute; display:inline-block;";
echo " width:150px; height:150px;'></a>";
echo do_shortcode($smallmap);
echo "</div>";
echo "<div><a href='http://trailmeister.com/TOPO_VIEWS/GPX/download.php?";
echo "gpx=$row[gpx_file]'><b>[ Download this route ]</b></a><br>";
echo "Submitted $row[submitted] by " .$user->user_nicename."<br>";
echo "Route Difficulty: $row[difficulty] | ";
echo "Trail Length: $row[trail_length] <br>";
echo "<i>$row[comments]</i></div>";
}
}
}
?>
<script>
$('#bigmap')
.delay(4000)
.queue( function(next){
$(this).css({
'border':'1px red solid',
'margin-right': '-150px',
'z-index':'999',
'position':'absolute',
'display':'inline-block',
'width':'150px',
'height':'150px'
});
$(this).attr('href', '<?php echo $MYURL; ?>');
next();
});
</script>
答案 0 :(得分:1)
首先这是一个混乱,这是问题的一个重要部分,我建议清理它开始并使用模板语法为你的while循环
while ($row = mysql_fetch_array($routequery)) {
$user = get_user_by( 'id', '1' );
echo "<div style='float:left;margin-right:5px;'>";
$smallmap = '[iframe src="http://trailmeister.com/TOPO_VIEWS/showmap2.php';
$smallmap .= '?gpx='.$row[gpx_file].'&trail='.$_GET[tname].'"]';
echo "<a id='bigmap' href='http://trailmeister.com/TOPO_VIEWS/showmap.php?";
echo "gpx=$row[gpx_file]&trail=$_GET[tname]' style
//...
变为
<?php
$user = get_user_by( 'id', '1' ); //why is this in the loop with static values?
while($row = mysql_fetch_array($routequery)):
?>
<div style='float:left;margin-right:5px;'>
<?php
$smallmap = '[iframe src="http://trailmeister.com/TOPO_VIEWS/showmap2.php';
$smallmap .= '?gpx='.$row["gpx_file"].'&trail='.$_GET["tname"].'"]';
?>
<a id='bigmap' href='http://trailmeister.com/TOPO_VIEWS/showmap.php? "gpx=$row["gpx_file"]&trail=$_GET["tname"]' style
//...
<?php endwhile; ?>
一旦你这样做,问题将更容易看到。模板语法是这样的:
<?php while( $bla ) : ?>
html
<?php endwhile; ?>
<?php if( $bla ) : ?>
html
<?php endif; ?>
查看语法荧光笔甚至notpad ++,其他人已经说过在数组键周围加上引号
$_GET["tname"]
不
=$_GET[tname]
PHP会将后者视为未定义的常量。这个may
工作在&#34;双引号块,但这是一个不好的做法。使用" text { $_GET['tname'] } text "
代替" text $_GET[tname] text "
,它向后兼容,不依赖于变量插值
答案 1 :(得分:0)
$smallmap = '[iframe src="http://trailmeister.com/TOPO_VIEWS/showmap2.php";
请注意,您使用单引号打开该行,但使用双引号将其关闭。使它们保持一致 - 无论是单引号还是双引号。
答案 2 :(得分:0)
你的第一个$ smallmap没有关闭(注意那之后所有的echo都是绿色的?)