在表单上生成新页面,从数据库显示值

时间:2015-11-03 20:19:26

标签: php html

这是我第一次在这里提问。 (对不起,如果我的英语不是那么好) 我不擅长php和html。直到上个月我从未编写过html或php代码。 我是一个公司的实习生,他们希望我建立一个内联网。现在一切正常我用WordPress建立了一个很好的网站,但现在他们问我一些对我来说太复杂的事情,没有人可以帮助我,所以我问你们。

在我的页面上,我有一个表单,在外部数据库中提交查找,然后在同一页面上显示它们。一切正常。我想要的是当用户输入输入值时,我希望生成一个新页面。现在,当用户输入值时,网址保持不变(例如:http://localhost/vendors/),但我想要的是当用户输入ABCD时,我希望网址现在为http://localhost/vendors/abcd,以便我们可以分享链接页面上显示的正确数据。

我试图在互联网上找到答案,但失败了。我读过我必须使用模板使用模板生成带有输入值的新页面,但我不知道如何做到这一点。我还希望表单保留在页面上,这样我们就可以继续在数据库中搜索并显示其他数据

这就是我现在所拥有的(我已经删除了所有无用的东西):

    <!--Connection to mssql database-->
<?php
  try {
    $hostname = "hostname";
    $port = 1433;
    $dbname = "databasename";
    $username = "username";
    $pw = "password";
    $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }





/**
 * Template Name: Vendors
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site will use a
 * different template.
 *
 * @package vantage
 * @since vantage 1.0
 * @license GPL 2.0
 */

get_header(); ?>






<form action="" method="post">
<table id= "formvendor">
<tr><td><b>Vendor ID: </b></td><td><input type="text" name="vendorid"></td></tr>
<tr><td><b>Vendor name: </b></td><td><input type="text" name="vendname"></b></td></tr>
<input type="submit" 
       style="position: absolute; left: -9999px; width: 1px; height: 1px;"
       tabindex="-1" />
</form>



<? 
$vendorid = $_POST["vendorid"];
$vendname = $_POST['vendname'];

$vendorid=ltrim($vendorid);
$vendorid=rtrim($vendorid);
$vendname=ltrim($vendname);
$vendname=rtrim($vendname);


$query="SELECT ... FROM uni.dbo.pm00200 where ";

if(strlen($vendorid)>0){ 

$query .=" vendorid='$vendorid' or";
if(strlen($vendname)>0){ }
else{
$query=substr($query,0,(strLen($query)-3));


}
}


if(strlen($vendname)>0){ 
$kt2=split(" ",$vendname);//Breaking the string to array of words
// Now let us generate the sql 
while(list($key,$val)=each($kt2)){
if($val<>" " and strlen($val) > 0){$query .= " vendname like '%$val%' or ";}

            }// end of while
$query=substr($query,0,(strLen($query)-3));
// this will remove the last or from the string. 
         // end of if else based on type value
}



foreach ($dbh->query($query) as $t) {
echo "<table id='tablevendors' style='width:100%' cellpadding='-5px'>";
echo '<col width="40%"><col width="60%"';
echo "<tr>";
echo "<td><b>Vendor ID :</b></td><td> $t[vendorid]</td>";
echo "</tr><tr>";
echo "<td><b>Vendor name:</b></td><td> $t[vendname]</td>";
echo "</tr><tr>";
echo "<td><b>Vendor class:</b></td><td> $t[vndclsid]</td>";
echo "</tr><tr>";
echo "<td><b>Address 1:</b></td><td> $t[address1]</td>";
echo "</tr><tr>";
echo "<td><b>Address 2:</b></td><td> $t[address2]</td>";
echo "</tr><tr>";
echo "<td><b>Address 3:</b></td><td> $t[address3]</td>";
echo "</tr><tr>";
echo "<td><b>City:</b></td><td> $t[city]</td>";
echo "</tr><tr>";
echo "<td><b>State:</b></td><td> $t[state]</td>";
echo "</tr><tr>";
echo "<td><b>Zipcode:</b></td><td> $t[zipcode]</td>";
echo "</tr><tr>";
echo "<td><b>Payment:</b></td><td> $t[pymtrmid]</td>";
echo "</tr><tr>";
echo "<td><b>Buyer:</b></td><td> $t[buyer]</td>";
echo "</tr><tr>";
echo "<td><b>Minimum order:</b></td><td> $t[minorder]</td>";
echo "</tr><tr>";
echo "<td><b>Prepaid info:</b></td><td> $t[prepaid]</td>";
echo "</tr>";
echo "</table>";
}


unset($dbh); unset($stmt);

?>




//rest of template
<div id="primary" class="content-area">

    <div id="content" class="site-content" role="main">

        <?php while ( have_posts() ) : the_post(); ?>

                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

                    <div class="entry-main">

                        <?php do_action('vantage_entry_main_top') ?>

                        <div class="entry-content">
                            <?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'vantage' ) ); ?>
                            <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'vantage' ), 'after' => '</div>' ) ); ?>
                        </div><!-- .entry-content -->

                        <?php do_action('vantage_entry_main_bottom') ?>

                    </div>

                </article><!-- #post-<?php the_ID(); ?> -->

                <?php if ( comments_open() || '0' != get_comments_number() ) : ?>
                    <?php comments_template( '', true ); ?>
                <?php endif; ?>

            <?php endwhile; // end of the loop. ?>

</div><!-- #primary .content-area -->
    </div><!-- #content .site-content -->


<?php get_footer(); ?>

1 个答案:

答案 0 :(得分:0)

cobstyle。

我认为,解决方案取决于您希望用户输入是否显示在页面地址上。如果你想这样,问题就不那么难了:

<强>的index.php:

...
<form action="receiver.php" method="post">
    <input type="text" id="txtUserInput" name="txtUserInput" />
    <input type="submit" id="btnSubmit" name="btnSubmit" value="Send!" />
</form>

<强> receiver.php:

<?php
$userInput = "";
if (isset($_POST["txtUserInput"]))
{
    $userInput = $_POST["txtUserInput"];
    header("Location: show.php?msg=".$userInput."");    //This will redirect your page to another called show.php, with a variable on it
}
else
{
    header("Location: error.php");   //Show some error, just in case
}
?>

<强> show.php:

<?php
if (isset($_GET["msg"]))
{
    echo "<h2>User message: ".$_GET["msg"]."</h2>";   //This will print something on the page
}
?>

我希望你觉得这很有用,不过我相信它可以改进很多。 祝你的作品好运,如果你需要更多的帮助,请告诉我们。