2013-11-17 3 views
0

Я новичок в PHP, имеющий проблемы с вставкой массива из формы в базу данных с помощью инструкции foreach. Я пытаюсь создать форму, которая принимает оценку, оценку и комментарий для каждого предмета. Однако в базу данных вставляется только последний объект. Список предметов загружен из ранее зарегистрированных предметов (у меня нет проблем с этим). Моя проблема заключается в том, чтобы все предметы сохранялись в базе данных. Это форма я использую:MySQL/PHP: Вставьте массив формы в базу данных?

<legend>ENTER RESULTS:</legend> 
<input type="hidden" name="results[]" value= "<?php foreach ($subjects as $subject):?> 
<ul> 
<li> <input type="text" name="subject_name" size="10" value ="<?php htmlout($subject['subject_name']); ?>"/> 
      </label> 
    <label for="subject_score">SCORE:</label> 
    <input type="text" name="subject_score" size="5" value = "<?php 
     htmlout($subject_score);?>"/> <label for="subject_score">GRADE:</label> 
    <input type="text" name="subject_grade" size="5" value = "<?php 
     htmlout($subject_grade);?>"/><label for="subject_grade">COMMENT:</label> 
    <input type="text" name="subject_comment" size="30" value = "<?php 
     htmlout($subject_comment);?>"/> </div></li> 

    <?php endforeach; ?> 
    <input type="hidden" name="student_id" value="<?php 
     htmlout($student_id); ?> 
    </fieldset> 

Это код PHP я использую:

if (isset($_GET['result'])) 
{ 
try 
{ 
    $sql = 'INSERT INTO results SET 
     student_id = :student_id, 
     subject_name = :subject_name, 
     subject_grade = :subject_score, 
     subject_grade = :subject_grade, 
     subject_comment = :subject_comment'; 
    $s = $pdo->prepare($sql); 

    foreach ($_POST['results'] as $result) 
    { 
    $s->bindValue(':student_id',$_POST['student_id']); 
    $s->bindValue(':subject_name', $_POST['subject_name']); 
    $s->bindValue(':subject_score', $_POST['subject_score']); 
    $s->bindValue(':subject_grade', $_POST['subject_grade']); 
    $s->bindValue(':subject_comment', $_POST['subject_comment']); 
    $s->execute(); 
    } 
    } 
catch (PDOException $e) 
{ 
    $error = 'Could not Register the Student for the Subjects, Please try again'.$e->GetMessage(); 
    include 'error.html.php'; 
    exit(); 
} 
echo 'Success'; 
+0

Этот код не пытается записывать какие-либо данные в базу данных. в чем именно проблема?: –

+0

Спасибо, пропустил код PHP, который я использую, отредактировал. –

+0

ответ

0

вы можете использовать элемент управления в массиве как subject_score []

форма должна будет иметь вид

foreach 
<input type="text" name="subject_name[]" size="10" value ="<?php htmlout($subject['subject_name']); ?>"/> 
      </label> 
    <label for="subject_score">SCORE:</label> 
    <input type="text" name="subject_score[]" size="5" value = "<?php 
     htmlout($subject_score);?>"/> <label for="subject_score">GRADE:</label> 
    <input type="text" name="subject_grade[]" size="5" value = "<?php 
     htmlout($subject_grade);?>"/><label for="subject_grade">COMMENT:</label> 
    <input type="text" name="subject_comment[]" size="30" value = "<?php 
     htmlout($subject_comment);?>"/> </div></li> 
endforeach 

тогда вы может взимать такое значение, как указано ниже

foreach($_POST['subject_name'] as $key=>$val){ 
    //val will hold subject name 
} 
+0

БОГ БЛАГОСЛОВИТ ВАМ МИЛЛИОН ВРЕМЕНИ OVER! Работал как шарм! Спасибо большое! –

+0

Pls как я могу принять ур ответ? С удовольствием сделаю. –

+0

нажмите на отметку вокруг ответа и нажмите стрелку – sumit

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