3

「フォーム投稿」を介して値を投稿し、それをテーブルに挿入する必要があります。両方のファイルのコードは次のとおりです。

<html>
<body>
<table>
<form  enctype="multipart/form-data" action="<?php $_SERVER["DOCUMENT_ROOT"] ?>  /contents/ad_posting_process_4.php" method="post">
<?php $cat_no = "101010"; ?>
<input type=hidden id="category" value=" <?php echo $cat_no; ?> ">  
<tr> <td>Sub Category: </td><td>    <input type=text id="sub_category" > </td>
<tr><td></td> <td><input type="submit" name="action" value="Post"></td></tr></tr>
</form>
</body></html>

ここに ad_posting_4.php があります

<?php session_start();
include($_SERVER["DOCUMENT_ROOT"]."/includes/conn.php");
$category = mysql_real_escape_string($_POST['category']);
$sub_category = mysql_real_escape_string($_POST['sub_category']);
echo "category=". $category; 
echo "sub_category=". $sub_category; ?>

郵送による値の送信はありません。

どこが間違っていますか?

よろしく:

4

3 に答える 3

9

name次の属性を使用する必要があります。

<input type="text" name="category" />
<input type="text" name="sub_category" />
于 2012-10-04T14:19:44.993 に答える
7

入力typeは引用符で囲み、属性'も持つ必要があります。nameid

<input type='hidden' name="category" value=" <?php echo $cat_no; ?> " />  
<tr> <td>Sub Category: </td>
<td><input type='text' name="sub_category" > </td>
于 2012-10-04T14:18:47.373 に答える
0

私は最近、自分の Web サイトで非常に似たようなことを行い、このコミュニティから支援を受けました。HTML 側では、標準フォームを作成し、各入力に「名前」を付けました。たとえば、都市と州をキャプチャしようとしているとします。

<html>
<body>
<form>
<tr>
<td>State: </td><td> <input type="text" style="border:1px solid #000000" name="state" /></td>
<td>City</td><td><input type="text" style="border:1px solid #000000" name="city" /></td>
</tr>
</form>
</body>
</html>

次に、「state」という名前の列と「city」という名前の列を持つ mySQL データベースをセットアップします。次に、PHP を使用して、フォームからデータベースにデータを挿入します。私は PHP を初めて使用しますが、古い mysql コマンドを使用するよりも PDO を使用する方が安全であることを理解しています。

$dbtype     = "mysql";
$dbhost         = "localhost";
$dbname     = "name";
$dbuser     = "user";
$dbpass     = "pass";

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$sql = "SELECT column_name FROM information_schema.columns WHERE table_name = '[Insert Name of your table here]'";
$q = $conn->prepare($sql);
$q->execute();
$columns = $q->fetchAll(PDO::FETCH_COLUMN, 0);

$cols = array();
foreach ($_POST as $key=>$value)
{
    // if a field is passed in that doesn't exist in the table, remove it.  The name of the input that is removed will be echoed so you can debug.  Remove echo if you go to production.
    if (!in_array($key, $columns)) {
        unset($_POST[$key]);
echo $key;
    }
}
$cols = array_keys($_POST);
$sql = "INSERT INTO Facilities(". implode(", ", $cols) .") VALUES (:". implode(", :", $cols) .")";
$q = $conn->prepare($sql);
array_walk($_POST, "addColons");
$q->execute($_POST);

function addColons($value, &$key)
{
    $key = ":{$key}";
}

これは私にとって非常にうまくいっています。HTML フォーム入力とまったく同じ名前の列のみを照合できることに注意してください。私の場合、100 以上の入力を作成したかったので、これは簡単でした。5 ~ 10 を扱っている場合は、特定の変数を手動で挿入する方が簡単かもしれません。

于 2012-10-04T14:49:48.590 に答える