2011-12-04 3 views
0

これは非常に簡単な質問であり、非常に簡単な答えが必要です。私はMYSQLデータベースからデータを取得し、取得したデータを使用してテーブルを構築しています。私はCRUDテーブルを構築しています。最後の2つのカラムは「編集」と「削除」です。しかし、私は、フォームのアクション呼び出し、現在のページにする必要がありますフォームからのアクションクエリを使用するための「適切な」方法

<form action="delete.php" method="POST"> 
<input type="hidden" value="ptest"/> 
<input type="submit" value="Sign Up"/> 
</form> 

次はWelcome.phpで発見された:私は最後の2つの列を構築していますフォームは次のようになります代わりに?

<form action="welcome.php" method="POST"> 
<input type="hidden" value="ptest"/> 
<input type="submit" value="Sign Up"/> 
</form> 

私はPHPにはとても新しいので、適切なプロトコルに従っていることを確認したいと思います。これが何よりも意見が多い場合は、少なくともあなたの専門的な意見を残してください。

はあなたがいけない

エヴァン

答えて

1

、どうもありがとうございました。 厳しい基準はありません。

初心者であれば、各アクションのファイルが分かりやすくなることがあります。だから、それに行きなさい。
より多くの経験をすると、すべてのアクションを1つのファイルにまとめると、コードが短く便利になります。

あなたは別のファイルに持っていなければならないものは、フォームそのものです。
新しいレコードの追加、既存のレコードの編集、送信エラーの表示に同じフォームを使用することができます。

ここでは、1ページャーの例を示します。それは削除されませんが、あなたに一般的な考えを与えることができます。 レコードを追加、編集、参照することができます。

コード

<? 
mysql_connect(); 
mysql_select_db("new"); 
$table = "test"; 
if($_SERVER['REQUEST_METHOD']=='POST') { //form handler part: 
    $name = mysql_real_escape_string($_POST['name']); 
    if ($id = intval($_POST['id'])) { 
    $query="UPDATE $table SET name='$name' WHERE id=$id"; 
    } else { 
    $query="INSERT INTO $table SET name='$name'"; 
    } 
    mysql_query($query) or trigger_error(mysql_error()." in ".$query); 
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
    exit; 
} 
if (!isset($_GET['id'])) { //listing part: 
    $LIST=array(); 
    $query="SELECT * FROM $table"; 
    $res=mysql_query($query); 
    while($row=mysql_fetch_assoc($res)) $LIST[]=$row; 
    include 'list.php'; 
} else { // form displaying part: 
    if ($id=intval($_GET['id'])) { 
    $query="SELECT * FROM $table WHERE id=$id"; 
    $res=mysql_query($query); 
    $row=mysql_fetch_assoc($res); 
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
    } else { 
    $row['name']=''; 
    $row['id']=0; 
    } 
    include 'form.php'; 
} 
?> 

テンプレート form.php

<? include TPL_TOP ?> 
<form method="POST"> 
<input type="text" name="name" value="<?=$row['name']?>"><br> 
<input type="hidden" name="id" value="<?=$row['id']?>"> 
<input type="submit"><br> 
<a href="?">Return to the list</a> 
</form> 
<? include TPL_BOTTOM ?> 


<? include TPL_TOP ?> 
<a href="?id=0">Add item</a> 
<? foreach ($LIST as $row): ?> 
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a> 
<? endforeach ?> 
<? include TPL_BOTTOM ?> 
+0

母、トウシュ、SIR list.php。 – rdlowrey

+0

この行の目的は何ですか? '($ _ SERVER [' REQUEST_METHOD '] ==' POST ')' また、送信ボタンに値を与えて、 'if(!isset($ _ POST [' submitvalue '])) –

+0

@Evan優れた質問。 1.すべてのコードを1つのファイルにまとめているので、このスクリプトに対する通常の呼び出しと、フォームアクションとして機能するときの呼び出しを区別する必要があります。したがって、この行は後者の行に使用されます。私は行動を区別するためにちょうどidを使用しています。 id = 0の場合 - add、idが正の数の場合 - それは編集です。ただし、削除するにはこのようなフィールドが必要です。 idとして値を持つ "delete"という名前の隠しフォームフィールドが好きです。 –

関連する問題