87793: Дело не в нулях, которые Вы получили в результате вычитания на очередном шаге.
Дело в том, что Вы получили ноль в результат деления.
3-й шаг: 0 в разности, снесли 8 - получили 08 (т.е. 8).
8/8 = 1 - единица в результат деления. Пишем её туда, в поле результата у нас на данном этапе 751.
4-й шаг: 0 в разности, снесли 4 - получили 04 (т.е. 4).
4/8 = 0 - ноль в результат деления. Пишем его туда, в поле результата у нас на данном этапе 7510.
Вычитание ноля не пишем.
5-й шаг - переход в следующий разряд - сносить из делимого нечего, цифры делимого закончились, поэтому результат деления замыкаем запятой. Приписываем ноль (т.е. "сносим" его из записи делимого с дробной частью - "60084,0"). Получаем 40.
40/8 = 5, пишем пятёрку к результату деления (7510,5), а поскольку разность равна нулю и цифры делимого закончились - процесс останавливается.
Почему тогда пример " 2 не так решаем?
Начал вам писать и понял ответ. Просто в первом варианте ещё остается 4ка (4-й шаг). Её не поделить, дописываем в результат 0, и к ней дописываем ноль, в результат дописываем запятую.
А в примере 2 там в результате вычитания осталась 4-ка, её на 6 делить нельзя, дописываем в результат запятую, а к 4-ке ноль....как то так..
Вообщем, понятно, что в первом случае непосредственно кусок остается от делимого, если меньше чем то, на что нужно поделить, дописываем и туда и туда ноль. А во втором, остаток, который меньше, чем то на что нужно поделить, значит дописываем запятую.
ОЛЕ! спасибо!.
---------- Post added 08-04-2015 at 19:26 ----------
MargoDNP: я сначала удивилась, что сейчас вообще кто-то помнит, как делить в столбик )
Мы и дроби складывать умеем :)
Помним, просто путаница получилась из за двух похожих примеров, да и опыт пропал. Вот с сыном вечером тренироваться будем.
---------- Post added 08-04-2015 at 19:27 ----------
bondarev.pp.ru: после 08/8 у вас получился 0, и вы перешли к следующему разряду. В этот момент нужно было 0 в результат дописать.
7510.5
Так почему? В этом же примере №1 на один шаг выше, смотрите, после 40/40 у нас тоже получился 0, но мы то не дописывали в результат ноль
---------- Post added 08-04-2015 at 18:17 ----------
87793: А снос заключительной четвёрки делимого и приписывание нуля - это не один шаг должен быть, а два
В примере №2 - мы после 40минус36 получили 4. Приписали ноль к четверке, но в результат при этом тоже не дописываем ноль, а просто в результате ставим запятую...
proksey-net: вообще неправильно. Во первых я напишу вместо '%27 и вот вам sql-инъекция. А раз у вас одинарные кавычки в базе встречаются, то делается это так:
'[umka: ;13636989']Выведите ошибку mysql-я, там в ней будет написано, в каком именно месте. Или выполните тот же запрос в phpMyAdmin. Или просто выведите этот же запрос, в большинстве случаев этого бывает достаточно, чтобы увидеть косяк.
А не подскажете, как выводить ошибку mysql-я в файл, а не на экран? У меня все ошибки пишутся в файл...
Понятно одно - проблему будет найти сложно, так как при запросе непосредственно в phpMyAdmin - все нормально. Видимо в каких то страницах, переменная учавствующая в запросе принимает какой то нехороший вид. У меня там происходит отбор товаров производителя, так вот запрос такого вида
$brand = 'название_бренда'; $result22 = mysql_query("SELECT id from `katalog` WHERE `brand`='$brand'");
возможно где то бренд вида Lami'Art правда как с этим бороться, тоже не знаю, т.к. надо найти его товары и просто так удалить из названия знак ' не могу же.
Дело не в нулях, которые Вы получили в результате вычитания на очередном шаге.
Дело в том, что Вы получили ноль в результат деления.
3-й шаг: 0 в разности, снесли 8 - получили 08 (т.е. 8).
8/8 = 1 - единица в результат деления. Пишем её туда, в поле результата у нас на данном этапе 751.
4-й шаг: 0 в разности, снесли 4 - получили 04 (т.е. 4).
4/8 = 0 - ноль в результат деления. Пишем его туда, в поле результата у нас на данном этапе 7510.
Вычитание ноля не пишем.
5-й шаг - переход в следующий разряд - сносить из делимого нечего, цифры делимого закончились, поэтому результат деления замыкаем запятой. Приписываем ноль (т.е. "сносим" его из записи делимого с дробной частью - "60084,0"). Получаем 40.
40/8 = 5, пишем пятёрку к результату деления (7510,5), а поскольку разность равна нулю и цифры делимого закончились - процесс останавливается.
Почему тогда пример " 2 не так решаем?
Начал вам писать и понял ответ. Просто в первом варианте ещё остается 4ка (4-й шаг). Её не поделить, дописываем в результат 0, и к ней дописываем ноль, в результат дописываем запятую.
А в примере 2 там в результате вычитания осталась 4-ка, её на 6 делить нельзя, дописываем в результат запятую, а к 4-ке ноль....как то так..
Вообщем, понятно, что в первом случае непосредственно кусок остается от делимого, если меньше чем то, на что нужно поделить, дописываем и туда и туда ноль. А во втором, остаток, который меньше, чем то на что нужно поделить, значит дописываем запятую.
ОЛЕ! спасибо!.
---------- Post added 08-04-2015 at 19:26 ----------
я сначала удивилась, что сейчас вообще кто-то помнит, как делить в столбик )
Мы и дроби складывать умеем :)
Помним, просто путаница получилась из за двух похожих примеров, да и опыт пропал. Вот с сыном вечером тренироваться будем.
---------- Post added 08-04-2015 at 19:27 ----------
Спасибо 87793, разложил по полочкам.
У нас там получился 0 разности, а не 0 в частное.
В частное у нас получилась пятёрка (40/8 = 5).
Прошу прощения, просто логику нужно понять, сыну объяснить, а сам туплю...
Разве эти нули чем то отличаются?
Выделил
[ATTACH]141910[/ATTACH]
после 08/8 у вас получился 0, и вы перешли к следующему разряду. В этот момент нужно было 0 в результат дописать.
7510.5
Так почему? В этом же примере №1 на один шаг выше, смотрите, после 40/40 у нас тоже получился 0, но мы то не дописывали в результат ноль
---------- Post added 08-04-2015 at 18:17 ----------
А снос заключительной четвёрки делимого и приписывание нуля - это не один шаг должен быть, а два
В примере №2 - мы после 40минус36 получили 4. Приписали ноль к четверке, но в результат при этом тоже не дописываем ноль, а просто в результате ставим запятую...
;13638018']Это делается штатными escape-функциями mysql, о которых я написал выше.
Спасибо оргомное. Обязательно ознакомлюсь. Просто сейчас пока сделал так.
Там надо освоить материал. Я пробежался, но это не быстро сделать. Нужно время.
вообще неправильно. Во первых я напишу вместо ' %27 и вот вам sql-инъекция. А раз у вас одинарные кавычки в базе встречаются, то делается это так:
%27 это не пробел ' OR ''=', это типо так 'OR''='?
Если да, то я доставил ещё проверку на '='.
Да и понял, нужно переменные взять в двойные кавычки.
Простите, а от куда \ в запросе появится?
Сильно не пинайте, я только учусь, разбираюсь с этим делом.
Спасибо
---------- Post added 08-04-2015 at 14:40 ----------
$brand = str_replace("'", "\\'", $brand);
На мой взгялд в этом конкретно, нет необходимости, так как в априори в названии бренда нет '
Поэтому скрипт просто отдаст ошибку если в бренде будет '
$prov4 = substr_count($brand, "'");
в одинарных ковычках переменная?
$result22 = mysql_query("SELECT id from `katalog` WHERE `brand`='" . $brand . "'");
Да. В одинарных.
Знаю глупость, но работает. У меня на входе, в обработчике стоит проверка на пробелы и кавычки.
$prov1 = substr_count($brand, "%20");
$prov2 = substr_count($brand, " ");
$prov3 = substr_count($brand, "'");
Для большей уверенности думаю ещё добавить
$brand = str_replace("=", "", $brand);
;13636989']Выведите ошибку mysql-я, там в ней будет написано, в каком именно месте.
Или выполните тот же запрос в phpMyAdmin.
Или просто выведите этот же запрос, в большинстве случаев этого бывает достаточно, чтобы увидеть косяк.
А не подскажете, как выводить ошибку mysql-я в файл, а не на экран? У меня все ошибки пишутся в файл...
Понятно одно - проблему будет найти сложно, так как при запросе непосредственно в phpMyAdmin - все нормально. Видимо в каких то страницах, переменная учавствующая в запросе принимает какой то нехороший вид. У меня там происходит отбор товаров производителя, так вот запрос такого вида
$result22 = mysql_query("SELECT id from `katalog` WHERE `brand`='$brand'");
возможно где то бренд вида Lami'Art правда как с этим бороться, тоже не знаю, т.к. надо найти его товары и просто так удалить из названия знак ' не могу же.
;13636951']Синтаксическая ошибка в запросе
Нет, все таки не понял, где именно. Сперва подумал, скобку забыл закрыть...
Нашел, вероятно поэтому?
надо
Эх, нет, все равно ошибка ((
Причем тут ноуиндекс? Вынести повторяющееся слово в заголовок и все.
Нагляднее и удобнее пользователю, когда товар полностью подписан, т.е. "плинтус красный".
Понятно, что можно сделать заголовок, а плинтуса подписать только цвет.
Но вопрос то был в другом же - понимает ПС что это набор товаров или может принять контент спамным.
не будет, пример - любой интернет магазин:)
у многих в noindex обернуто.