2013-07-18 3 views
2

Я хочу вытащить 2 поля из базы данных MySQL и использовать их в 2 скрытых полях формы, а также позволить пользователю вводить данные в дополнительные поля формы. Я использую следующий код, чтобы сделать это:Вставка нескольких строк в базу данных MySQL из формы HTML

$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(); 

Я имею установку страницы, что эта форма пост до и echo'd результатов, но все я получаю это последняя запись. Есть ли способ, чтобы я мог получить все результаты для каждой строки и опубликовать их за один проход в базу данных?

EDIT: PHP Echo ниже.

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

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

Я очень новичок в PHP, так что ценю любую помощь на этом.

Далее EDIT:

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 с этим предложением: «Если вы можете изменить поле name, чтобы включить [], тогда PHP создаст массив, содержащий все соответствующие значения. « –

+0

Hi - Просто добавлена ​​дополнительная информация. Я новичок в этом и нахожу свой путь вокруг 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

Любые идеи о том, что случилось с моим кодом, который я добавил к моему первоначальному запросу? –

Смежные вопросы