Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 HTML复选框和表单中的单个输入_Php_Html_Checkbox_Twig - Fatal编程技术网

Php HTML复选框和表单中的单个输入

Php HTML复选框和表单中的单个输入,php,html,checkbox,twig,Php,Html,Checkbox,Twig,我使用的是基于 我曾经使用循环生成一个简单的图库 您可以删除单个图像,或选中复选框,然后单击任何删除按钮提交 {{record.name}是数据库中的图像名称 小枝成形 问题 呈现HTML <form> <img src="images/image1.jpg"> <input type="hidden" name="single" value="image1" > <input type="checkbox" name="que

我使用的是基于

我曾经使用循环生成一个简单的图库

您可以删除单个图像,或选中复选框,然后单击任何删除按钮提交

{{record.name}
是数据库中的图像名称

小枝成形

问题 呈现HTML

<form>
    <img src="images/image1.jpg">
    <input type="hidden" name="single" value="image1" >
    <input type="checkbox" name="queued[]" value="image1" />

    <img src="images/image2.jpg">
    <input type="hidden" name="single" value="image2" >
    <input type="checkbox" name="queued[]" value="image2" />

    <img src="images/image3.jpg">
    <input type="hidden" name="single" value="image3" >
    <input type="checkbox" name="queued[]" value="image3" />
</form>

复选框Delete运行for循环并起作用

但是单次删除总是删除表单
image3
上最后一个
name=“Single”

我尝试将
$\u POST['single']
设置为数组
name=“single[]”
,但它删除了所有文件,因为它们不是
type=“checkbox”
,并且总是
isset
并添加到数组中


我如何解决这个问题,并使复选框删除和单一删除以相同的形式出现?

我对您的用户体验不是很直观。添加一个名为“删除选中的图像”的按钮会更好。 无论如何,您都可以设置submit的动态值

{% for record in records %}
    <!-- [...] -->
    <button type="submit" name="submit" value="{{ record.name }}">Delete</button>
{% endfor %}
{%用于记录%中的记录]
删除
{%endfor%}
然后

函数onDelete(){
$checkbox=isset($\u POST['queued'])?$\u POST['queued']:数组();
//复选框删除
如果(isset($_POST['queued'])){
//删除队列数组中的每个
foreach($name形式的复选框){
文件::删除(“$path$name.jpg”);
}
}
//单删除
否则{

$nameFile=$\u POST['submit'];//当您将属性类型与名称混淆时,将不起作用。此外,您不需要将名称设置为动态,因为单击按钮的值将设置为post值感谢您帮助我解决此问题,我花费了很多时间和解决方案。它现在通过复选框和单个按钮进行删除。我还添加了一个“删除”复选按钮。@DarkBee它正在工作,我已经测试过好几次了。虽然你说type=“submit”{{{record.name}}应该是type=“submit”?是的,我就是这么说的。没有像
submit\u blablabla
这样的类型,但只找到了有效的类型。是的,对不起,谢谢@DarkBee,我写这篇文章很匆忙
<form>
    <img src="images/image1.jpg">
    <input type="hidden" name="single" value="image1" >
    <input type="checkbox" name="queued[]" value="image1" />

    <img src="images/image2.jpg">
    <input type="hidden" name="single" value="image2" >
    <input type="checkbox" name="queued[]" value="image2" />

    <img src="images/image3.jpg">
    <input type="hidden" name="single" value="image3" >
    <input type="checkbox" name="queued[]" value="image3" />
</form>
{% for record in records %}
    <!-- [...] -->
    <button type="submit" name="submit" value="{{ record.name }}">Delete</button>
{% endfor %}
function onDelete() {

    $checkboxes = isset($_POST['queued']) ? $_POST['queued'] : array();

    // Checkbox Delete
    if(isset($_POST['queued'])) {
        // Delete each in queued array
        foreach($checkboxes as $name) { 
            File::delete("$path$name.jpg");
        }
    }

    // Single Delete
    else {

        $nameFile = $_POST['submit']; // <-----

        File::delete("$path$nameFile.jpg");
    }

}