За последние 24 часа нас посетили 30564 программиста и 1796 роботов. Сейчас ищут 774 программиста ...

Математика и ПХП

Тема в разделе "Прочие вопросы по PHP", создана пользователем tohyich, 25 окт 2006.

  1. tohyich

    tohyich Активный пользователь

    С нами с:
    25 окт 2006
    Сообщения:
    20
    Симпатии:
    0
    Заренее извиняюсь если вопрос тупой, но пока я его не то что решить, даже толком сформулировать не могу.
    Ситуация такова:
    есть формула $ncolvo=$new[colvo]-$_GET[$i]
    $i меняеться в цикле от 1-30.
    В зависимости от значения одной из переменных передаваемых в скрипт через $_GET нужно менять минус на +
    Пробовал таким образом
    (вспомнил математику "минус на минус дает плюс")
    If ($_GET['action']=='sdan') { $table='vidach' ; $s4='selected';$sx='-';} # для данного случая инициируем переменную содержащую знак "-" и будем добавлять ее в запросы
    $sql="INSERT INTO `$table` VALUES ( '', '$data', '$_GET[mont]','$i','$sx$_GET[$i]');"
    $ncolvo=$new[colvo]-$sx$_GET[$i];# типа таким образом

    ПХП на это материться и глотать такой скрипт не хочет.
    Причем переменная $_GET[$i] также записываеться в MySQL, соответсвенно и там она должна быть со знаком -
     
  2. Davil

    Davil Guest

    1. Для записи числа надо писать без кавычек.
    2. Для того, чтобы подставлялся минус, надо добавить оператор конкатенции, т.е. точка. Получится
    $sx.$_GET[$i]
     
  3. Anonymous

    Anonymous Guest

    а просто на -1 умножить?
     
  4. tohyich

    tohyich Активный пользователь

    С нами с:
    25 окт 2006
    Сообщения:
    20
    Симпатии:
    0
    Не прокатывает в формуле $ncolvo=$new[colvo]-$sx.$_GET[$i]
    при $new[colvo] = 1873 и $_GET[$i] = 0
    выражение $sx.$_GET[$i] = -.0235260
    а $ncolvo на выводе дает 18730
    видимо у ПХП своя математика....

    Вот это идея! Только ума не приложу как это грамотно в код приладить?
     
  5. tohyich
    твоя беда в том, что ты ужасно торопишься.
    И забываешь то, что сам только что говорил.

    ты бы на кошках сначала потренировался.
    Безо всяких SQL и GET, а просто взял бы две переменные, и поскладывал/умножал их по-всякому. раздельчик мануальчика почитал бы, про арифметику.
    а так ты делаешь, сам не понимая - что.
    то ты пишешь, что знак подставляешь в запросы, тебе объясняют, как это сделать, а ты вдруг вместо запроса пишешь его в формулу.

    Остановись, подумай немножко.
    уж перемножить-то одну переменную на другую ты в состоянии без посторонней помощи?
     
  6. tohyich

    tohyich Активный пользователь

    С нами с:
    25 окт 2006
    Сообщения:
    20
    Симпатии:
    0
    моя беда в том что по образованию я автослесарь, работаю руководителем эл.монтажных работ, и для автоматизации рутинных процессов мне приходиться изучать программирование и администрирование серверов. И вот придя уставшим с работы заново перебирать кучи строк кода для поиска ошибки и тонны мануалов для устранения оной. Признаюсь для меня это тяжеловато, но это все оффтоп.
    Поэтому я банально прошу помощи у профессионалов, или протянуть руку помощи, это так для вас сложно?
     
  7. окей, объясняю специально для автослесарей.
    сначала автослесарь пишет:
    программист ему отвечает:
    Автослесарь, почему-то, эту информацию за помощь не принимает.
    Программист должен протянуть руку в редактор что ли, к автослесарю, и там ему поставить точку между переменными?
     
  8. Davil

    Davil Guest

    Чебурген +1

    tohyich Автослесарь - это не характеристика интеллекта. Это не значит, что человек не способен понять такие вещи.

    Так вот. По теме:
    В формуле надо умножать на -1.
    В строке запроса надо подставить точку, или взять результат формулы.
     
  9. tohyich

    tohyich Активный пользователь

    С нами с:
    25 окт 2006
    Сообщения:
    20
    Симпатии:
    0

    Так я смотрю пока я в коде ковырюсь на меня бочку гонят. Итак по пунктам:
    Чебурген В самом начале я писал что нужно сделать и где. Там указана формула и SQL-запрос.
    Вариант с точкой не прокатывает в формуле, отсюда выводим вариант мертв!

    Davil Я не говорил ничего про интелект, я говорил что сталкиваюсь с задачами решения которых не знаю и моих сил и времени не хватает на изучение всей док-ции и поиск правильного и эффективного решения.

    Ко всем я просил по возможности готовый вариант решения

    Горбунов Олег Большое Спасибо за совет, подумав смог приладить таким образом
    Код (Text):
    1.  
    2. If ($_GET['action']=='sdan') { $table='vidach' ; $s4='selected';} # $s4 -уникальная переменная для данного запроса (в других не встречаться)
    3.  
    4. While (isset ($_GET[$i])){ # первый цикл перебора $i
    5. $i++
    6.  if ($s4) { $_GET[$i]*= -1 ;} # умножаем на -1 и без всяких точек
    7.    $sql="INSERT INTO `$table` VALUES ( '', '$data', '$_GET[mont]','$i','$_GET[$i]');";
    8.  
    9. While (isset ($_GET[$i])){  второй цикл перебора $i
    10. $ncolvo=$new[colvo]-$_GET[$i];
    Все работает. Поначалу лоханулся вставив
    Код (Text):
    1. if ($s4) { $_GET[$i]*= -1 ;}
    во второй цикл :?
    в итоге $_GET[$i] снова вернулось в первозданный вид, быстро осознал. удалил лишнее
     
  10. Anonymous

    Anonymous Guest

    Флуд почистил. Кого не устраивает, жалуйтесь 440hz.
     
  11. mz

    mz Активный пользователь

    С нами с:
    31 янв 2006
    Сообщения:
    77
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    надо было назвать тему "Арифметика и PHP" :)