【问题标题】:php specify folder from select optionphp从选择选项中指定文件夹
【发布时间】:2017-03-01 00:14:13
【问题描述】:

对不起,我是 PHP 新手。我想创建一个表单来获取正在创建为文件名和文件夹名的页面的目的地。

到目前为止我做了什么:

<form method="post">
    <input type='text' name='filename' placeholder='Enter a filename' />
    <select>
        <option> value='Folder1' name="thisfolder">Folder1</option>
        <option> value='Folder2' name="thisfolder">Folder2</option>
        <option> value='Folder3' name="thisfolder">Folder3</option>
    </select>
    <input type='submit' value='Run the Script' />
</form>

<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST"){ 
        $filename=$_POST['filename'];
        $myFile = .$thisfolder. "/page" .$filename.".php";

        $fh = fopen($myFile, 'w');
        $stringData = "Hello";
        fwrite($fh, $stringData);
    } 
?>

正如您首先注意到的,input 用于获取目标页面的文件名,select 元素用于选择三个预定义文件夹之一作为存储目录目标。

任何帮助将不胜感激。

【问题讨论】:

    标签: php forms file post


    【解决方案1】:

    试试这个:

    <form method="post">
        <input type='text' name='filename' placeholder='Enter a filename'>
        <select name="thisfolder">
            <option value="Folder1">Folder1</option>
            <option value="Folder2">Folder2</option>
            <option value="Folder3">Folder3</option>
        </select>
        <input type='submit' value='Run the Script'>
    </form>
    
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        // the name of the file to create
        $filename=$_POST['filename'];
        // the name of the folder to put $filename in
        $thisFolder = $_POST['thisfolder'];
        // make sure #thisFolder of actually a folder
        if (!is_dir(__DIR__.'/'.$thisFolder)) {
            // if not, we need to make a new folder
            mkdir(__DIR__.'/'.$thisFolder);
        }
        // . . . /[folder name]/page[file name].php
        $myFile = __DIR__.'/'.$thisFolder. "/page" .$filename.".php";
        $fh = fopen($myFile, 'w');
        $stringData = "Hello";
        fwrite($fh, $stringData);
        fclose($fh);
    }
    ?>
    

    【讨论】:

    • 我遇到了这个错误注意:未定义的变量:C:\xampp\htdocs\TEST\page1.php 中的这个文件夹在第 26 行
    • 亲爱的,Folder1、Folder2 和 Folder3 这些是我的文件夹。我希望能够选择我希望在其中创建页面的文件夹之一。我不想有默认文件夹
    • PHP 区分大小写。将两个变量都更改为$thisfolder
    • 我得到 Notice: Undefined variable: thisfolder in C:\xampp\htdocs\TEST\page1.php on line 27 并在根文件夹而不是我选择的文件夹中创建页面
    • @BehradKhodayar 哪个变量亲爱的
    【解决方案2】:

    您需要像这样在下拉菜单中添加一个名称,选择菜单也是在内部嵌套选项上的反向选择

    <select name='myFolder'>
    

    然后在表单提交时,您可以使用$_POST['myFolder'] 调用参数并在路径点中回显它 - 您也不会创建一个 var,因此如果没有像这样选择任何内容,您可以设置默认值。

    $myfolder = $_POST['myFolder'] ? $_POST['myFolder'] : 'your defualt folder';
    

    下面是它应该是什么样子的工作示例,

    <form method="post">
    <input type='text' name='filename' placeholder='Enter a filename'>
    <input type='submit' value='Run the Script'>
    <select name='myFolder'>
    <option value="Folder1">Folder1</option>
    <option value="Folder2">Folder2</option>
    <option value="Folder3">Folder3</option>
    </select>
    </form>
    
    <?php
     // store the myfolder param
      $thisfolder = $_POST['myFolder'] ? $_POST['myFolder'] : 'Folder1';
    
      if ($_SERVER["REQUEST_METHOD"] == "POST")
      { 
    
      $filename=$_POST['filename']; 
      $myFile = $thisfolder. "/page_" .$filename.".php";
    
      $stringData = "Hello";
        if (!mkdir($thisfolder, 0777, true)){
            // creat directory if not already
            }
      if(file_put_contents($myFile, $stringData)){
      echo 'File Saved!';
     }else{
      echo 'no directory exists'; 
     }} 
    ?> 
    

    【讨论】:

    • 亲爱的你的代码,我确定我的代码有很多错误,但是你在没有测试的情况下编辑了代码
    • 我删除了额外的句点-抱歉目前没有办法测试它,但解释是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多