Php 如何从动态HTML表中收集数据

Php 如何从动态HTML表中收集数据,php,html,Php,Html,我有一个带有HTML表格的页面,其中包含新闻事实(NIEUWSBERICHT)、照片(IMAGE)和广告(RecName)。在此页面上,用户可以通过添加页码来组织这些项目。将页码保存到db后,带有页码的项目将在CablePaper的一个版本中广播(或任何你用英语称之为CablePaper的版本),这是最终目标。HTML表还显示了查询所需的外键 HTML表的图像位于: 我的问题是:提交表单后如何从上面的HTML表中收集数据 我想得到两种类型的查询,如(例如,键与上图对应): 及 让我感到困难的是

我有一个带有HTML表格的页面,其中包含新闻事实(NIEUWSBERICHT)、照片(IMAGE)和广告(RecName)。在此页面上,用户可以通过添加页码来组织这些项目。将页码保存到db后,带有页码的项目将在CablePaper的一个版本中广播(或任何你用英语称之为CablePaper的版本),这是最终目标。HTML表还显示了查询所需的外键

HTML表的图像位于:

我的问题是:提交表单后如何从上面的HTML表中收集数据

我想得到两种类型的查询,如(例如,键与上图对应):

让我感到困难的是HTML表是动态构建的(在PHP中),行数是可变的。见下面的清单。不知何故,我认为如果我放弃动态构建表,开始使用数组而不是“$cell”来存储所有变量会更好。或者我可以通过某种方式在屏幕上获取PageNo项获取多个值,比如在图片中,第一行的PageNo获取值20和8,我可以在查询中使用这些值。啊,我真的不知道该怎么继续了。有人吗

// Get column names //
$fields_num = mysql_num_fields($result);
echo "<h1>Create edition {$table}</h1>";
echo "<table border='1'><tr>";
for($i=0; $i<$fields_num; $i++)
    {
    $field = mysql_fetch_field($result);
    echo "<td>{$field->name}</td>";
    }
echo "<td>PageNo</td>";
echo "</tr>\n";

// Show query result //
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
echo "<tr>";
foreach($row as $cell)
    echo "<td>$cell</td>";
echo "<td> <select  name='paginanummer'>
    <option></option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    </select></td>";
    echo "</tr>\n";
    }
//获取列名//
$fields\u num=mysql\u num\u fields($result);
echo“创建版本{$table}”;
回声“;

对于($i=0;$i给出
select
元素名称及其所代表行的id 例如:

 <select name="position_12">
在我放置
echo
行的地方,您有
$row\u id
$value
变量,您可以使用它们来构建查询

答对了

下面是填充HTML表列“PageNo”的代码。正如您所看到的,我给了select唯一的名称(感谢Yaron;-),并将所需的键放入select的值中,就像字符串一样

echo "<td> <select  name='position_".$rowcounter."'>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 0'></option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 1'>1</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 2'>2</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 3'>3</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 4'>4</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 5'>5</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 6'>6</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 7'>7</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 8'>8</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 9'>9</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 10'>10</option>
   </select></td>";
然后我循环遍历数组,使用splitdata将值(字符串)拆分为单独的变量。这就是我想要的!事情是这样的:

if ($_POST) {
    $kv = array();
    foreach ($_POST as $key => $value) {
    $kv[] = "$value";
    etc...
$maxcount = count($kv) - 1;
for ($teller = 0; $teller <= $maxcount; $teller++) {
$data = $kv[$teller];
$splitdata = explode(',', $data);
$type = $splitdata[0];
$nieuwsbericht_id = $splitdata[1];
$reclame_id = $splitdata[2];
$image_id = $splitdata[3];
$paginanummer = $splitdata[4];

etc.... (now I can create the sql queries I need to update the database tables)
$maxcount=count($kv)-1;

对于($teller=0;$teller拥有一个HTML版本的表格将有助于为您提供精确的代码解决方案是使用像jsfiddle.net这样的服务。检查它——非常酷的东西。还有一个问题:你能使用jQuery吗?还是应该是纯JS?我不太清楚你是想让它是一个用PHP处理的简单表单,还是应该是一个AJAX调用。@RickKuipers说得好。JiM_i,你是想通过一个hp
$\u POST
在浏览器中对值进行对象或解析?@编辑:我想我会使用$\u POST,虽然我不确定。没有那么丰富的经验。嘿,我的照片回来了。谢谢;-)@Rick Kuipers:这只是一个用PHP处理的表单,没有AJAX。谢谢Yaron!我要做这件事。我有结果就回来!再次感谢亚龙,我的问题解决了!我使用了您关于选择名称的第一个提示。我想我应该在一个新的答案中发布我的代码,我会在一分钟内完成。我甚至不能点击你的答案,因为我需要至少15个信誉点,而我没有。很抱歉
echo "<td> <select  name='position_".$rowcounter."'>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 0'></option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 1'>1</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 2'>2</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 3'>3</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 4'>4</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 5'>5</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 6'>6</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 7'>7</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 8'>8</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 9'>9</option>
   <option value='$type, $nieuwsbericht_id, $reclame_id, $image_id, 10'>10</option>
   </select></td>";
if ($_POST) {
    $kv = array();
    foreach ($_POST as $key => $value) {
    $kv[] = "$value";
    etc...
$maxcount = count($kv) - 1;
for ($teller = 0; $teller <= $maxcount; $teller++) {
$data = $kv[$teller];
$splitdata = explode(',', $data);
$type = $splitdata[0];
$nieuwsbericht_id = $splitdata[1];
$reclame_id = $splitdata[2];
$image_id = $splitdata[3];
$paginanummer = $splitdata[4];

etc.... (now I can create the sql queries I need to update the database tables)