[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите пожалуйста с кодом
ancer
помогите пожалуйста с кодом

while($row=mysql_fetch_array($usr))
{
$id = $row['id'];
$item = $row['item'];
$price = $row['price'];
$special = $row['special'];




$summa=$price*$m2;

echo "
$item - $price summa - $summa <br>
";

}



на выходе я имею список всех услуг и их цен.
а вот сумму он считает только для первой строки а дальше нули.

как $summa размножить? сделать массивом? а как это?



Спустя 9 минут, 5 секунд (16.02.2012 - 21:22) Игорь_Vasinsky написал(а):
Цитата
$price summa

что за *censored*

так нельзя давать имена....пробелы не допустимы
кто такие $item и $price*$m2
ph34r.gif

Спустя 2 минуты, 41 секунда (16.02.2012 - 21:25) koala написал(а):
Цитата
как $summa размножить? сделать массивом? а как это?


biggrin.gif

Тебе надо цикл со счетчиком.

Спустя 4 минуты, 54 секунды (16.02.2012 - 21:30) intreb написал(а):
$item - $price summa - $summa <br>
всё правильено
в переводе это: вывоз мусора - 0.009 сумма - 0,315

так как m2 это квадратные метры её значение 35
price это цена за услугу.
summa это цена помноженная на метры

это работает только для первой услуги а у меня их в базе много

Спустя 6 минут, 21 секунда (16.02.2012 - 21:36) koala написал(а):
echo $item . '-' . $price . 'summa - ' . $summa <br>';


И все в той же таблице или каждая в другой?

while($row=mysql_fetch_array($usr))


Используйте
mysql_fetch_assoc()
если вам не надо номеров а только названия елементов.

Спустя 13 минут, 22 секунды (16.02.2012 - 21:49) intreb написал(а):
в разных
вот полный код


case "invoices":

$queryf="SELECT * FROM `` ORDER BY id ASC";
$usrf=mysql_query($queryf);
if(!$usrf) exit ("Ошибка; (sql x)");

while($row=mysql_fetch_array($usrf))
{
$id = $row['id'];
$name = $row['frate'];
$m2 = $row['mb'];

echo "
$id - $name <br>";

$queryx="SELECT * FROM `prices` ORDER BY id ASC";
$usr=mysql_query($queryx);
if(!$usr) exit ("?ё????; (sql x)");

while($row=mysql_fetch_array($usr))
{
$id = $row['id'];
$item = $row['item'];
$price = $row['price'];
$special = $row['special'];

$summa=$price*$m2;

echo "
$item - $price summa - $summa <br>
"
;

}
echo "<br>";

}





результат:

1 - Tatjana Timofeeva
elektr - 0.007 summa - 0.266
remont - 0,0959 summa - 0
obsluzh - 0,19 summa - 0
musor - 0,036 summa - 0
voda - 0,92 summa - 0



как эти нулевые суммы тоже отработать?

remont - 0,0959 summa - 0
obsluzh - 0,19 summa - 0
musor - 0,036 summa - 0
voda - 0,92 summa - 0

Спустя 3 минуты, 40 секунд (16.02.2012 - 21:53) sergeiss написал(а):
Цитата (Игорь_Vasinsky @ 16.02.2012 - 22:22)
что за *censored*

так нельзя давать имена....пробелы не допустимы
кто такие $item и $price*$m2

Игорь, ты не прав... Это не пробелы в именах, а формирование символьной строки.

Цитата (koala @ 16.02.2012 - 22:36)
Используйте
mysql_fetch_assoc()

А вот это уже правильный совет smile.gif К которому стОит прислушаться.

intreb - кроме тэгов CODE тут есть еще много разных тэгов для оформления кодов. Это кнопки справа над редактором ввода: PHP, SQL, HTML...

Спустя 4 минуты, 1 секунда (16.02.2012 - 21:57) koala написал(а):
Запихивайте код в теги php.

$queryf="SELECT * FROM `` ORDER BY id ASC"; 


Что это? Вам надо указать таблицу с которой идет выборка. Может в этом у вас и проблема. Вам ошибку не выдает?

Спустя 3 минуты, 28 секунд (16.02.2012 - 22:01) intreb написал(а):
это я просто удалил название.
я поменял ена mysql_fetch_assoc и ничего не поменалось.

те переменные что из базы они же в реальности идут под номерами вар_1 вар_2
а вот переменная семма одна, без номера поэтому и работает только для первой строки. как заставить её работать для всех услуг?

Спустя 2 минуты, 34 секунды (16.02.2012 - 22:03) Игорь_Vasinsky написал(а):
Цитата
Игорь, ты не прав... Это не пробелы в именах, а формирование символьной строки

да я уж вижу. народ как плювал на конкатенацию - так и плюёт.

Спустя 1 минута, 29 секунд (16.02.2012 - 22:05) Игорь_Vasinsky написал(а):
Покажи вывод

while($row=mysql_fetch_array($usr))
{
$id = $row['id'];
$item = $row['item'];
$price = $row['price'];
$special = $row['special'];

$summa=$price*$m2;

echo $item.' '-' '.$price.' price - '.$price.'<br>';

}

Спустя 5 минут, 38 секунд (16.02.2012 - 22:10) Игорь_Vasinsky написал(а):
Цитата
а вот переменная семма одна, без номера поэтому и работает только для первой строки

нет. каждый цикл она меняется, проблема может быть с типами данных.

т.е. вместо float у тя string, например.

Спустя 24 секунды (16.02.2012 - 22:11) intreb написал(а):
1 - name1
00.007 summa - 0.007
00,0959 summa - 0,0959
00,19 summa - 0,19
00,036 summa - 0,036
00,0959 summa - 0,0959
00,84 summa - 0,84
00,92 summa - 0,92

2 - name2
00.007 summa - 0.007
00,0959 summa - 0,0959
00,19 summa - 0,19
00,036 summa - 0,036
00,0959 summa - 0,0959
00,84 summa - 0,84
00,92 summa - 0,92

Спустя 1 минута, 56 секунд (16.02.2012 - 22:13) intreb написал(а):
сейчас поменяю

Спустя 2 минуты, 20 секунд (16.02.2012 - 22:15) intreb написал(а):
они оба varchar

но ведь один раз он считает сумму




те переменные что из базы они же в реальности идут под номерами вар_1 вар_2

а вот переменная $summa одна на весь цикл, без номера поэтому и работает только для первой строки. как заставить её работать для всех услуг?

Спустя 2 минуты, 11 секунд (16.02.2012 - 22:17) Игорь_Vasinsky написал(а):
varchar это строка - я хз как у тя вообще что то считает.

Цитата
а вот переменная $summa одна на весь цикл, без номера поэтому и работает только для первой строки. как заставить её работать для всех услуг?

:angry: скока циклов - стока и $summa

теперь так

while($row=mysql_fetch_array($usr))
{
$id = $row['id'];
$item = $row['item'];
$price = $row['price'];
$special = $row['special'];

$summa=(float)$price*(float)$m2;

echo $item.' '-' '.$price.' summa - '.$summa.'<br>';

}

Спустя 15 минут, 49 секунд (16.02.2012 - 22:33) sergeiss написал(а):
Тебе что нужно - чтобы подсчитало сумму по всем циклам? Если да, то тогда объяви переменную ПЕРЕД циклом
$summa=0;
// далее идет цикл
while( .... )
{

...
$summa += ....;// прибавляем к сумме то, что надо
}

// и тут уже имеем полную сумму по всем строкам


На самом деле это всё неверно и изврат полный :) Потому что надо подсчитать всё прямо в запросе, всю сумму, а потом в ПХП только забрать нужные данные.

