Передача массива формой (вопрос начинающего)

pavelkq

Новичок
Передача массива формой (вопрос начинающего)

Имеется следующая задача. Нужен выпадающий список (select), где будут представлены элементы массива (не более 10). При выборе n-ного элемента необходимо чтобы он поменялся местами с первым (в самом массиве) и страница автоматически обновилась уже с новыми данными.
PHP:
echo "<form name='myform' action='".$_SERVER["PHP_SELF"]."' method='POST'>";      
echo "<select name='num' onChange='this.form.submit()'>"; 
       for ($i = 0; $i < 10; $i++)      
        {        
            echo "<option>".$my_array[$i]."</option>";      
        }        
echo "</select></form>";
При этом в обновленной форме массив $my_array[] не существует, а значение $_POST['num'] содержит значение выбранного элемента.
В настройках РНР register_globals включён в on. Вообще, мне бы хотелось, чтобы при обновлении страницы сохранялись все переменныи. По логике надо чтобы onChange срабатывал некий код, где будет произведено действие над элементами массива и лишь после этого обновление страницы. Как это реализовать?

P.S. Пытался решить эту задачу поиском по форумам и учебникам, но проблема в том, что прежде чем что-то искать, надо знать, что искать. Поиск в интернете сейчас на ужасном уровне (в смысле решения задач, а не поиска по словам).
 

Фанат

oncle terrible
Команда форума
Не для всех задач надо искать решение.
Для некоторых нужно искать алгоритм.
К примеру, не нужно искать решение задачи "как есть борщ ложкой". Поскольку у тебя уже есть общий алгоритм "как есть суп"

С какой стати в обновленной форме массив $my_array не существует? В необновленной же он откуда-то брался? Ну так возьми его оттуда же в обновленной.

В HTML нет такого понятия "сохранение страницы". Есть параметры у полей - value, selected и проч.
 

pavelkq

Новичок
Автор оригинала: *****
С какой стати в обновленной форме массив $my_array не существует? В необновленной же он откуда-то брался? Ну так возьми его оттуда же в обновленной.
Код вначале страницы примерно следующий
PHP:
if (!(isset($_POST['num'])))
   {
       $my_array= /*тут идут данные массива*/
   }
Таким образом, при обновлении страници методом post массив не существует.

В HTML нет такого понятия "сохранение страницы". Есть параметры у полей - value, selected и проч.
Спасибо, может попробовать value='serialize($my_array)'? Но пока не получается...
 

Фанат

oncle terrible
Команда форума
что - так и пишешь? А какой это язык - PHP или HTML?
и для чего такие сложные манипуляции? что это за данные?
 

pavelkq

Новичок
Хм, РНР. В массиве список параметров текста: Автор, Название, Год издания, Тема и т.п.
 

Иван 76

Новичок
pavelkq
Твоя проблема вовсе не в строительстве алгоритма, а в умении отлаживать программу.
Уверен, если бы у тебя был выставлен соответствующий уровень отображения ошибки, такой ворос отпал бы сам по себе.

Ибо ты знал бы, что прежде чем обратиться к массиву, его надо вначале объявить. Об этом тебе сказал бы сам PHP. Причем объявить безусловно.

Перед дальнейшей разработкой прочти
http://phpfaq.ru/debug
http://phpfaq.ru/error
http://phpclub.ru/faq/DebugScripts?v=cfx
http://php.net/manual/ru/function.error-reporting.php

Если прочтешь - до конца жизни не пожалеешь.
Потом узнай подробнее что ты делаешь:
http://php.net/manual/ru/function.isset.php
 

Фанат

oncle terrible
Команда форума
pavelkq
в PHP нет такого оператора - value

И зачем этих автора с названием гонять туда-сюда?
 

Ravanger

Новичок
Даже боюсь предположить, что товарищ хотел эмулировать selected опшина переставляя его на первую позицию в селекте
 
Сверху