Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我想使我的表单处理代码可重用,但如何?_Php_Refactoring_Reusability - Fatal编程技术网

Php 我想使我的表单处理代码可重用,但如何?

Php 我想使我的表单处理代码可重用,但如何?,php,refactoring,reusability,Php,Refactoring,Reusability,正如标题中所说,我希望我的代码可以重用。我不想在添加新数据库内容时编辑大的部分 我的代码在多个文件中类似: if ( isset( $_POST["submit"] ) ) { $_SESSION["message"] = ""; $sticky = $_POST["sticky"]; $visible = $_POST["visible"]; $title = mysql_prep( trim( $_POST["title"] ) ); $trailer = mysql_prep( trim

正如标题中所说,我希望我的代码可以重用。我不想在添加新数据库内容时编辑大的部分

我的代码在多个文件中类似:

if ( isset( $_POST["submit"] ) ) {

$_SESSION["message"] = "";
$sticky = $_POST["sticky"];
$visible = $_POST["visible"];
$title = mysql_prep( trim( $_POST["title"] ) );
$trailer = mysql_prep( trim( $_POST["trailer"] ) );
$description = mysql_prep( trim( $_POST["description"] ) );
$price = mysql_prep( trim( $_POST["price"] ) );
$source = mysql_prep( $_POST["source"] );
$sourceurl = mysql_prep( $_POST["sourceurl"] );
$appstore = mysql_prep( $_POST["appstore"] );
$googleplay = mysql_prep( $_POST["googleplay"] );
$device = mysql_prep( $_POST["device"] );
$rating = $_POST["rating"];

//form validations
$required_fields = array( "title", "trailer", "description" );

required_post_fields( $required_fields );
//end form validations

if( $_FILES["image_file"]["size"] != 0 ) {

    $image_ext = pathinfo( $_FILES["image_file"]["name"], PATHINFO_EXTENSION );
    $image_name = remove_bad_words( str_replace( " ", "_", strtolower( $title ) ), "/[^a-zA-Z0-9\s_]/" ) . "." . $image_ext;
    $folder_location = "../images/game/";
    $upload_path = $folder_location . $image_name;

    if( file_exists( $folder_location . $_SESSION["image_name"] ) ) {

        if( $_SESSION["image_name"] != $image_name ) {

            $_SESSION["message"] .= $_SESSION["image_name"] . " has been deleted successfully.<next>";
        }
        unlink( $folder_location . $_SESSION["image_name"] );
    }

    upload_check( $image_ext, $upload_path, $image_name );

    if( empty( $errors ) ) {

        $_SESSION["message"] .= "{$image_name} was uploaded successfully.<next>";

        move_uploaded_file( $_FILES["image_file"]["tmp_name"],  $upload_path );
    }

} else {

    $image_name = $_SESSION["image_name"];
}


if ( isset( $_POST["sticky"] ) && $sticky == 1 && empty( $errors ) ) {

    $query = "SELECT * FROM `game_content` WHERE `sticky` = 1";

    $sticky_result = mysqli_query( $connection, $query );

    if( $sticky_result && mysqli_num_rows( $sticky_result ) > 0 ) {

        $sticky_data = mysqli_fetch_assoc( $sticky_result );

        $query = "UPDATE `game_content` SET `sticky` = 0 WHERE `id` = {$sticky_data["id"]}";

        $stickied = mysqli_query( $connection, $query );
        check_query( $stickied );

        if ( $stickied && $sticky_data["id"] != $id ) {

            $_SESSION["message"] .= "{$sticky_data["title"]} is no longer stickied.<next>";
        }
    }
}

if ( empty( $errors ) ) {

    $query = "UPDATE `game_content` SET ";
    $query .= "`sticky` = '{$sticky}', ";
    $query .= "`visible` = '{$visible}', ";
    $query .= "`title` = '{$title}', ";
    $query .= "`logo` = '{$image_name}', ";
    $query .= "`trailer` = '{$trailer}', ";
    $query .= "`description` = '{$description}', ";
    $query .= "`price` = '{$price}', ";
    $query .= "`source` = '{$source}', ";
    $query .= "`sourceurl` = '{$sourceurl}', ";
    $query .= "`appstore` = '{$appstore}', ";
    $query .= "`googleplay` = '{$googleplay}', ";
    $query .= "`device` = '{$device}', ";
    $query .= "`rating` = '{$rating}' ";
    $query .= "WHERE id = {$id} ";
    $query .= "LIMIT 1";

    $result = mysqli_query( $connection, $query );
    check_query( $result );

    if ( $result ) {

        //forget the stored image name
        unset( $_SESSION["image_name"] );
        if( $sticky == 1 ) {

            $_SESSION["message"] .= "{$title} was updated successfully & has been stickied.";

        } else {

            $_SESSION["message"] .= "{$title} was updated successfully.";
        }
        redirect_to( ROOT_PATH . "/" . ADMIN_FOLDER . "/game_edit.php?id=" . $id );

    } else {

        redirect_to( ROOT_PATH . "/" . ADMIN_FOLDER . "/game.php" );
    }
}
}
if(设置($\u POST[“提交”])){
$\会话[“消息”]=“”;
$sticky=$_POST[“sticky”];
$visible=$_POST[“visible”];
$title=mysql_prep(trim($_POST[“title”]);
$trailer=mysql_prep(trim($_POST[“trailer”]);
$description=mysql_prep(trim($_POST[“description”]);
$price=mysql_prep(trim($_POST[“price”]);
$source=mysql_prep($_POST[“source”]);
$sourceurl=mysql_prep($_POST[“sourceurl”]);
$appstore=mysql_prep($_POST[“appstore”]);
$googleplay=mysql_prep($_POST[“googleplay”]);
$device=mysql_prep($_POST[“设备”]);
$rating=$_POST[“rating”];
//表单验证
$required_fields=数组(“标题”、“预告片”、“说明”);
必填字段(必填字段);
//结束形式验证
如果($_文件[“图像_文件”][“大小”!=0){
$image\u ext=pathinfo($\u FILES[“image\u file”][“name”],pathinfo\u扩展名);
$image\u name=删除坏单词(str\u替换(“,”,strtolower($title)),“/[^a-zA-Z0-9\s\u]/”。”。“$image\u ext;
$folder_location=“../images/game/”;
$upload\U path=$folder\U location.$image\U name;
如果(文件存在($folder\u location.$\u SESSION[“image\u name”])){
if($\u会话[“图像名称”!=$image\u名称){
$\u会话[“消息”]。=$\u会话[“图像名称”]”已成功删除。“;
}
取消链接($folder_location.$_SESSION[“image_name]”);
}
上传检查($image\u ext、$upload\u path、$image\u name);
if(空($errors)){
$\u会话[“消息”]。=“{$image\u name}已成功上载。”;
移动上传的文件($上传文件[“图像文件”][“tmp文件名”],$上传路径);
}
}否则{
$image\u name=$\u会话[“image\u name”];
}
if(设置($\u POST[“sticky”])&&&$sticky==1&&empty($errors)){
$query=“从`game\u content`中选择*,其中`sticky`=1”;
$sticky\u result=mysqli\u查询($connection,$query);
如果($sticky_result&&mysqli_num_rows($sticky_result)>0){
$sticky_data=mysqli_fetch_assoc($sticky_result);
$query=“UPDATE`game\u content`SET`sticky`=0,其中`id`={$sticky\u data[“id”]}”;
$stickied=mysqli\u查询($connection,$query);
检查查询($sticked);
如果($stickied&&$stickied_数据[“id”]!=$id){
$_会话[“消息”]。=“{$sticky_数据[“title”]}不再粘滞。”;
}
}
}
if(空($errors)){
$query=“更新游戏内容集”;
$query.=“`sticky`='{$sticky}',”;
$query.=“`visible`='{$visible}',”;
$query.=“`title`='{$title}',”;
$query.=“`logo`='{$image\u name}',”;
$query.=“`trailer`='{$trailer}',”;
$query.=“`description`='{$description}',”;
$query.=“`price`='{$price}',”;
$query.=“`source`='{$source}',”;
$query.=“`sourceurl`='{$sourceurl}',”;
$query.=“`appstore`='{$appstore}',”;
$query.=“`googleplay`='{$googleplay}'”;
$query.=“`device`='{$device}',”;
$query.=“`rating`='{$rating}'”;
$query.=“其中id={$id}”;
$query.=“限制1”;
$result=mysqli\u查询($connection,$query);
检查查询($result);
如果($结果){
//忘记存储的图像名称
取消设置($_会话[“图像名称]);
如果($sticky==1){
$\u会话[“消息”]。=“{$title}已成功更新并已粘贴。”;
}否则{
$\会话[“消息”]。=“{$title}已成功更新。”;
}
重定向到(根路径“/”.ADMIN\u文件夹“/game\u edit.php?id=“.id$id”);
}否则{
重定向到(根路径“/”.ADMIN\u文件夹“/game.php”);
}
}
}
我有不同的文件game_new.php、game_edit.php、tech_new.php、tech_edit.php和其他包含类似代码的文件。有谁能帮我重构这些东西吗


我还在学习,谢谢。

您可能想尝试一些PHP,并以传统的OOP方式使用它。然后,您可以在以后的代码中调用其中的一些。您也可以使用SQL语句。

我从未研究过类,感谢您指导我正确的方向。