<?php
$q = 6;
/*
СОЗДАНИЕ ТАБЛИЦЫ
*/
echo "<form method='post'>
<table border='' cellpadding='0' cellspacing='0'>";
for ($i=0; $i<=$q; $i++) {
echo "<tr><td style='width:50px; text-align:center'>".$i."</td>";
for ($j=0; $j<7; $j++) {
echo "<td width='10px'><input type='text' name='costs[".$i."][".$j."]' style='width:50px; text-align:center; border:0px'></td>";
} echo "</tr>";
}
echo "</table><br>
<input type='submit' name='c_submit' value='Старт'><br><br>
</form>";
/*
ПЕРЕДАЧА ДАННЫХ
*/
for ($i=0; $i<$q; $i++) {
for ($j=0; $j<7; $j++) {
$costs[$i][$j] = isset($_POST['costs[$i][$j]'])?$_POST['costs[$i][$j]']:null;
}
}
Не передаются значения из формы в двухмерныый массив.
Ошибка в name текстового inputa, либо при передаче данных?
Не могли бы вы немного разъяснить?
Спасибо.
Спустя 1 час, 18 минут, 19 секунд (28.08.2010 - 13:02) Rivalryzerg написал(а):
var_dump($_POST);
посмотрите структуру пришедших данных
посмотрите структуру пришедших данных
Спустя 53 минуты, 4 секунды (28.08.2010 - 13:55) lexu написал(а):
array
не передаются данные в пост?
не передаются данные в пост?
Спустя 4 минуты, 30 секунд (28.08.2010 - 13:59) Rivalryzerg написал(а):
Ладно, вот на блюдце:
Обрабатывать такой массив нужно как $_POST['costs'][$i][$j].
Отправленные поля формы в виде массива name="value[check][10]" автоматически преобразуют в полноценный массив $_POST['value']['check'][10] на стороне сервера
Обрабатывать такой массив нужно как $_POST['costs'][$i][$j].
Отправленные поля формы в виде массива name="value[check][10]" автоматически преобразуют в полноценный массив $_POST['value']['check'][10] на стороне сервера
Спустя 27 минут, 33 секунды (28.08.2010 - 14:27) lexu написал(а):
Спасибо
Спустя 2 часа, 4 минуты, 47 секунд (28.08.2010 - 16:32) lexu написал(а):
а value= '$value[check][10]' этой же формы такое?
данные в POST передаются, но не работает вывод:
в чем проблема?
данные в POST передаются, но не работает вывод:
for ($i=0; $i<$q; $i++) {
for ($j=0; $j<7; $j++) {
echo $costs[$i][$j];
}
}
в чем проблема?
Спустя 5 минут, 40 секунд (28.08.2010 - 16:37) Romms написал(а):
$costs= isset($_POST['costs'])?$_POST['costs']:NULL;
Спустя 16 минут, 5 секунд (28.08.2010 - 16:53) lexu написал(а):
Цитата |
$costs= isset($_POST['costs'])?$_POST['costs']:NULL; |
Я же говорю: данные передаются в массив и эта строчка у меня есть.. вот только не выводятся оттуда.
Спустя 6 минут, 17 секунд (28.08.2010 - 17:00) Romms написал(а):
lexu, жаль, но тут экстрасенсов нет, и мы невидим какой у тебя код!
Цитата |
вот только не выводятся оттуда. |
разработчики РНР решили пошутить
Спустя 1 минута, 11 секунд (28.08.2010 - 17:01) lexu написал(а):
for ($i=0; $i<$q; $i++) {
for ($j=0; $j<7; $j++) {
echo $costs[$i][$j];
}
}
вот код.. его я уже писал.
веселые разработчики, но проблема думаю не в их чувстве юмора
Спустя 2 минуты, 3 секунды (28.08.2010 - 17:03) Romms написал(а):
Ну так где там
Цитата |
$costs= isset($_POST['costs'])?$_POST['costs']:NULL; |
????!!!!!
lexu, Может код ВЕСЬ покажешь?!
Спустя 4 минуты, 40 секунд (28.08.2010 - 17:07) lexu написал(а):
<?php
$q = 6;
for ($i=0; $i<$q; $i++) {
for ($j=0; $j<7; $j++) {
$costs[$i][$j] = isset($_POST['costs'][$i][$j])?$_POST['costs'][$i][$j]:null;
}
}
echo "<form method='post'>
<table border='' cellpadding='0' cellspacing='0'>
";
for ($i=0; $i<=$q; $i++) {
echo "<tr><td style='width:50px; text-align:center'>".$i."</td>";
for ($j=0; $j<7; $j++) {
echo "<td width='10px'><input type='text' name='costs[$i][$j]' style='width:50px; text-align:center; border:0px' ></td>";
} echo "</tr>";
}
echo "</table><br>
<input type='submit' name='c_submit' value='Старт'><br><br>
</form>";
for ($i=0; $i<=$q; $i++) {
for ($j=0; $j<7; $j++) {
echo $cost[$i][$j];
}
}
// var_dump($_POST);
Спустя 4 минуты, 8 секунд (28.08.2010 - 17:12) Romms написал(а):
Цитата |
for ($i=0; $i<$q; $i++) { |
1. Где ты берешь $i, $j?
2. Про foreach не слыхал?!
3. НАФИГА тебе весь массив перебирать???!!!
Спустя 46 минут, 10 секунд (28.08.2010 - 17:58) lexu написал(а):
потому что мне нужны все данные массива..
и все они заполняются.
и все они заполняются.
Спустя 6 минут, 25 секунд (28.08.2010 - 18:04) Romms написал(а):
бля... Вот этот код
Цитата |
for ($i=0; $i<$q; $i++) { for ($j=0; $j<7; $j++) { $costs[$i][$j] = isset($_POST['costs'][$i][$j])?$_POST['costs'][$i][$j]:null; } } |
Заменит одна строчка...
$costs= isset($_POST['costs'])?$_POST['costs']:NULL;
НО она ресурсов намного меньше использует, и время экономит...
Цитата |
1. Где ты берешь $i, $j? 2. Про foreach не слыхал?! |
???
Спустя 1 час, 20 минут, 43 секунды (28.08.2010 - 19:25) lexu написал(а):
таблица ($q x 7) заполняется данными:
$i - номер строки
$j - номер столбца
Про foreach слыхал.. но все равно не вижу, как обойтись без for, когда нужно переходить на новую строку таблицы.
$costs= isset($_POST['costs'])?$_POST['costs']:NULL;
За строчку спасибо.
$i - номер строки
$j - номер столбца
Про foreach слыхал.. но все равно не вижу, как обойтись без for, когда нужно переходить на новую строку таблицы.
$costs= isset($_POST['costs'])?$_POST['costs']:NULL;
За строчку спасибо.
Спустя 29 минут, 58 секунд (28.08.2010 - 19:55) Romms написал(а):
Цитата |
Про foreach слыхал.. но все равно не вижу, как обойтись без for, когда нужно переходить на новую строку таблицы. |
Либо плохо слыхал, либо думать не пришлось...
Цитата |
За строчку спасибо. |
Та нет за что! Я ее тебе ещё с первого поста "тыкаю"
Спустя 21 минута, 2 секунды (28.08.2010 - 20:16) lexu написал(а):
foreach так foreach.
Раз можно значит можно.
Раз можно значит можно.
Спустя 2 минуты, 44 секунды (28.08.2010 - 20:19) Romms написал(а):
Цитата |
foreach так foreach. Раз можно значит можно. |
ДА!
Пример:
foreach($MassivE as $array)
{
foreach($array as $index=>$value)
{
}
}
Спустя 9 минут, 5 секунд (28.08.2010 - 20:28) lexu написал(а):
да, адаптировал, работает.
спасибо
спасибо
Спустя 2 минуты, 52 секунды (28.08.2010 - 20:31) Romms написал(а):
Цитата |
спасибо huh.gif |
Пожалуйста! Спрашивай ещё!
Спустя 19 минут, 38 секунд (28.08.2010 - 20:50) lexu написал(а):
спрашиваю:
foreach то работает отлично при заполнении, но а что если мне нужно работать с конкрентными переменными массива, тоесть:
и наоборот
foreach то работает отлично при заполнении, но а что если мне нужно работать с конкрентными переменными массива, тоесть:
$costs[$i][4]= !empty($costs[$i][1])?(costs[$i][1]/$i):$costs[$i][4];
и наоборот
$costs[$i][1]= !empty($costs[$i][4])?($costs[$i][1]*$i):$costs[$i][1];
Спустя 8 минут, 58 секунд (28.08.2010 - 20:59) lexu написал(а):
Добавил эти условия перед заполнением таблицы с вложенным циклом for { for {}},
а foreach заполняет.
а foreach заполняет.
Спустя 1 час, 46 минут, 47 секунд (28.08.2010 - 22:46) Romms написал(а):
lexu, честно говоря - я не понял проблему, может твой код нам поможет?
Спустя 2 часа, 6 минут, 50 секунд (29.08.2010 - 00:53) lexu написал(а):
for ($i=0; $i<=$q; $i++) { echo "<tr><td style='width:50px; text-align:center'>".$i."</td>";
for ($j=0; $j<7; $j++) {
$con = array();
$con = (!empty($costs[$i]['2'])&& empty($con))?$costs[$i]['2']:$con;
$costs[$i]['2'] = $con;
if ($i == 0) {
$costs[$i]['3'] = $costs[$i]['4'] = $costs[$i]['5']='-';
$costs[$i]['6'] = (!empty($costs[$i]['0'])&& empty($costs[$i]['6']))?$costs[$i]['0']:$costs[$i]['6'];
$costs[$i]['0'] = (!empty($costs[$i]['6'])&& empty($costs[$i]['0']))?$costs[$i]['6']:$costs[$i]['0'];
} else {
$costs[$i]['3'] = (!empty($costs[$i]['0']) && empty($costs[$i]['3']))?round(($costs[$i]['0']/$i),2):$costs[$i]['3'];
$costs[$i]['0'] = (!empty($costs[$i]['3'])&& empty($costs[$i]['0']))?round(($costs[$i]['3']*$i),2):$costs[$i]['0'];
}}
Имеет этот код право на существование? Тоесть рабочий ли он?
У меня работал одно время, а потом стал выбивать ошибку Fatal error: Cannot use string offset as an array in
Я так понимаю строковая переменная записывается в массив и в этом проблема.
Можна ли как-то решить, если код выше нужен?
Спустя 9 часов, 39 минут, 3 секунды (29.08.2010 - 10:32) Romms написал(а):
1. ты пропустил (невставил) одну душку }
2. Форматирование табами - плохо!
3. Форматирование вообще плохое
4. не понимаю сути этой строчки:
если не оглашёна переменная $costs[$i]['2'] и оглашённая $con тогда $con=(НЕ оглашённой $costs[$i]['2']), иначе $con=$con???
это самое касается и иных строчок
Вставь
2. Форматирование табами - плохо!
3. Форматирование вообще плохое
4. не понимаю сути этой строчки:
$con = (!empty($costs[$i]['2'])&& empty($con))?$costs[$i]['2']:$con;
если не оглашёна переменная $costs[$i]['2'] и оглашённая $con тогда $con=(НЕ оглашённой $costs[$i]['2']), иначе $con=$con???
это самое касается и иных строчок
Вставь
error_reporting(E_ALL);И тебе покажется куча нотиков!(мен так кажется)
Цитата |
У меня работал одно время, а потом стал выбивать ошибку Fatal error: Cannot use string offset as an array in |
В какой строке?
Цитата |
Можна ли как-то решить, если код выше нужен? |
Собственно, какая задача кода что выше?
Спустя 3 часа, 28 минут, 58 секунд (29.08.2010 - 14:01) lexu написал(а):
Задача в том, чтобы пользователь задал всего несколько данных в массив.. а по алгоритму (задача кода, представленного выше) заполнились все остальные ячейки таблицы.
1. Дужка есть, я когда вставлял код сюда - она потерялась.
2.
1. Дужка есть, я когда вставлял код сюда - она потерялась.
2.
$con = (!empty($costs[$i]['2'])&& empty($con))?$costs[$i]['2']:$con;
Цитата |
если не оглашёна переменная $costs[$i]['2'] и оглашённая $con тогда $con=(НЕ оглашённой $costs[$i]['2']), иначе $con=$con??? |
разве не наоборот? если не не оглашена (тоесть оглашена)$costs[$i]['2'] и не оглашена $con, тогда $con = оглашенной $costs[$i]['2'];
$costs[$i]['2'] - константа.. если пользователь задал хотя бы одну из них, то и все принимают это значение..
3. В строчке, где
$costs[$i]['2'] = $con;
А работал до перезагрузки компьютера
Прошу прощение за табы, исправлюсь
Спустя 16 минут, 11 секунд (29.08.2010 - 14:17) Romms написал(а):
Цитата |
разве не наоборот? если не не оглашена (тоесть оглашена)$costs[$i]['2'] и не оглашена $con, тогда $con = оглашенной $costs[$i]['2']; |
ой, да... глючу
Цитата |
3. В строчке, где $costs[$i]['2'] = $con; |
ну так)
и значит если условие (!empty($costs[$i]['2'])&& empty($con)) неверное то
$con [b]==[/b] array();
а значит
$costs[$i]['2'] = array();
вот оно и говорит вам
Цитата |
Фатальная ошибка: Не удается использовать смещения строки в виде массива |
по моему, это из-за этого
Спустя 28 минут, 7 секунд (29.08.2010 - 14:45) lexu написал(а):
что же нужно сделать, чтобы эти 2 строки работали?
$con = (!empty($costs[$i]['2'])&& empty($con))?$costs[$i]['2']:$con;
$costs[$i]['2'] = $con;
Спустя 3 часа, 51 минута, 8 секунд (29.08.2010 - 18:36) lexu написал(а):
странно, код работает, как нужно, тоесть заполняет таблицу без ошибок до обновление страницы (причем нажатие кнопки ввида submit на работоспособность не влияет), только если открыть страницу по новой или enter в адресной строке..
ошибка на все строки вида:
элемент массива передает значение элементу массива, в чем проблема?
может проблема в этой строке?
ошибка на все строки вида:
$costs[$i]['3'] = (!empty($costs[$i]['0']) && empty($costs[$i]['3']))?round(($costs[$i]['0']/$i),2):$costs[$i]['3'];
элемент массива передает значение элементу массива, в чем проблема?
может проблема в этой строке?
$costs = isset($_POST['costs'])?$_POST['costs']:'null';
Спустя 7 минут, 15 секунд (29.08.2010 - 18:44) lexu написал(а):
Заменил это:
на это:
и всё работает.
Ресурсоёмкостью придеться жертвовать. Нет ли другого решения проблемы?
$costs = isset($_POST['costs'])?$_POST['costs']:'null';
на это:
for ($i=0; $i<=$q; $i++) {
for ($j=0; $j<7; $j++) {
$costs[$i][$j] = isset($_POST['costs'][$i][$j])?$_POST['costs'][$i][$j]:'';
}
}
и всё работает.
Ресурсоёмкостью придеться жертвовать. Нет ли другого решения проблемы?
Спустя 7 минут, 41 секунда (29.08.2010 - 18:51) Romms написал(а):
Цитата |
Ресурсоёмкостью придеться жертвовать. Нет ли другого решения проблемы? |
мне кажется нужно просто
$con = array();
заменить на
$con = '';
попробуй
Спустя 13 минут, 45 секунд (29.08.2010 - 19:05) lexu написал(а):
нет.. проблема не в нем, точнее не только в нём
ошибка на всех строках абсолютно..
я убирал их все по очереди и ошибка таже
эта срока вообще
ошибка на всех строках абсолютно..
я убирал их все по очереди и ошибка таже
эта срока вообще
$con = array();не нужна
Спустя 4 минуты, 16 секунд (29.08.2010 - 19:09) lexu написал(а):
не скажешь, как передать значению <input> value элемент массива?
вот здесь:
не нашел примера.
вот здесь:
есho "<input type='text' name='costs[$i][$j]' value='Вот здесь'>"
не нашел примера.