Как вставить значения в базу данных, когда входные имена похожи на name = "fieldname []? - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть следующая форма, я должен вставить значения формы в базу данных.Но я не знаю, как вставить эти значения, когда имена полей похожи - name = "fieldname []".Для лучшего понимания, пожалуйста, проверьте следующее.

Я использую Codeigniter.У меня есть Views, контроллер и модель, я пробовал обычный способ ввода значения, но он не работает.

Один из моих друзей предложил мне использовать что-то вроде - mysql_real_escape_string ($ value), но я не знаю, как это использовать.Не могли бы вы помочь мне?

Заранее спасибо:)

   <table> 
     <form >

   <tr>

      <td> Student ID: <input type="text" name="studentid[]" value="" /> </td>
      <td> Grade <input type="text" name="grade[]" value="" /></td>
      <td>Obtained Mark  <input type="text" name="obtainedmark[]" value="" /></td>
    </tr>

    <tr>

     <td> Student ID: <input type="text" name="studentid[]" value="" /> </td>
     <td> Grade <input type="text" name="grade[]" value="" /></td>
     <td>Obtained Mark  <input type="text" name="obtainedmark[]" value="" /></td>

    </tr>


  <tr>
     <td> <input type="submit" value="Submit" name="Submit" /></td>
 </tr>

 </form>
 </table>

Редактировать

    foreach($_POST['studentid'] as $studentid) {
      // do something

    $data = array(              
    'subjectname' =>"",
    'subjectname' => $studentid             

    );                  
    $results=$this->db->insert('subject', $data);                      

Ответы [ 3 ]

1 голос
/ 04 ноября 2011

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

   <td> Student ID: <input type="text" name="studentid[]" value="" /> </td>

, а когда вы делаете

 foreach($_POST['studentid'] as $studentid) {

  $data = array(              
  'subjectid' =>"",
  'subjectname' => $studentid             

   );                  
 $results=$this->db->insert('subject', $data);

, вы вводите два студенческих идентификатора.Вы должны сделать это снова ваши другие входы.Но ждать?Как вы будете строить свой sql-запрос без имен учеников?Я бы, наверное, сделал что-то вроде

$studentids = addslashes(htmlentities($_POST['studentid']));
$subjectnames = addslashes(htmlentities($_POST['subjectnames']));
$obtainedmarks = addslashes(htmlentities($_POST['obtainedmarks']));

for($i = 0; $i < count($studentids); $i++){
 $data = array(              
  'subjectid' =>$studentids[$i],
  'subjectname' => $subjectnames[$i],             
'obtainedmarks' => $obtainedmarks[$i] 
   );                  
 $results=$this->db->insert('subject', $data);
}

Дайте мне знать, если это имеет смысл.

1 голос
/ 03 ноября 2011

Это массивы, доступ к ним можно получить с помощью следующего кода (пример):

foreach($_POST['studentid'] as $studentid) {
  // do something
}

для вашего редактирования. Это просто пример, IDK, работает ли это или нет. Просто попробуйте с этим.

foreach($_POST as $key=>$data) {
    foreach($data as $field) {
        $arr[$key][] = $field;
    }
}
0 голосов
/ 04 ноября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...