LINUX.ORG.RU

Проверка платежей

 , , ,


0

1

Приветствую, форумчане! Есть таблица в которой 3 поля (id_bill, client_id, amount) Нужно получить список всех id_bill и выполнить для каждого billStatus, если billStatus окажется 60, выполнить функцию client ()->addTempBalance

Я уже сделал набросок: http://pastebin.com/6hYZSgFP Только он не работает. Undefined index: id_bill (на линии 5). $db->getRows() возвращает Array

Прошу помощи в исправлении. Заранее благодарен.

Ответ на: комментарий от pi11

Вот более полный код

$db->query("SELECT * FROM bill_temp WHERE user_id='".$usrid."'");
            // Check if have rows
            if($db->numrows() != 0)
            {
                while($row = $db->getRows())
                {
                    $txn_id = $row['num_bill'];
                }
                foreach($q->billStatus($txn_id,TRUE) as $idbill=>$v) 
                {
                    $mp = $v['amount'];
                    if($v['status'] == 60)
                    {
                        $db->query("SELECT amount FROM bill_temp WHERE user_id='".$usrid."' AND num_bill='".$idbill."'");
                        while($row = $db->getRows()) $moneyCheck = $row['amount'];
                        // Amount checking
                        if($moneyCheck == $mp)
                        {
                            //some code
                        }
                        else {
                            //some code
                        }
                    }
                    if($v['status'] > 100)
                    {
                        //some code
                    }
                }
            }
            else
                echo ('numrows == 0');
Вывожу массив:
$row = $db->getRows();
foreach($row as $data_array)
{
    foreach($data_array as $key => $value)
    file_put_contents ("test.txt", $key . ' => ' . $value . '\n', FILE_APPEND);
}
Результат: client_id => 1\nnum_bill => Z5ztbXDS\namount => 1024\n По прежнему: Undefined index: num_bill

FailOverFlow ()
Ответ на: комментарий от FailOverFlow

Найди два отличия:

$a = array(
  array('a' => 1),
  array('a' => 2),
);
for ($b = each($a)) {
  $c = $b['a'];
}
$a = array(
  array('a' => 1),
  array('a' => 2),
);
$b = $a['a'];

Даю подсказку: твой вариант второй.

GateKeeper ★★ ()
Ответ на: комментарий от GateKeeper

Сделал так, результат тот-же.

$row = $db->getRows();
$txn_id = $row['num_bill'];
foreach($q->billStatus($txn_id,TRUE) as $idbill=>$v) 
                {
                 ............
Покажите, пожалуйста на моем коде, что-бы я знал где у меня косяк.

FailOverFlow ()
Ответ на: комментарий от FailOverFlow
$row = $db->getRows();
$txn_id = $row['num_bill'];

ошибка между этими двумя строками. Подробнее увидишь, сделав var_dump($db->getRows()); либо распечатав свой $row после первой строки.

GateKeeper ★★ ()
Ответ на: комментарий от GateKeeper

Результат var_dump($db->getRows()):

array(1) { [0]=> array(3) { ["user_id"]=> string(1) "1" ["num_bill"]=> string(8) "s7M1RxCf" ["amount"]=> string(2) "11" } }
num_bill присутствует, тогда в чем ошибка?

FailOverFlow ()
Ответ на: комментарий от GateKeeper

var_dump(array_keys($row)):

array(1) { [0]=> int(0) }

var_dump(array_keys($row[0])):

array(3) { [0]=> string(7) "user_id" [1]=> string(8) "num_bill" [2]=> string(6) "amount" } 

Объясни что я не так сделал.

FailOverFlow ()
Ответ на: комментарий от GateKeeper

Решил данным (по моему мнению - ужасным) способом. Но работает )

			$rslt = $db->query("SELECT * FROM qiwi_tranz WHERE user_id='".$usrid."'");
			if ($row = mysql_fetch_array($rslt)) {
			do {
				$txn_id = $row['num_bill'];
			} while ($row = mysql_fetch_array($rslt));
				mysql_free_result($rslt);
			}

			foreach($q->billStatus($txn_id,TRUE) as $idbill=>$v) 
			{
                            ..........

FailOverFlow ()
Ответ на: комментарий от FailOverFlow

Ну, ты сэкономил на памяти, но в целом суть проблемы ты не понял, хотя и решил. В общем, соплями и изолентой залатал трубопровод высокого давления.

GateKeeper ★★ ()
Ответ на: комментарий от FailOverFlow

Это пиздец.. Из массива, в котором другой массив (с нужным ключём) пытаемся напрямую получить нужное значение..

Плюс к тому: что вот это? Какой смысл несут эти строки?

while($row = $db->getRows())
{
    $txn_id = $row['num_bill'];
}

В результате выполнения этого кода ты получаешь только последнее из всей выборки значение num_bill

Читать учебник по PHP и немедленно..

Photon79 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.