PHP массив не может POST с другими данными формы

0

У меня есть массив с именем $ content_ids, который я пытаюсь опубликовать в виде скрытого поля в форме.

Я узнал, как это сделать из другого ответа здесь, но я не могу заставить его работать.

Вот лишь некоторые из моих входов, включая скрытое поле для массива

echo "<input type=\"hidden\" value=\"1\" name=\"e\">";
foreach($content_ids as $ids)
{
    echo "<input type=\"hidden\" value=\"".$ids."\" name=\"ids[]\">";
}
echo "<input type=\"hidden\" value=\"".$content[$x]['TranslationID']."\" name=\"translationID\">";

Попытка print_r ($ _ POST ['ids']) ничего не показывает

Попытка:

if($_POST['ids'] != ""){
    echo "hello";
}

также ничего не дает. Но остальная часть данных проходит через ok.

Кто-нибудь понимает, почему?

Изменить для добавления: Протестировано, чтобы убедиться, что массив фактически содержит данные в точке размещения его в скрытом поле. распечатывая массив непосредственно перед тем, как будет установлено скрытое поле, и все отобразится в порядке.

Изменить для добавления: как создается массив:

$content_ids = array();
    for($i = 0; $i < count($content); $i++)
    {
        $content_ids[] = array_push($content_ids, $content[$i]['ContentID']);   
    }

вывод для массива:

Массив ([0] => 2222 [1] => 1 [2] => 1111 [3] => 3)

Я действительно не знаю, почему индекс 1 или индекс 3 есть. Они не являются частью данных из базы данных. Он должен содержать только 1111 и 2222.

  • 0
    Вы пробовали if(!empty) вместо != "" ?
  • 0
    stackoverflow.com/questions/14071587/...
Показать ещё 7 комментариев
Теги:
arrays
forms
post
hidden

2 ответа

0
Лучший ответ

Я нашел проблему. Я считаю, что проблема заключалась в создании массива.

Единственное, что я изменил, было:

$content_ids = array();
    for($i = 0; $i < count($content); $i++)
    {
        $content_ids[] = array_push($content_ids, $content[$i]['ContentID']);   
    }

И я изменил это на это:

$content_ids = array();
    for($i = 0; $i < count($content); $i++)
    {
        array_push($content_ids, $content[$i]['ContentID']);    
    }

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

Теперь я получаю массив успешно как переменную POST. Спасибо всем за помощь

  • 0
    Вы также можете использовать array_values () для удаления ключей из массива
  • 0
    Если я правильно помню, вы можете полностью избежать array_push и просто перейти к $ some_array [] = $ some_value. Возможно, я ошибаюсь, но я помню, что где-то читал, что это действительно эффективно (не то, чтобы это все равно имело значение, поскольку производительность на этих уровнях не должна иметь большого значения - если, конечно, ваш код не тратит на это слишком много времени).
2

Я запустил этот код и смог получить все опубликованные значения

   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    </head>
    <body>
    <form action ="" method="POST" >
    <?php 
    //supose your values are 
    $content_ids = array('10','20');
    $x = 1;
    $content[$x]['TranslationID'] =20;
    // your code
    echo "<input type=\"hidden\" value=\"1\" name=\"e\">";
    foreach($content_ids as $ids)
    {
        echo "<input type=\"hidden\" value=\"".$ids."\" name=\"ids[]\">";
    }
    echo "<input type=\"hidden\" value=\"".$content[$x]['TranslationID']."\" name=\"translationID\">";

    ?>
    <input type="submit" />
    </form>
    </body>
    </html>
    <?php print_r($_POST); ?>

Здесь вывод

Array ( [e] => 1 [ids] => Array ( [0] => 10 [1] => 20 ) [translationID] => 20 ) 
  • 0
    Ваш код работает как задумано, а мой - нет. Мой массив "$ content_ids" создается из результатов запроса к базе данных. Я просто смотрю на это, чтобы понять, правильно ли я поступил. Хотя массив заполнен с правильными результатами
  • 0
    не могли бы вы показать вывод ваших $ content_ids с помощью <? php print_r ($ content_ids); ?>
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню