«Правильный» метод использования запроса Action из формы - PullRequest
0 голосов
/ 04 декабря 2011

Это очень простой вопрос, и, скорее всего, требует очень простого ответа. Я извлекаю данные из базы данных MYSQL и строю таблицу, используя полученные данные. Я создаю таблицу CRUD, в которой последние два столбца являются «редактировать» и «удалять». Форма, которую я строю в последних двух столбцах, будет выглядеть примерно так:

В Welcome.php найдено следующее:

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

Однако следует ли мне сделать так, чтобы действие формы вызывало текущую страницу?

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

Я очень плохо знаком с PHP и хочу убедиться, что я следую правильному протоколу. Если это скорее мнение, чем что-либо еще, пожалуйста, по крайней мере, оставьте мне свое профессиональное мнение.

Большое спасибо,

Evan

1 Ответ

1 голос
/ 04 декабря 2011

Ты не должен. Здесь нет строгих стандартов.

Будучи новичком, вам может показаться, что отдельный файл для каждого действия легче понять. Итак, дерзайте.
По мере накопления опыта вы обнаружите, что все действия в одном файле делают код короче и удобнее.

То, что вы должны иметь в отдельном файле - это сама форма.
Таким образом, вы сможете использовать эту же форму для добавления новой записи, редактирования существующей и отображения ошибок отправки.

Вот пример одного пейджера. Это не удаляет, хотя, но может дать вам общее представление. Это позволяет добавлять, редактировать и просматривать записи.

код

<?  
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 ?>

и list.php

<? 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 ?>
...