2013-07-18 69 views
2

我想从MySQL数据库中拉出2个字段,并在2个隐藏表单字段中使用它们,并允许用户将数据输入到其他表单字段中。我使用下面的代码可以这样做:从HTML表单插入多行到MySQL数据库

$yesterday = date('d/m/Y',strtotime("-1 days")); 

$sql="SELECT acct_backup_servers.server_desc, acct_customer.customer from acct_backup_servers, acct_customer 
    where acct_backup_servers.cust_act=acct_customer.acct_no "; 

$result=mysql_query($sql); 

echo '<form action="http://www.bimotech.co.uk/admin/insert_backup_rec/index.php" method="post"> 
<table> 
<tr> 
<th width="20%" align="left" valign="top">Server</th> 
<th width="20%" align="left" valign="top">Customer</th> 
<th align="left" valign="top">Date</th> 
<th width="25%" align="left" valign="top">Status</th> 
<th width="30%" align="left" valign="top">Notes</th> 
<th align="left" valign="top"></th> 
</tr>'; 

while($rows=mysql_fetch_array($result)){ 

$server_notes = $rows['server_desc']; 

echo " 
<input type='hidden' name='server' value='".$rows['server_desc']."'> 
<input type='hidden' name='customer' value='".$rows['customer']."'> 
<tr> 
<td valign='top'>".$rows['server_desc']."</td> 
<td valign='top'>".$rows['customer']."</td> 
<td valign='top'><input type='text' name='date' size='10' id='datepicker' value='".$yesterday."'></td> 

<td valign='top'> 
<select name='status'>"; 
$sql2 = mysql_query("SELECT cat_desc FROM acct_backup_category"); 
while ($row = mysql_fetch_array($sql2)){ 

echo "<option value='category'>" . $row['cat_desc'] . "</option>"; 

} 

echo "</select></td> 
<td valign='top'><textarea name='notes'></textarea></td> 
<td valign='top'><input type='checkbox' name='completed'></td> 
</tr>"; 

} 

echo "</table> 
    </br> 
    <input type='submit' class='btn' value='Submit'> 
    </form>"; 

mysql_close(); 

我已经设置的页面,这种形式张贴和回显的结果,但所有我收到的最后一条记录。有没有办法让我可以得到每一行的所有结果并将它们一次性发布到数据库?

编辑:下面的PHP回声。

$backup_date = $_POST['date']; 
$server_desc = $_POST['server']; 
$customer = $_POST['customer']; 

echo $backup_date; 
echo $server_desc; 
echo $customer; 

我非常喜欢PHP新手,所以非常感谢任何人对此的帮助。

进一步编辑:

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

foreach($customer as $key => $value) { 
    $date = $backup_date[$key]; 
    $server = $server_desc[$key]; 
    $customer_id = $value; 
    $backup_code = $status[$key]; 
    $notes_field = $notes[$key]; 
    $been_checked = $checked[$key]; 
    mysql_query("INSERT INTO acct_backups (backup_date, server_code, cust_act, backup_code, notes, checked) VALUES ($date, $server, $customer_id, $backup_code, $notes_field, $been_checked)"); 
} 

mysql_close(); 

谢谢,

约翰

+0

没有足够的信息。你如何回应结果?我怀疑,因为你有没有看数组的相同名称的表单值,只有一个项目。我不是一个PHP专家,但看到这个职位:http://stackoverflow.com/questions/3980228/multiple-http-get-parameters-with-the-same-identifier与此建议:“如果你可以改变领域名称包含[],那么PHP将创建一个包含所有匹配值的数组“ –

+0

嗨 - 刚刚添加了更多信息。我是新来的,并找到我的方式围绕PHP,所以将不胜感激任何帮助。 –

回答

0

使隐藏输入为一个数组。 一样,

<input type='hidden' name='server[]' value='".$rows['server_desc']."'> 
<input type='hidden' name='customer[]' value='".$rows['customer']."'> 

然后打印,

的print_r($ backup_date);

print_r($ server_desc);

print_r($ customer);

示例代码:

/* MySQL Conncection goes here*/ 

foreach($customer as $key => $value) { 
    $customer_id = $value; 
    $date = $backup_date[$key]; 
    $server = $server_desc[$key]; 
    mysql_query("INSERT INTO table_name VALUES($customer_id, $date, $server)"); 
} 
+0

完美!谢谢你的帮助。我现在将如何将新行插入到MySQL表中?再次感谢。 –

+0

尝试了我在原始查询中粘贴的代码,它没有插入到数据库中,我也没有收到任何错误消息,以便查看哪些内容不起作用。有任何想法吗? –

+0

对我的代码追加到我的原始查询有什么问题的任何想法? –

相关问题