Предисловие: Поскольку вы говорите это как учебное упражнение, я пропущу ханжеский манифест о передовой практике и многочисленных и всевозможных достоинствах ООП. ;) Ваша книга, вероятно, подробно описывает каждую страшную / суровую лекцию, которую я в любом случае предпочитаю подобному решению.
Можно ли сделать что-то вроде
форма
действие = "DeleteOrAdd.php: doAddDeleteRecord ()
Короче говоря, да. Самый простой способ достичь своей цели - просто сослаться на файл в действии формы, как вы это сделали:
<!-- form.php -->
<form action="DeleteOrAdd.php" method="POST">
А затем в DeleteOrAdd.php запустите вашу функцию, протестировав данные $ _POST, которые отправит отправленная вами форма, например:
<?php
// DeleteOrAdd.php
if(isset($_POST['some_form_variable']) && $_POST['some_form_variable'] != null) {
$data = array();
foreach($_POST as $post) {
array_push($data, $post);
}
doAddDeleteRecord($data);
}
function doAddDeleteRecord($data) {
// ...your processing code, etc.
Результат чисто процедурного подхода, который вы указали, откровенно говоря, вы можете делать подобные вещи. Вы бы не хотели развиваться в реальной жизни (пропуская это глубокое погружение). Я также гарантирую, что ваша книга объясняет почему не в мельчайших подробностях.)
Важное примечание !! Так как я не увидел возвращаемого значения в фрагменте кода, который вы разместили, и вы говорите, что только начинаете, я собираюсь взять минуту и указать на скрытая ловушка здесь на всякий случай:
-> Ваш код может отлично работать с теми шестью строками, которые я добавил над вашей функцией, и вы никогда не узнаете об этом, если вы не
- возвращает значение (которое доказывает, что код был запущен, если ничего больше) и
захватывает указанное значение, чтобы вы могли воздействовать на него / отображать его / в противном случае показать себе, что
а. что-то случилось - и в идеале,
б. что это было за что-то.
В противном случае все, что у вас есть, - это двусмысленность: нет признаков того, что он работает или ломается (не выдает ошибок, предупреждений и т. Д.). Разочарование в отладке, если не сказать больше.
Итак, сказано: если ваша функция возвращает что-то (истина в случае успеха, строка с сообщением и т. Д.), То это, вероятно, выглядит примерно так:
function doAddDeleteRecord($data) {
// ... your function code, etc.
$sql = "INSERT INTO mytable VALUES(".implode(',',$data).")";
if (mysql_query($sql) == true) {
$message = "Record saved";
} else {
$message = false;
}
return $message;
}
Любое значение, возвращаемое вашей функцией, нуждается в переменной для ее захвата, иначе оно не будет установлено. Захватите его с помощью присваивания переменной при вызове функции doAddDeleteRecord ():
... // same 6 little lines of conditional code ...
}
$result = doAddDeleteRecord($data);
}
// maybe just echo it out or something...
echo $result;
- или -
... // still the same 6 lines ...
}
$result = doAddDeleteRecord($data);
}
// maybe have a new test based on the outcome of the last one...
if ($result == false) {
// do something about the fail...
} elseif (is_string($result)) {
// do something about the success...
}
Удачи, HTH. :)