我是一名经验丰富的程序员,但对PHP不熟悉,我正在进行第一个真正的项目。
我正在浏览一棵文件树,并显示各种内容——文本、图像等——当授权用户查看时,他们可以做一些特殊的事情,例如脚本向他们显示其他人看不到的按钮,让他们采取某些行动。
这工作得很好,但我一直在思考如何将内容与
textarea
使用按钮的帖子,我可以动态创建文本区域和按钮,但让代码执行_post处理——请原谅这个双关语!-接收文本区域的内容,并知道数据与什么相关,因为它将如何处理它,要么是动态生成的名称的一部分,要么是发送的数据的一部分——只要不太痛苦,我真的不在乎。
到目前为止,我看到的所有例子都假设你有一个静态的情况,也假设你正在使用:
<input...
我没有发现任何不使用输入表单的例子。。。也许值得指出的是,绝大多数的例子都是对“提交”这个词的过度使用,这是我迄今为止发现的最少的滥用
is in this example:
<form action="" method="post">
<label>Additional Comments:</label><br>
<textarea cols="35" rows="12" name="comments" id="para1">
<php echo $comments; ?>
</textarea><br>
<input type="submit" name="button" value="Submit"/></form>
但它仍然没有帮助:“提交”是一个关键字还是一个任意名称?!新手不知道。
在上面我注意到id的使用,我一直在从这个角度考虑,但这里似乎没有引用它。。。我无法让输入构造在我的环境中工作——它不能与表单创建紧密联系在一起(或者也许我错了?)。。。但我在每个合适的地方都有按钮,所以我现在对它们相当熟悉。我不明白的是如何将
文本区
使用相关按钮。如果你使用
<input
但我不是。
我尝试了很多东西,但现在我坐在这里:
echo '<textarea name="fileMeta" rows="20" class="textarea"
id="meta_'.$arrayIndex.'">';
echo $contents;
echo "</textarea><br>";
echo '<button name="saveMeta" value="'.$arrayIndex.
'" formtarget="_self" formmethod="post" form="thisForm" '.
'align="left">Save</button>';
(这不是问题的一部分,但顺便说一句,类标识似乎并没有起到什么作用——我试图将其用于css。)
请注意,文本区域是如何基于数组索引动态生成id的。按钮的值包含相同的数组索引。当然,我打算加入这些——很容易。。。至少我是这么想的。
点击按钮后,想法是对“saveMeta”进行代码检查,但后来。。。这只会得到值$arrayIndex。
但即使是这个新手也很清楚,按钮并没有直接将其与文本区域的内容联系起来。我希望,因为它被认为是表单数据,所以它会在帖子中传递,并且有一些方法可以根据id“提取内容”。但似乎没有任何方法可以轻松发现——至少对于像我这样的新手来说——在_POST数组中发送回了什么值。。。
…我正在考虑通过以下方式转储整个_POST数组:
var_dump($_POST);
…并在碎片中筛选我的数据,也许从中可以了解到我的假设是否正确(文件文本区域在那里),如果是这样,我如何在PHP大海捞针中找到它。
除此之外,我陷入了困境。
我突然想到了一个创意。。。
…并不是说我知道如何实现它:也许在按钮执行操作时,它会以某种方式从文本区域加载value属性?
好吧,我以为我成功了!
沮丧的是,我确实做了
var_dump
,就像这样:
if (isset($_POST['saveMeta']))
{
var_dump($_POST);
...
我发现数组中有两个元素,按钮和文本区域,如前所述,一个可通过“saveMeta”获得,另一个可从“fileMeta”获得(这是文本区域的名称)!
我错误地认为它是有效的,我只是不知道如何访问数据,错误地认为你首先查找按钮的名称,并从中获取值,然后查找文本区域的名称,你就得到了你的数据。
不。出于某种原因,它有上次的数据
文本区
加载?!这是一个奇怪的怪癖。。。