//в цикле для 72 цикла
for ($i=$start; $i<=$end; $i++)
{
$resultlae[$i]=mysql_query("SELECT incom FROM `invoices` WHERE invno='$i'");
$lae[$i] = mysql_result($resultlae[$i],0);
echo "lae$i ".$lae[$i]."<br>"; // выдаёт: lae72 2
}
и другой
$resultlaet=mysql_query("SELECT incom FROM `invoices` WHERE invno='72'");
$laet= mysql_result($resultlaet,0);
echo "laet ".$laet."<br>"; // выдаёт: laet 24
номер 72 хранит в базе значение 24.
вообще всё в цикле то пишется одним первым знаком, хотя в базе они двузначные.
то есть
24 это 2
23 это 2
11 это 1
5 это 5
почему так?
Спустя 9 минут, 51 секунда (11.03.2012 - 18:42) Visman написал(а):
$lae = array();
for ($i=$start; $i<=$end; $i++)
{
$resultlae=mysql_query("SELECT incom FROM `invoices` WHERE invno='$i'");
$lae[$i] = mysql_result($resultlae,0,0);
echo "lae$i ".$lae[$i]."<br>";
}
Спустя 7 минут (11.03.2012 - 18:49) intreb написал(а):
большое спасибо! и +
Спустя 53 минуты, 7 секунд (11.03.2012 - 19:42) intreb написал(а):
а почему тут
получаю
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 65
добавилось только AND dolg='0'"
это условие выполняют две строки в диапазоне 10 строк
$laes = array();
for ($i=$start; $i<=$end; $i++)
{
$resultlaes=mysql_query("SELECT incom FROM `invoices` WHERE invno='$i' AND dolg='0'");
$laes[$i] = mysql_result($resultlaes,0,0);
получаю
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 65
добавилось только AND dolg='0'"
это условие выполняют две строки в диапазоне 10 строк
Спустя 11 минут, 42 секунды (11.03.2012 - 19:54) Visman написал(а):
Может вернул пустой ответ!?
$resultlaes=mysql_query("SELECT incom FROM `invoices` WHERE invno='$i' AND dolg='0'");
if (mysql_num_rows($resultlaes) == 0) exit("Нет данных для $i");
$laes[$i] = mysql_result($resultlaes,0,0);
Спустя 5 минут (11.03.2012 - 19:59) intreb написал(а):
это потому что в цикле всего несколько запросов отвечают условию, остальные с пустыми ответами. поставил собаку перед запросом, на работоспособность вроде не влияет.
Спустя 4 минуты, 1 секунда (11.03.2012 - 20:03) Visman написал(а):
Тебе надо другой подход применять, а не в цикле нагружать базу.
Пишешь один запрос в котором в условии WHERE указываешь ограничения для ответа.
Потом перебираешь ответ как массив и все.
Пишешь один запрос в котором в условии WHERE указываешь ограничения для ответа.
Потом перебираешь ответ как массив и все.
Спустя 4 минуты, 59 секунд (11.03.2012 - 20:08) intreb написал(а):
а как тогда быть с диапазоном?
Спустя 7 минут, 10 секунд (11.03.2012 - 20:15) Visman написал(а):
invno BETWEEN start AND end
Спустя 7 минут, 23 секунды (11.03.2012 - 20:23) intreb написал(а):
тогда я не понял
"Тебе надо другой подход применять, а не в цикле нагружать базу.
Пишешь один запрос в котором в условии WHERE указываешь ограничения для ответа.
Потом перебираешь ответ как массив и все. "
при таком раскладе опять будут пустые строки
*с массивами не умею работать
"Тебе надо другой подход применять, а не в цикле нагружать базу.
Пишешь один запрос в котором в условии WHERE указываешь ограничения для ответа.
Потом перебираешь ответ как массив и все. "
я понял что запрос="выташить данные с условием в диапазане"
while{ результаты
апдейт базы
}
при таком раскладе опять будут пустые строки
*с массивами не умею работать
Спустя 9 минут, 17 секунд (11.03.2012 - 20:32) Visman написал(а):
В ответе на запрос к базе пустых строк не будет, т.к. нужное условие можно задать точно.
Пример из документации
Пример из документации
// запрос к базе
$sql = "SELECT id as userid, fullname, userstatus
FROM sometable
WHERE userstatus = 1";
$result = mysql_query($sql);
// обработка результата
// До тех пор, пока в результате содержатся ряды, помещаем их в
// ассоциативный массив.
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];
}
Спустя 18 минут, 46 секунд (11.03.2012 - 20:51) intreb написал(а):
ок с этим я разобрался.
теперь другая проблема
ещё есть поле продоплата
и надо сделать что-то типа:
=проверить если в соседней колонке "предоплата" не равна нулю, тогда записать её в ячейку долг (потом уже туда знак минус прибавлю)
как это правильно придумать?
теперь другая проблема
ещё есть поле продоплата
и надо сделать что-то типа:
while($row = mysql_fetch_array($result))
{
$sq90 = ("UPDATE `fratii` SET
if (($row['predoplata'])!=="0")
{`sl1` = '".$row['dolg']."'} else {`sl1` = '".$row['predoplata']."'}
WHERE `id`='".$row['kv']."' ");
=проверить если в соседней колонке "предоплата" не равна нулю, тогда записать её в ячейку долг (потом уже туда знак минус прибавлю)
как это правильно придумать?
Спустя 9 минут, 45 секунд (11.03.2012 - 21:00) Visman написал(а):
Можно сразу одним запросом делать.
Для всех строк с predoplata<>0 будет применена формула из SET.
UPDATE `fratii` SET тут_форумула_замены WHERE predoplata<>0
Для всех строк с predoplata<>0 будет применена формула из SET.
Спустя 11 минут, 3 секунды (11.03.2012 - 21:11) intreb написал(а):
я наверно плохо обяснил.
это из базы invoices
поэтому $row['predoplata' из invoices.
есть диапазон счетов с таблице invoices
берём оттуда все долги и пишем в `fratii`
в поле `sl1`
но
есть просто нулевые долги (то есть поступило то что насчитали)
а есть нулевые долги + в соседней колонке сумма предоплаты (то есть поступило БОЛЬШЕ ЧЕМ насчитали)
поэтому вот этот 0 надо поменять на сумму предоплаты и прибавить знак минус.
так понятно или что ещё объяснить?
спасибо!
while($row = mysql_fetch_array($result))
{
это из базы invoices
а UPDATE `fratii`
поэтому $row['predoplata' из invoices.
есть диапазон счетов с таблице invoices
берём оттуда все долги и пишем в `fratii`
в поле `sl1`
но
есть просто нулевые долги (то есть поступило то что насчитали)
а есть нулевые долги + в соседней колонке сумма предоплаты (то есть поступило БОЛЬШЕ ЧЕМ насчитали)
поэтому вот этот 0 надо поменять на сумму предоплаты и прибавить знак минус.
так понятно или что ещё объяснить?
спасибо!
Спустя 8 часов, 31 минута, 22 секунды (12.03.2012 - 05:43) Visman написал(а):
Условие php нужно выносить за запрос.
Примерно так:
Примерно так:
if (($row['predoplata']) == 0)
$set = '`sl1` = '.$row['predoplata'];
else
$set = '`sl1` = '.$row['dolg'];
$sq90 = "UPDATE `fratii` SET $set WHERE `id`='".$row['kv']."'";