1

mySql データベースを更新する単純なフォームを作成しようとしています。ページに 1 つのフォーム要素 (入力) しかない場合は成功しますが、pgae ごとに複数のフォーム要素 (入力) を持つ方法がわかりません。

複数の入力を追加すると、データベースはコンテンツを追加しません。

私のコードが近いことは知っていますが、正確にどこで何をすべきか途方に暮れています。

PS - 私はまだこれに慣れておらず、学んでいます...

これが私が持っているものです

<?php

$host = 'hostName';
$user = 'userName';
$password = 'password';

$link = mysql_connect($host, $user, $password);

$selected = mysql_select_db('dbName', $link);

if(!isset($_POST['text-input']))
{


echo '<html>
        <body>
                <form action="post.php" method="post">
                        <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" />
                        <input type="submit" value="Submit" />
                </form>
        </body>
</html>'; }


else {
$form_input =  $_POST['text-input'] ;


mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '");');

echo '
<html>
        <body>
                <script type="text/javascript">
                        alert(\'Database now contains: <?php echo $form_input ?>. Redirecting...\');
                        window.location  = \'http://url.com\';
                </script>

        </body>
</html>';
}
?>

同じデータベース/テーブル内の多数の列に投稿する方法を整理したいと思います。

以下の回答から、コードを次のように変更しました。

<?php

                $host = 'dbHost';
                $user = 'dbUser';
                $password = 'dbPassword';

                $link = mysql_connect($host, $user, $password);

                $selected = mysql_select_db('dbName', $link);

                if(!isset($_POST['text-input']))
                {


                echo '
                    <form action="index.php" method="post">
                        <input type="text" name="text-input" id="text-input" value="Update itemName" style="width:300px;" />
                        <input type="text" name="text-input2" id="text-input2" value="Update itemDescription" style="width:300px;" />
                        <input type="text" name="text-input3" id="text-input3" value="Update productID" style="width:300px;" /> 
                        <input type="text" name="text-input4" id="text-input4" value="Update itemPrice" style="width:300px;" />    
                        <input type="submit" value="Submit" />
                    </form>'
                    ; }


                else {
                $form_input =  $_POST['text-input'] ;
                $form_input2 =  $_POST['text-input2'] ;
                $form_input3 =  $_POST['text-input3'] ;
                $form_input4 =  $_POST['text-input4'] ;


               mysql_query('INSERT INTO `items` (itemName, itemDescription, productID, itemPrice)
               VALUES ("' . $form_input . '", "' . $form_input2 . '", "' . $form_input3 . '", "' . $form_input4 . '");

                echo '
                <html>
                        <body>
                                <script type="text/javascript">
                                        alert(\'Database has been updated. Redirecting to previous url.\');
                                        window.location  = \'http://url.com\';
                                </script>

                        </body>
                </html>';
                }
                ?>

このコードで何が起こるかというと、予期しない '>' という構文エラーが発生します。

4

2 に答える 2

1

複数の列を設定するには、クエリを変更するだけです。

HTML:

<form action="post.php" method="post">
    <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" />
    <input type="text" name="text-input2" id="text-input2" value="Update MyDataColumn2" style="width:300px;" />
    <input type="text" name="text-input3" id="text-input3" value="Update MyDataColumn3" style="width:300px;" />    
    <input type="submit" value="Submit" />
</form> 

PHP:

$form_input =  $_POST['text-input'] ;
$form_input2 =  $_POST['text-input2'] ;
$form_input3 =  $_POST['text-input3'] ;


mysql_query('INSERT INTO `tableName` (columnName, columnName2, columnName3) VALUES ("' . $form_input . '","' . $form_input2 . '","' . $form_input3 . '");'); 
于 2012-08-15T16:45:32.810 に答える
0

HTML 出力では、次のような別のフィールドを追加する必要があります (既にコード内にあります)。

<input type="text" name="text-input" id="text-input"
value="Update MyDataColumn" style="width:300px;" />

ただし、別の「名前」(!) が必要です。

<input type="text" name="text-input2" id="text-input2"
value="Another Input" style="width:300px;" />

次に、次のように $_POST 配列から新しい変数 ("text-input2") をフェッチします。

$form_input =  $_POST['text-input']; // Your code...
$form_input2 = $_POST['text-input2']; // for the new input field

そして、SQL コマンドを次のように変更する必要があります。

mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '");
mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input2 . '");

上記の SQL コマンドは、両方のフォーム入力をテーブルの個別の行として追加しますが、それらは互いに接続されていません。それらを同じ行に配置するには、最初にテーブルを変更し、別の列を追加する必要があります。そのための SQL コマンドは次のとおりです。

ALTER TABLE tableName ADD columnName2 VARCHAR(255);

これにより、「columName2」という名前の別の列がテーブルに追加されます。最後に、両方の値をテーブルの 1 つの行として追加できます。

mysql_query('INSERT INTO `tableName` (columnName, columName2)
VALUES ("' . $form_input . '", "' . $form_input2 . '");

それでおしまい ;-)

于 2012-08-15T16:53:07.800 に答える