2014-01-09 5 views
2

Так что я работаю с некоторыми флажками, которые заполняются из таблицы db. Это выглядит так.многозначные значения для каждого php

<form action="" method="post"> 
<?php 
foreach ($chores as $retrieved_search){ 
?> 
<tr> 
<td> 
<?php echo "<input type='checkbox' id=".$retrieved_search->id." value=".$retrieved_search->image." name='chores[]'>$retrieved_search->name";?> 
<?php echo "<input type='text' value='$retrieved_search->name' id='optionName' name='optionName[]' />"?> 
</td> 
</tr> 
<?php 
} 
?> 
</form> 

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

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

Итак, это мой оператор php, который получает значение post из флажка, но как я могу получить значение из поля ввода для той же инструкции insert?

<?php 
if(isset($_POST['saveOptions'])) { 

     global $wpdb;   
     $table_name = $wpdb->prefix . "chartUsersOptions"; 
     $user_ID = get_current_user_id(); 
     $typeChore = "chore"; 
     $typeBehavior = "behavior"; 

if(isset($_POST['chores'])){ 
     foreach ($_POST['chores'] as $chores) { 

      $wpdb->insert($table_name, array( 
       'userId' => $user_ID, 
       'optionImage' => $chores, 
       'type' => $typeChore, 
       )); 
     } 
     } 

     $msg = "Saved now redirect to 3rd step"; 

     echo $msg; 
    } 
    else{ 
............. 
    } 
?> 

EDIT:

Основываясь на предположении это работало.

<?php 
foreach ($chores as $retrieved_search){ 
echo "<input type='checkbox' value='{$retrieved_search->image}' name='chores[{$retrieved_search->id}]'>{$retrieved_search->name}"; 
echo "<input type='text' value='{$retrieved_search->name}' name='optionName[{$retrieved_search->id}]'>" 
} 
?> 

И этот

if(isset($_POST['chores'])){ 
     foreach ($_POST['chores'] as $chores_key => $chores) { 
      $text_input_value = $_POST['optionName'][$chores_key]; 
      $wpdb->insert($table_name, array( 
       'userId' => $user_ID, 
       'optionImage' => $chores, 
       'optionName' => $text_input_value, 
       'type' => $typeChore, 
       )); 
     } 
     } 

Но Optionname еще вставив пустой.

+1

Я просто не понимаю, что вы хотите сделать –

+0

Я вставив URL изображения из флажка, который отлично работает, но я также хочу вставить имя из текстового поля в ту же строку. – Bowenac

ответ

2

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

Вы должны изменить свой HTML, так что флажок-массив ключей всегда совпадает с входной решеткой ключ, так что-то вроде:

echo "<input type='checkbox' value='{$retrieved_search->image}' name='chores[{$retrieved_search->id}]'>{$retrieved_search->name}"; 
echo "<input type='text' value='{$retrieved_search->name}' name='optionName[{$retrieved_search->id}]'>" 

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

Edit: Чтобы получить значение текстового поля после того, как сделать выше изменилось, вы можете сделать:

if (isset($_POST['chores'])) { 
    foreach ($_POST['chores'] as $chores_key => $chores) { 
     $text_input_value = $_POST['optionName'][$chores_key]; 
     // and the rest of your code 
+0

Хорошо спасибо за это, но да, проблема в том, что я не уверен, как получить значение из текстового поля. Я добавил 'optionName' => (string) $ _POST ['optionName'] к вставке, но вставляет массив. – Bowenac

+0

@ user1949929 См. Мое редактирование. – jeroen

+0

Все еще вставляя пробел ...Я обновил его, как этот foreach ($ _POST ['chores'] как $ chores_key => $ chores) { \t \t $ text_input_value = $ _POST ['optionName'] [$ key]; \t \t \t $ wpdb-> вставка ($ table_name, массив ( \t \t \t 'идентификатор пользователя' => $ user_id, \t \t \t 'optionImage' => $ хлопоты, \t \t \t 'Optionname' => $ text_input_value , \t \t \t 'type' => $ typeChore, \t \t \t)); \t \t} – Bowenac

0

Вместо

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

вы хотите

foreach ($_POST['chores'] as $id=>$chores) { 

Тогда вы можете получить доступ к

optionName[$id] 

в цикле.

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