将值传递给表单以填充它? (很多值)

时间:2012-03-16 23:00:52

标签: php

我需要将大量结果传回一个表单,以便表单可以从URL中读取这些结果,然后用它们填充表单。问题是,链接最终是:

& key = value& key = value ...直到它不能再处理(我假设一个URL有长度限制?)导致我的表单无法完全填充。我需要另一种方法将值传递回我的表单文件。

VIEW.php文件(基本上只是一个值表,因为它们来自数据库,第一列" id"是一个链接。当我点击" id" ,它会回到我的add.php(表单页面)并使用匹配该id的数据填充表单。

<table border="0" cellpadding="0" cellspacing="0" id="table">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>NAME</th>
                    <th>MANUFACTURER</th>
                    <th>MODEL</th>
                    <th>DESCRIPTION</th>
                    <th>ON HAND</th>
                    <th>REORDER</th>
                    <th>COST</th>
                    <th>PRICE</th>
                    <th>SALE</th>
                    <th>DISCOUNT</th>
                    <th>DELETED</th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                <?php } ?>
                    <?php 
                        // loop to fetch data
                        while($row = mysql_fetch_array($result)) {
                        echo "<tr>";
                        echo "<td>
                        <a href='molszewski1_a2_add.php'>$row[id]</a></td>";
                        echo "<td>$row[name]</td>";
                        echo "<td>$row[manufac]</td>";
                        echo "<td>$row[model]</td>";
                        echo "<td>$row[descrip]</td>";
                        echo "<td>$row[onhand]</td>";
                        echo "<td>$row[reorder]</td>";
                        echo "<td>$row[cost]</td>";
                        echo "<td>$row[price]</td>";
                        echo "<td>$row[sale]</td>";
                        echo "<td>$row[discont]</td>";
                        echo "<td>$row[deleted]</td>";

                        $status = "$row[deleted]";

                        echo "<td><a href='molszewski1_a2_delete.php?id=$row[id]&flag=$status&sort=$sort'>";

                        $status = "$row[deleted]";

                        if ($status == 'n') {
                            $flag = "restore";
                            echo "delete";
                        } else if ( $status == 'y') {
                            $flag = "delete";
                            echo "restore";
                        }

                        echo "</a></td>";
                        echo "</tr>";
                    } ?>
                <?php { ?>
            </tbody>
        </table>

ADD.php(表单页面,表单应该获取数据并填充它)

<?php
    // If no form has been submitted, present form
    if (empty($_GET))
    {   
        add_form();
    }
    // if a form has been submitted
    else
    {       
        // if form_validity() == 1, proceed to connect
        if (form_validity() == 1)
        {
            // connect to mysql + database
            connect();

            $saleItem = "n";
            $discountItem = "n";

            if( array_key_exists( 'saleItem', $_GET ) && $_GET['saleItem'] == 'y' )
            { $saleItem = "y"; }
            if( array_key_exists( 'discountItem', $_GET ) && $_GET['discountItem'] == 'y' )
            { $discountItem = "y"; }

            // get values from form, insert into database
            $sql=("INSERT INTO inventory (name, 
                                          manufac, 
                                          model, 
                                          descrip, 
                                          onhand, 
                                          reorder, 
                                          cost,  
                                          price, 
                                          sale, 
                                          discont,
                                          deleted)
                   VALUES ('$_GET[itemName]', 
                           '$_GET[manufacturer]', 
                           '$_GET[model]', 
                           '$_GET[description]', 
                           '$_GET[numberOnHand]', 
                           '$_GET[reorderLevel]', 
                           '$_GET[cost]',
                           '$_GET[sellingPrice]', 
                           '$saleItem', 
                           '$discountItem', 'n')");

            // if the query doesn't work, display error message
            if (!(mysql_query($sql))) { die ("could not query: " . mysql_error()); }

            add_form(); 

            // redirect to view.php after form submission
            // use php instead
            echo "<meta http-equiv='REFRESH' content='0;url=molszewski1_a2_view.php'>";
        }
        else
        {
            // if form is not valid (form_validity returns 0), display error messages
            add_form();
        }
    }
    ?>

FUNCTIONS.php(所有我喜欢的形式的函数)

<?php function page_navigation(){ ?>
<div class="center">
<a href="molszewski1_a2_add.php" id="add"><input type="button" value="ADD" /></a>
<a href="molszewski1_a2_view.php?sort=all&title=VIEW ALL" id="view"><input type="button" value="VIEW" /></a>
<a href="?sort=deleted&title=VIEW DELETED" id="add"><input type="button" value="VIEW DELETED" /></a>
<a href="?sort=active&title=VIEW ACTIVE" id="view"><input type="button" value="VIEW ACTIVE" /></a>
<br />
<br />
</div>
<?php } ?>
<?php function add_form() { ?>
<form action="molszewski1_a2_add.php" method="get" id="form">
    <table width="529px">
        <tr>
            <td>ITEM NAME</td>
            <td><input name="itemName" size="30" type="text" value="<?php echo $_GET["itemName"] ?>"/></td>
        </tr>
        <tr>
            <td>MANUFACTURER</td>
            <td><input name="manufacturer" size="30" type="text" value="<?php echo $_GET["manufacturer"] ?>"/></td>
        </tr>
        <tr>
            <td>MODEL</td>
            <td><input name="model" size="30" type="text" value="<?php echo $_GET["model"] ?>"/></td>
        </tr>
        <tr>
            <td>DESCRIPTION</td>
            <td><textarea name="description" rows="3" cols="20"><?php echo $_GET["description"] ?></textarea></td>
        </tr>
        <tr>
            <td>ON HAND</td>
            <td><input name="numberOnHand" size="30" type="text" value="<?php echo $_GET["numberOnHand"] ?>"/></td>
        </tr>
        <tr>
            <td>REORDER LEVEL</td>
            <td><input name="reorderLevel" size="30" type="text" value="<?php echo $_GET["reorderLevel"] ?>"/></td>
        </tr>
        <tr>
            <td>COST</td>
            <td><input name="cost" size="30" type="text" value="<?php echo $_GET["cost"] ?>"/></td>
        </tr>
        <tr>
            <td>SELLING PRICE</td>
            <td><input name="sellingPrice" size="30" type="text" value="<?php echo $_GET["sellingPrice"] ?>"/></td>
        </tr>
        <tr>
            <td>SALE ITEM</td>
            <td>
                <input type="checkbox" name="saleItem" value="y" <?php if( isset( $_GET['saleItem'] ) ){ ?> checked="checked" <?php } ?> />
            </td>
        </tr>
        <tr>
            <td>DISCOUNTED ITEM</td>
            <td>
                <input type="checkbox" name="discountItem" value="y" <?php if( isset( $_GET['discountItem'] ) ){ ?> checked="checked" <?php } ?> />
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="save" name="submit" id="submit" /></td>
        </tr>
    </table>
</form>
<?php } ?>

1 个答案:

答案 0 :(得分:3)

使用method="post"$_POST(而不是$_GET)。

POST请求可能比GET请求大得多,因为GET请求受URL的最大长度限制。 POST请求受max_post_size ini-value的大小限制,通常为几兆字节。