PHP で OOP を使用してフォーム送信アクションを実行する方法を理解するのに少し助けが必要です。当面のタスク... OOP を使用して PHP コードを記述する方法を学ぼうとしています。これまでのところ、クラス、関数、呼び出し関数、継承などの一般的な考え方を理解しています。
ユーザーが特定の場所で食事を検索できるようにする練習用の簡単なプロジェクトを作成しました。これまでのところ、2 つのフィールドを持つフォームがあり<input>
ます。通常はフォーム アクションの場合はそうします<form action="actionFileName.php">
が、フォームを処理する関数を持つクラスができたので、アクション値には何を使用すればよいでしょうか?
クラスのインスタンスを作成し、フォームを処理する関数を呼び出すことを考えましたが、オブジェクトが見つかりません! アドレスバーに表示されているステートメントのecho
値を含むフォームを送信した後のページ。else
hungryClass.php
どうすればこれを修正できますか? ありがとう。
私のコードがどのように見えるか: HTML フォーム
<?php require_once 'hungryClass.php';
$newSearch = new hungryClass();
?>
<form action="<?php $newSearch->searchMeal();?>" method="post" id="searchMealForm">
<input type="search" size="35" placeholder="What Food Are you looking for?" id="mealName" class="meal"/>
<input type="search" placeholder="City Area" id="mealLocation" class="meal">
<input type="submit" value="Satisfy Me" id="findMeal" />
</form>
フォームを処理するページ (hungryClass.php)
<?php
require_once('dbConnect.php');
class hungryClass{
public function searchMeal(){
//call connection function.
$connect = new dbConnect();
//validate input
if(isset($_POST['mealName'])){
$meal = $_POST['mealName'];
//ensure value is a string.
$cleanse_meal = filter_var($meal, FILTER_SANITIZE_STRING);
echo $cleanse_meal;
}
else{
echo "Please supply the meal you crave";
}
//validate location
if(isset($_POST['mealLocation'])){
$location = $_POST['mealLocation'];
//validate and sanitize input. ensure value is a string.
$cleanse_location = filter_var($location, FILTER_SANITIZE_STRING);
echo $cleanse_location;
}
else{
echo "Please supply a location";
}
}
データベース クラス
<?php
class dbConnect{
private $host = "localhost";
private $user = "stacey";
private $pass = "";
private $db_name = "menu_finder";
private $connect;
//private static $dbInstance;
public function __construct(){
try{
$this->connect = new mysqli($host, $user, $pass, $db_name);
if(mysqli_connect_error()){
die('connection error('.mysqli_connect_errno().')' . mysqli_connect_error());
}
}
catch(Exception $e){
echo $e->getMessage();
}
}
?>