Спустя 4 минуты, 34 секунды (16.02.2012 - 22:38) Игорь_Vasinsky написал(а):
у него тип для этих полей VARCHAR а summa должна формироваться тодько в цикле - она состоит из price которая выбирается из БД.

лан. как хотите.

Спустя 2 часа, 34 минуты, 35 секунд (17.02.2012 - 01:12) walerus написал(а):
А чего я один только заметил ?
<?php 
case "invoices":

$queryf = "SELECT * FROM `` ORDER BY id ASC";
$usrf = mysql_query($queryf);
if( !$usrf ) exit ( "Ошибка; ( sql x )" );

while( $row = mysql_fetch_array( $usrf ) )
{
$id = $row['id'];
$name = $row['frate'];
$m2 = $row['mb'];

echo $id . ' - ' . $name ."<br>\n";

$queryx = "SELECT * FROM `prices` ORDER BY id ASC";
$usr = mysql_query( $queryx );

if( !$usr ) exit ( "Ошибка; ( sql x )" );

// while( $row = mysql_fetch_array( $usr ) ) //// ALARMA !!!! WARNING !!! ИМЯ переменной '$row' ОДИНАКОВОЕ С ПЕРВЫМ while
// По этому и сбивается все наФиг


while( $row_1 = mysql_fetch_array( $usr ) )
{
$id = $row_1['id'];
$item = $row_1['item'];
$price = $row_1['price'];
$special = $row_1['special'];

$summa = $price * $m2;

echo $item . ' - ' . $price . ' summa - ' . $summa . "<br>\n";
}

echo "<br>";
}


P.S. Учимся оформлять красиво/читабельно код
P.S.S. Надеюсь ошибка была в этом

Спустя 11 часов, 17 минут, 46 секунд (17.02.2012 - 12:30) inpost написал(а):
walerus
Фигурные скобки должны быть на уровне условия,
while()
{
$var;
}

Спустя 5 часов, 32 минуты, 42 секунды (17.02.2012 - 18:03) intreb написал(а):
попробую ваши советы

Спустя 18 минут, 55 секунд (17.02.2012 - 18:21) intreb написал(а):
я попробовал все ваши варианты ничего не помогло. даже одинаковые переменные роу не влияют на работу.

выполняются все внешние циклы и выводится сумма для каждого первого элемента внутреннего цикала

Спустя 1 час, 9 минут, 29 секунд (17.02.2012 - 19:31) Игорь_Vasinsky написал(а):
Цитата
я попробовал все ваши варианты ничего не помогло. даже одинаковые переменные роу не влияют на работу.

что - так же выводит одно и тоже? или разные варианты?

Спустя 1 минута, 39 секунд (17.02.2012 - 19:33) Игорь_Vasinsky написал(а):
Цитата
  // while( $row = mysql_fetch_array( $usr ) ) //// ALARMA !!!! WARNING !!! ИМЯ переменной '$row' ОДИНАКОВОЕ С ПЕРВЫМ while


ph34r.gif
этого куска кода небыло же. чё за гадство.


ТС - JOIN - совместный запрос в 2 таблицы и всё в одном цикле делать.

Спустя 1 час, 50 минут, 12 секунд (17.02.2012 - 21:23) intreb написал(а):
да, всё абсолютно тоже самое

ТС - JOIN это как на моём примере?

я никогда так не делал
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.