php if(isset($ _ POST ['tables']))语法

时间:2012-03-11 17:21:25

标签: php syntax

我一直在试图永远解决这个问题而且它让我烦恼。代码是显示从dropbox中选择的表格,工作正常。但是当我把它放入我的布局/模板时,它会抛出一个错误&我不知道为什么!

以下是代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="" >
<meta name="description" content="" >
<meta http-equiv="content-type" content="text/html; charset=utf-8" >
<title>SNYSB Archive</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" >
<!-- Location of javascript. -->
<script language="javascript" type="text/javascript" src="swfobject.js" ></script>
</head>
    <div id="wrapper">
    <div id="header">
    <!-- KEEP THIS BIT [ITS FORMATTING] --> 
    </div>
    <!-- end #header -->
    <div id="menu">
            <ul>
            <li><a href="Hpage.php">Home</a></li>
            <li><a href="Register.php">Register</a></li>
        </ul>
    </div>
    <!-- end #menu -->
    <div id="page">
    <div id="page-bgtop">
    <div id="page-bgbtm">
    <div id="content">
            <div class="post">
            <div class="post-bgtop">
            <div class="post-bgbtm">
<h1 class="title">PUT HEADING HERE!</h1>
                <div class="entry">
                    <p class="Body">
<?php
$dbname = 'snysbarchive';
$conn= mysql_connect('localhost', 'root', 'usbw');
if (!$conn) {
    echo 'Could not connect to mysql';
    exit;
}

$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}
if (mysql_select_db($dbname, $conn))
{
?>
    <form method="post" action="new 2.php">
    <select name="tables">
    <?php
    while ($row = mysql_fetch_row($result)) {
    ?>    
    <?php
        echo '<option value="'.$row[0].'">'.$row[0].'</option>';
    }
    ?>
    </select>
    <input type="submit" value="Show">
</form>
<?php
//mysql_free_result($result);
if (isset($_POST) && isset($_POST['tables']))
{
    $tbl=$_POST['tables'];
    //echo $_POST['tables']."<br />";
    $query="SELECT * from $tbl";
    $res=mysql_query($query);
    echo $query;
    if ($res)
    {
    ?>
    <table border="1">
    <?php
        while ( $row = mysql_fetch_array($res))
        {
            echo "<tr>";
            echo "<td>".$row[0]."</td>";
            echo "<td>".$row[1]."</td>";
            echo "<td>".$row[2]."</td>";
            echo "<td>".$row[3]."</td>";        
            echo "</tr>";
        } ?>
    </table>
    <?php
    }
}
?>
</div>
</div>
            </div>
            </div>

        <div style="clear: both;">&nbsp;</div>
        </div>
        <!-- end #content -->
        <div id="sidebar">
            <ul>
                <li>
                    <h2>Welcome!</h2>
                    <p>Welcome to SNYSBs archive!
                       </p>
                </li>
                <li>
                    <h2>SNYSB</h2>
                    <p>
            <a href="Contact.php">Contact Us!</a>
                    </p>
                </li>
            </ul>
        </div>
        <!-- end #sidebar -->
        <div style="clear: both;">&nbsp;</div>
    </div>
    </div>
    </div>
    <!-- end #page -->
    <div id="footer">
        <p>Copyright (c) 2008 Sitename.com. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
    </div>
    <!-- end #footer -->
</div>
</body>
</html>

(只需将原始页面的代码粘贴在我的模板的开头和底部)

这是它不喜欢的行:

if (isset($_POST['tables']))

谢谢

编辑:新错误消息: 解析错误:语法错误,第128行的FILENAME中的意外$结尾

3 个答案:

答案 0 :(得分:5)

您看到的错误可能是因为$ _POST没有名为'tables'的密钥。

echo"<form method="post" action="show_tabs.php">";
echo"<select name="tables">";

运行时都会产生错误。请注意语法突出显示SO上的颜色更改,表示并非所有颜色都被解释为字符串文字。您需要转义内部引号或将外部引号切换为单引号:

echo '<form method="post" action="show_tabs.php">';
echo '<select name="tables">';

echo "<form method=\"post\" action=\"show_tabs.php\">";
echo "<select name=\"tables\">";

同样如此
echo"<input type="submit" value="Show">";
...
echo"<table border="1">";

此外,

if ($res)
}

应该阅读

if ($res)
{

此外,您在使用mysql_ *函数时出错。我可以看到你在运行查询后才选择你的数据库,我没有看到对mysql_connect的调用。顺序是connect,select_db,query,fetch,free,close,如http://www.php.net/manual/en/mysql.examples-basic.php

中所示

<小时/> (上面的代码更新后) 将整个事物包裹在heredoc中显然是原因,而且非常不必要。只需使用php打开和关闭标签即可在文本和代码之间切换。例如,而不是

echo <<< TEMPLATE
<h1 class="title">PUT HEADING HERE!</h1>
<div class="entry">
<p class="Body">

使用

?>
<h1 class="title">PUT HEADING HERE!</h1>
<div class="entry">
<p class="Body">
<?php

heredoc内部的代码没有被执行(虽然变量被替换),因此没有运行<<< TEMPLATETEMPLATE;的代码。只有变量才能进入heredoc。

答案 1 :(得分:1)

您的错误实际上是3行;

echo"<input type="submit" value="Show">";

它应该使用单引号,以免与字符串中的双引号冲突;

echo '<input type="submit" value="Show">';

和另外几行;

echo"<form method="post" action="show_tabs.php">";
...
echo"<table border="1">";

应该以同样的方式修复。

答案 2 :(得分:-1)

我想你应该试试这个......

if (isset($_POST) && isset($_POST['tables']))