Мне нужно обновить таблицу daytot значениями, присутствующими в массиве с именем $result3.
Как это можно было сделать?
$this->db->select('tdate');
$this->db->where('tdate >=', $newDate);
$this->db->where('tdate <=', $date);
$result3=$this->db->get('daytot')->result_array();
$amount=$this->input->post('credit1');
for($i=0;$i<count($result3);$i++) {
$opcash=$result3[$i]['opcash']+$amount;
$data1 = array(
'tdate'=>$newDate,
'total_credit'=>$total_credit['amount'],
'total_debit'=>$total_debit['amount'],
'opcash'=>$opcash,
;
$this->db->where('tdate', $result3[$i]);
$this->db->update('daytot', $data1);
}
у меня более одного значения в $ result3, и я хочу обновить значение opcash до значений (дат), присутствующих в $ result3array
Что в результате кода? Что не работает?
я хочу обновить opcash до всей даты, которая присутствует в массиве $ result3
opcash обновляется или нет?
@laavanyadharani каков результат массива $result3?
@DanishAli нет .. opcash не обновляется
Попробуйте так: $ opcash = $ result3 ['opcash'] + $ amount;
Массив $ result3 имеет значения tdate ... это opcash, который необходимо обновить для значений массива $ result3
Добавьте в свой вопрос структуру массива $result3.
я не могу использовать это, потому что у меня более одного индекса ... поэтому я использую цикл for
@laavanyadharani какая линия, какое смещение?
Используйте петлю foreach.
массив (1) {[0] => массив (1) {["tdate"] => строка (10) "24/12/2018"}} массив (2) {[0] => массив (1) { ["tdate"] => string (10) "25/12/2018"}} значение массива $ result3
Я получаю неопределенное смещение в $ this-> db-> where ('tdate', $ result3 [$ i]); линия @ splash58
В массиве нет opcash.
Да ... у меня есть значение opcash в массиве $ data1
В этой строке кода $ opcash = $ result3 [$ i] ['opcash'] + $ amount; есть проблема. Поскольку смещения opcash не существует
добавлен opcash в массив $ result3 с той же проблемой
Теперь это структура? array (1) {[0] => array (1) {["tdate"] => строка (10) "24/12/2018", ["opcash"] => строка (10) 'значение'}} array (2) {[0] => array (1) {["tdate"] => строка (10) "25/12/2018",, ["opcash"] => строка (10) 'значение'} } $ result3
да .. {["tdate"] => строка (10) "24/12/2018" ["opcash"] => строка (3) "500"} {["tdate"] => строка (10) " 25.12.2018 "[" opcash "] => строка (3)" 1000 "}
посмотри на ответ, который я дал






Попробуйте использовать цикл foreach для обновления записи
Структура массива $result3
{ ["tdate"]=> string(10) "24/12/2018" ["opcash"]=> string(3) "500" } { ["tdate"]=> string(10) "25/12/2018" ["opcash"]=> string(3) "1000" }
Так что попробуй вот так. И убедитесь, что у вас есть все значения переменных
$this->db->select('tdate');
$this->db->where('tdate >=', $newDate);
$this->db->where('tdate <=', $date);
$result3=$this->db->get('daytot')->result_array();
$amount=$this->input->post('credit1');
Теперь проверьте, есть ли у $result3 запись или нет
if (isset($result3) && count($result3) > 0){
foreach($result3 as $result) {
$opcash=$result['opcash']+$amount;
$data1 = array(
'tdate'=>$newDate,
'total_credit'=>$total_credit['amount'],
'total_debit'=>$total_debit['amount'],
'opcash'=>$opcash,
;
$this->db->where('tdate', $result['tdate']);
$this->db->update('daytot', $data1);
}
}
Я хочу, чтобы opcash обновлялся, чтобы быть обновленным для всей даты, присутствующей в массиве $ resul3
не работает ... мне нужно обновить значение opcash на всю дату, которая находится в массиве $ result3
ты понял мою проблему ??
@laavanyadharani да.
получение неопределенного индекса opcash и tdate
Попробуйте метод ниже. id - это уникальное значение из таблицы daytot, вы можете использовать любое уникальное поле.
$this->db->select('id, tdate, opcash'); //id => primary key
$this->db->where('tdate >=', $newDate);
$this->db->where('tdate <=', $date);
$result3 = $this->db->get('daytot')->result_array();
$amount = $this->input->post('credit1');
Использование для
$data1 = array();
for ($i = 0; $i < count($result3); $i++) {
$opcash = $result3[$i]['opcash'] + $amount;
$data1[] = array(
'id' => $result3[$i]['id'],
'tdate' => $newDate,
'total_credit' => $total_credit['amount'],
'total_debit' => $total_debit['amount'],
'opcash' => $opcash
);
}
$this->db->update_batch('daytot', $data1, 'id');
ИЛИ Использование Foreach
foreach($result3 as &$data){
$opcash = $data['opcash'] + $amount;
$data['tdate'] = $newDate;
$data['total_credit'] = $total_credit['amount'];
$data['total_debit'] = $total_debit['amount'];
$data['opcash'] = $opcash;
}
$this->db->update_batch('daytot', $result3, 'id');
почему цикл for не работает, не могли бы вы объяснить? потому что я не мог найти никаких проблем.
@KarthikSekar получает неопределенный индекс tdate
Мне нужно обновить значение opcash, где tdate присутствует в массиве $ result3
сообщение об ошибке: Неопределенный индекс: tdate UPDATE daytot SET tdate = CASE WHEN tdate = THEN '24/12/2018' ELSE tdate END, total_credit = CASE WHEN tdate = THEN '2500' ELSE total_credit END, total_debit = CASE WHEN tdate = THEN NULL ELSE total_debit END, opcash = CASE WHEN tdate = THEN 1000 ELSE opcash END WHERE tdate IN ()
похоже, что поле tdate в вашей таблице пусто. распечатать массив перед выполнением update_batch
array (1) {[0] => array (2) {["tdate"] => string (10) "24/12/2018" ["opcash"] => string (3) "500"}} Массив ([0] => Массив ([tdate] => 24/12/2018 [total_credit] => 3500 [total_debit] => [opcash] => 1000)) это мое значение data1
распечатайте полный массив перед update_batch, например, на основе моего кода, если вы используете для print_r ($ data1), если вы используете foreach print_r ($ result3)
да сделано так rray (2) {[0] => array (2) {["tdate"] => string (10) "24/12/2018" ["opcash"] => string (3) "500 "} [1] => массив (2) {[" tdate "] => строка (10)" 25/12/2018 "[" opcash "] => строка (4)" 1000 "}} значение data1 .. но получение неопределенного индекса tdate
Позвольте мне проверить в моем местном
@laavanyadharani, я могу обновиться, пожалуйста, обратитесь к моим скриншотам prnt.sc/m0kbmaprnt.sc/m0kcad
$ data1 = массив (); для ($ i = 0; $ i <count ($ result3); $ i ++) {$ opcash = $ result3 [$ i] ['opcash'] + $ amount; $ data1 [] = array ('tdate' => $ result3 [$ i] ['tdate'], 'total_credit' => $ total_credit ['amount'], 'total_debit' => $ total_debit ['amount'], 'opcash' => $ opcash); } я изменил свои данные1 вот так
@KarthikSekar все еще получает неопределенный индекс tdate
Я думаю, что ваша переменная данных update_batch неверна, ваша должна быть $ this-> db-> update_batch ('daytot', $ data1, 'tdate');
да, используется вот так ... теперь получается имя файла: C: /xampp/htdocs/Finance/system/database/DB_query_builder.php Номер строки: ошибка 1898
извини .. у меня нет скайпа
могу я подключить вас через teamviewer или anydesk ??
давайте обсудим здесь chat.stackoverflow.com/rooms/185953/…
Позвольте нам продолжить обсуждение в чате.
Для начала вам нужно также выбрать столбец opcash:
$this->db->select('tdate,opcash');
Затем примените индекс 0 к каждой итерации foreach:
if (isset($result3) && count($result3) > 0){
foreach($result3 as $r) {
$opcash=$r[0]['opcash']+$amount;
$data1 = array(
'tdate'=>$newDate,
'total_credit'=>$total_credit['amount'],
'total_debit'=>$total_debit['amount'],
'opcash'=>$opcash,
);
$this->db->where('tdate', $r[0]['tdate']);
$this->db->update('daytot', $data1);
}
}
получение неопределенного смещения 1
undefined offset 1 в какой строке?
$ opcash = $ r [0] ['opcash'] + $ amount; $ this-> db-> where ('tdate', $ r [0] ['tdate']); в обеих строках
что будет, если убрать [0] на каждой строчке?
недопустимый аргумент для foreach
не 0 в строке foreach, а в строке $r[0] ... замените все $r[0] на $r и что будет на выходе?
Что именно ты хочешь? Вы хотите избежать петли?