2014-06-05 3 views
0

У меня возникла проблема при вставке из текстового поля в mysql.i есть форма, которая содержит несколько текстовых областей. form.phpКак вставить несколько значений из нескольких textarea в mysql

<form name="form1" method="post" action="insert.php"> 
<thead> 
        <tr> 
        <th>&nbsp;</th> 
        <th>Center Name</th> 
        <th>User Name</th> 
        <th>Password</th> 
        <th>IP Details</th> 
       </tr> 
<tr> 
        <td valign="top">1</td> 
        <td valign="top">ABCE</td> 
        <td valign="top">abce</td> 
        <td valign="top">abce123</td> 
        <td valign="top"> 
         <textarea rows="4" cols="40" name="ip_details[]">59.162.181.45,27.251.106.75,59.162.182.155</textarea><br/> 
         </td> 
</tr> 
<tr class="alt-row"> 
        <td valign="top">2</td> 
        <td valign="top">XYZ</td> 
        <td valign="top">xyz</td> 
        <td valign="top">1234</td> 
        <td valign="top"> 
         <textarea rows="4" cols="40" name="ip_details[]">54.23.87.32,198.12.65.64,34.56.43.12</textarea><br/> 
         </td> 
        </tr> 

<tr> 
        <td colspan="5" align="center"> 
<input type="submit" name="submit" id="submit" value="Update" /></td> 
       </tr> 
</form> 

я хочу, чтобы вставить эти значения массива в базу данных, которая будет входить в ip_details [0] до ABCE строки и ip_details [1] в строке XYZ в базе данных. когда я делаю

$a=$_POST['ip_details']; 

$b= $_POST['ip_details'][0]; 
echo "$b"; 

$c= $_POST['ip_details'][1]; 
echo "$c"; 

это показать мне значения ip_details из АВСЕ и XYZ.

я хочу, чтобы добавить эти значения массива ф в столбце ipdetails в database.id_center (первичный ключ) мой стол structure.show создать таблицу table_name

CREATE TABLE `center_listt` (
id_center int(10) NOT NULL AUTO_INCREMENT, 
center_name varchar(10) NOT NULL, 
user_name varchar(10) NOT NULL, 
password varchar(10) NOT NULL, 
ipdetails varchar(30) NOT NULL, 
PRIMARY KEY (`id_center`) 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 


id_center center_name user_name password ipdetails 
    1   ABCE   abce  1234  59.162.181.45,27.251.106.75,59.162.182.155 
    2   XYZ   xyz  1234  54.23.87.32,198.12.65.64,34.56.43.12 

я не могу найти способ сделать that.all я чесотки сделать, это повторить массив в моей browser.need помощь в вставке в БД, как же

+0

не связан с вашим ответом, но идти дальше вы сначала прочитать [** базы данных Нормализация **] (http://en.wikipedia.org/wiki/Database_normalization) и избегать сохранения значений, разделенных запятыми, в базе данных –

+0

эти ip с разделенными запятыми будут проверяться для каждого центра и разрешать доступ только к этому ip. –

ответ

0
<?php 


if(isset($_POST['submit'])) { 
$ip_details = $_POST['ip_details']; 
$values = array(
    array('ipdetails' => '"'.$ip_details[0].'"'), 
    array('ipdetails' => '"'.$ip_details[1].'"'), 
); 

$columns = implode(', ', array_keys($values[0])); 
foreach($values as $value) { 
    $value = implode(',', $value); 
    $statement = "INSERT INTO `center_listt` (ipdetails) VALUES ($value) "; 
    //echo $statement . "<br/>"; 
    $res=mysql_query($statement); 
    if(!$res) { 
     die('could not connect'.mysql_error()); 
    } 
echo "gg"; 
} 
} 


?> 

колонке подсчитывать количество значений доцент матч в строке 1, потому что его ждет все-го e, который будет вставлен в список столбцов в инструкции mysql insert.

он будет работать, но результат, который вы ожидаете, как показано в базе данных, где уже есть таблица с значениями полей, только вы хотите ввести эти ip-адреса туда в столбце ipdetails, где он будет соответствовать id_center.

это будет только вставить новую строку не то, что вы ожидаете, произойдет

+0

попробуйте мой модифицированный код, он добавит ip в другую строку, но не то, что вы хотите – black

+0

он работает так, как вы сказали, но вставляете в разные rows.so в ближайшем будущем, чтобы добавить снова массив ip из textarea будет добавляться в разные строки с повторением данных вместо обновления одной строки для разных center_name соответственно –

0
<form name="form1" method="post" action=""> 
    <thead> 
     <tr> 
      <th>&nbsp;</th> 
      <th>Center Name</th> 
      <th>User Name</th> 
      <th>Password</th> 
      <th>IP Details</th> 
     </tr> 
     <tr> 
      <td valign="top">1</td> 
      <td valign="top">ABCE</td> 
      <td valign="top">abce</td> 
      <td valign="top">abce123</td> 
      <td valign="top"> 
       <input type="hidden" name="row[]" value="abc" /> 
       <textarea rows="4" cols="40" name="ip_details[]">59.162.181.45,27.251.106.75,59.162.182.155</textarea><br/> 
      </td> 
     </tr> 
     <tr class="alt-row"> 
      <td valign="top">2</td> 
      <td valign="top">XYZ</td> 
      <td valign="top">xyz</td> 
      <td valign="top">1234</td> 
      <td valign="top"> 
       <input type="hidden" name="row[]" value="XYZ" /> 
       <textarea rows="4" cols="40" name="ip_details[]">54.23.87.32,198.12.65.64,34.56.43.12</textarea><br/> 
      </td> 
     </tr>`enter code here` 

     <tr> 
      <td colspan="5" align="center"> 
       <input type="submit" name="submit" id="submit" value="Update" /></td> 
     </tr> 
</form> 


    <?php 

if($_POST){ 

    $count = count($_POST['row']); 

    for($i = 0;$i<$count;$i++){ 
     $sql = "INSERT INTO TABLE SET field = '{$_POST['row'][$i]}',ip = '{$_POST['ip_details'][$i]}' "; 
     echo "<br>".$sql; 
    } 
} 
+0

его вставка ip в разные строки каждый раз, когда я submit.i хочу вставить ip в одну и ту же строку everytime.like ip в 1-м текстовом поле будет вставлено в таблицу с id_center = 1, а следующий textarea ip будет вставлен в таблицу с id_Center = 2.thank you –

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