как прочитать 2 массива одновременно?

ivan52

d-i-d grafix
как прочитать 2 массива одновременно?

пытаюсь сделать админ-редактор для опросника
3 таблицы - опрос, вопросы, голоса
в каждом опросе неопределенное количество вопросов
есть форма - в ней неопределенное количество textarea все с одинаковым именем vopros[] (вопросы)

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

не понимаю как охранить данные обратно в базу
чтобы они записались в теже ячейки?

я подумал что нужно вывести скрытые input с id ячеек
потом одновременно прочитать два массива, сопоставать их и сделать update
не понимаю как два масива одновременно читать?
 

jer

...
вот так в цикле формируешь форму:
...
<input type="hidden" name="id[]" value="<?=$rs['id']?>">
<textarea name="text[]"><?=htmlspecialchars($rs['text'])?></textarea>
...

на выходе все в 2-х массивах $id и $text

дальше понятно?
 

jrip

Новичок
если я правильно понял.... получаешь данные из таблицы, выдаёшь в виде формы... Изменяешь что-то... посылаешь форму... в чём проблема? потом UPDATE и т.п. если несколько, то тогда можно, например, несколькими запросами...
 

ivan52

d-i-d grafix
как раз даьлше и не понятно

to jer

да у меня 2 массива $id[] и $text[] - как их одновременно читать чтобы сделать

UPDATE $tablename SET text=$text[] where id=$id[]?
 

ivan52

d-i-d grafix
да знаком

to neko

да знаком, только не моуг вывести одновременно

foreach ($id as $ids) {
echo $ids;
}

foreach ($text as $txt) {
echo $txt
}

так работает! но как одновременно?
а синтаксис text[id] я не знаю, как потом читать такой массив?
чтобы плучить то, что мне нужно?

я хочу прочитать оба массива одновременно

foreach ($text as $txt, $id as $ids) {
$sql = "UPDATE csc_vopros SET vopname='$txt' WHERE id='$ids'";
$result = mysql_query($sql);
}
 

neko

tеam neko
foreach( $_POST['vopros'] as $id_voprosa => $text_voprosa )
{
}

-~{}~ 09.12.04 23:35:

вообще тебе надо срочно ознакомится с базовыми понятиями
массивы итп
 

jrip

Новичок
хм.... идея тупая но всёж... а если в имя textarea вносить этот id?
 

neko

tеam neko
jrip
да тупая донельзя
лучше держи при себе такие идеи
 

ivan52

d-i-d grafix
да, думаю совет правильный

to neko

базовые понятия вероятно мне нужно почитать еще раз более подробно, ты не мог показать на моих переменных
чтобы мне понятно было!

1. ты предлагаешь два массива или один?

id[]
text[]

далее foreach

и echo $ids
echo $txt

to jrip

как мне потом получать эти имена?
они же мне не будут известны!!!!!!!
 

neko

tеam neko
ты сам можешь посмотреть
в скрипте который обрабатывает форму, напиши:
var_dump( $_POST );

и посмотри что передано
после чего ответь на вопрос для себя -- можно ли вообще как-нибудь поставить в соответствия содержимое массивов 'id' и 'text'?

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

после этого процедуру с var_dump() повтори и посмотри что получится
 

jer

...
массивы вернее будут $_POST['id'] и $_POST['text'], оба одной размерности.

тебе нужно обойти массив $_POST['id'] (все его элементы от 0 - n)
запрос будет такой:
$query = "UPDATE tablename SET text='".$_POST['text'][$i]."' where id='".$_POST['id'][$i]."'";

$i - это и будет индекс массивов от 0 - n

изучи foreach, либо обычным циклом for сделай

пока не сделаешь самостоятельную попытку дальше помогать не буду.
 

ivan52

d-i-d grafix
вот что вышло

вот поставил как ты сказал

плучилось вот что

["vopros"]=> array(2) { [3]=> string(12) "vopros 24234" [4]=> string(12) "vopros 24234" }


далее делаю

foreach( $_POST['vopros'] as $id_voprosa => $text_voprosa )
{
echo $id_voprosa."<br>";
echo $text_voprosa."<br>";
}

и все получается именно как описывал neko
вероятно читать про массивы и учиться!

скажите а если 3 уровня?
как писать в форме и потом его читать
 

neko

tеam neko
jer
сотри эту ахинею пока не поздно
сделай самостоятельно это пока кто-нибудь не помог

ivan52
молодец, теперь понятно где там id, и где текст вопроса?
и как их перебрать и изменить в базе
 

jrip

Новичок
2neko

а моя идея была не такой уж и тупой... сам же также посоветовал сделать...
 

ivan52

d-i-d grafix
а хочу разобратьяс сейчас

to neko

я следовал твоим советам
где id я вижу

объясни как сделать 3 уровня
в форме как написать - vopros['id[opros]'], так?

и потом при получении будет
foreach( $_POST['vopros'] as $opros => $id_voprosa => $text_voprosa )
{
}

to jrip

ты советовал другое, neko предложил совсем другую идею
по твоей версии должно было получитьяс textarea name=id
а у neko textarea name=vopros[id]

разницу видишь?
 

neko

tеam neko
ivan52
зачем тебе 3 уровня?
ты вывел var_dump'ом массив?
видишь где там вложенные массивы?
у тебя он должен быть один и именно его надо обойти при помощи foreach
 
Сверху