2013-12-19 4 views
0

Я пытаюсь опубликовать некоторые значения из флажков в моей базе данных, на момент публикации значения, но только последнее выбранное значение (в настоящее время у меня есть 8 флажков). Ниже то, что я использую получить флажки:Публикация значений в базе данных

<? 
$data = mysql_query("SELECT * FROM members WHERE active='Yes' ORDER BY name") or die(mysql_error()); 

//And we display the results 
while($result = mysql_fetch_array($data)) 
{ 
    echo "<input type='checkbox' name='attendees[]'"; 
    echo 'value="' . $result['name'] . '">'; 
    echo "&nbsp;"; 
    echo $result['name']; 
    echo "<br>"; 
} 
?> 

Таким образом, они успешно показывают в моей форме, и я могу поставить галочку столько, сколько я хочу, однако, когда я проверяю базу данных, только последний показывает.

Я читал, и мне кажется, что мне нужно хранить их в массиве, но это немного, что мне трудно понять.

Может ли кто-нибудь помочь мне, чтобы все выбранные значения были показаны в БД, а не только в последней?

EDIT: Слишком долго, чтобы поместиться в комментарий, так вот код, где он добавляет значения в БД

<?php 

    if(isset($_POST['submit'])) 
    { 
    $date = $_POST['date']; 
    $score = $_POST['score']; 
    $attendees = $_POST['attendees'];  

    $result = mysql_query("INSERT INTO quiz_results (date, score, attendees) 
        VALUES ('$date','$score','$attendees')",$connect); 
    echo "<div class='alert alert-info'><b>Event Added!</b> - You'll will now be taken back to the previous page.</div>"; 
    echo "<meta http-equiv=Refresh content=4;url=add-result.php>"; 
    }//end of if($submit). 

?> 
+1

Укажите код, который вы используете для записи в базу данных. – showdev

+0

Нравится это ...? Http: // StackOverflow.com/questions/10655355/get-a-checkbox-array-value-from-post – Hituptony

+0

Вы хотите разместить свой уникальный идентификатор в ключе массива, так что это похоже на 'attendees [{$ result ['name']} ] '. Нам нужно будет увидеть код, где вы пишете в БД. – Jessica

ответ

0

Похоже, что вам нужно, чтобы дать каждому CheckBox другое имя.

$i=0; 

while($result = mysql_fetch_array($data)) 
{ 
    echo "<input type='checkbox' name='attendees[$i]'"; 
    $i++ 
    ... 

и, надеюсь, $ _POST ['attendees'] - это массив?

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

Надеюсь, что это поможет, дайте мне знать.

0

Посмотреть

<?php 
$data = mysql_query("SELECT * FROM members WHERE active='Yes' ORDER BY name"); 


$html = ''; 

//And we display the results 
while($result = mysql_fetch_array($data)) { 
    $html .= sprintf('<input type="checkbox" name="attendees[]" value="%d"> %s' , $result['id'] , $result['name']); 
} 

echo $html; 

Когда вы размещаете форму ...

<?php 
$attendees = isset($_REQUEST['attendees']) ? $_REQUEST['attendees'] : null; 

if(!is_null($attendees) && is_array($attendees)){ 


    foreach($attendees as $attendee){ 
     // do something.. with attendee id 
    } 


    echo 'Ids: '.implode(', ', $attendees); 
} 
1
$attendees = $_POST['attendees']; 

$ участников является массивом. Вы не можете просто хранить массив PHP в базе данных без предварительного преобразования его в строку. Вы можете сохранить его в виде разделенных запятыми:

if (is_array($attendees)) { 
    $attendees = implode(', ', $attendees); 
} 

Но что происходит, когда «участник» имеет имя, которое содержит запятую? Вы можете сериализовать:

if (is_array($attendees)) { 
    $attendees = serialize($attendees); 
} 

Но в любом случае, то, что происходит, когда вы хотите, чтобы фильтровать данные основаны на очном? Теперь у вас больше проблем.

Лучший способ управлять этой информации (Google: базы данных один-ко-многим), чтобы сохранить посетителей в отдельную таблицу, которая выглядит примерно так:

quiz_id attendee_id 
1   20 
1   42 
1   50 

Смотрите мой ответ на how to select from database based on a match in category? для пример.

+0

i @Dave, будет только 8 участников, и никто из них не будет иметь запятую, я никогда не захочу фильтровать их, поэтому для вашего первого примера будет то, что я ищу. Как бы я поместил это в код, который у меня уже есть? благодаря – TwistedSole

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