За последние 24 часа нас посетили 53292 программиста и 1765 роботов. Сейчас ищут 1476 программистов ...

проблема с include

Тема в разделе "Сделайте за меня", создана пользователем sin313, 9 июн 2014.

  1. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Вот в упор не понимаю, чем это по сути своей будет отличаться от
    Код (Text):
    1. <a class='brend' href="index.php?brand=<?=f_search_brand($mass_brend[$i]);?>"><?=$mass_brend[$i]?></a>
     
  2. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Да ты прав. По сути то же самое. Это Я уже засиделся, тупить начал)
     
  3. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Что за фигня. Не работает INSERT . Все переменные выводятся через echo , все на месте. В базу не вставляется.
    Код:
    Код (PHP):
    1. mysql_query("INSERT INTO shoes (category,category_pol,firma,price,size,fabric_top,fabric_top_latin,fabric_inner,fabric_inner_latin,season,pol) 
    2.     VALUES ('$category','$category_pol','$firma','$price','$size','$fabric_top','$fabric_top_latin','$fabric_inner','$fabric_inner_latin','$season','$pol')");
    3.  
     
  4. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Короче решил проблему с INSERT! ... Обращаюсь к тем, у кого возможно такая же проблема с INSERT. Никакие вам советы типа напишите вместо '$tovar' .... ' " .$tovar. " ' чьих советов в сети от разных умелкиных выше крыши не помогут.
    Просто пока не вдаваясь в суть, перед запросом, напишите две строчки и все у Вас заработает:

    mysql_query("SET @@GLOBAL.sql_mode= ''");
    mysql_query("SET @@SESSION.sql_mode= ''");

    а потом уже как пример из моего случая:

    mysql_query("INSERT INTO shoes (category,category_pol,firma,price,size,fabric_top,fabric_top_latin,fabric_inner,fabric_inner_latin,season,pol)
    VALUES ('$category','$category_pol','$firma','$price','$size','$fabric_top','$fabric_top_latin','$fabric_inner','$fabric_inner_latin','$season','$pol')");
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Вы ведь пробовали вывести сам запрос на страницу, скопировать и руками передать базе с тем, чтобы выяснить, что не так, либо отловить в коде ошибку sql, которую база непременно передаст? Что значит "не вставляется"? С каким кодом ошибки? На что ругается? Как ругается? Документацию, вы, разумеется, по данному вопросу сразу нашли и прочитали, ведь так?

    Или просто стали гуглить на тему "не работает insert mysql", не разобравшись, что значит это самое "не работает"? И переходите уже с mysql на mesqli, а то потом проблемы будут, потому как расширение mysql сейчас deprecated и оставлено только для совместимости с устаревшим кодом. Писать сразу устаревший код - как-то не круто, согласитесь.
     
  6. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Много чего пробовал, пока не вспомнил, что у меня где то в txt сохранено что делать в таких случаях. Когда начинаю грешить на то что где то в куче кода ошибка, то просто создаю отдельный 1.php чисто для проверки. В него как в данном случае пишу соединение с базой и далее запрос insert , проще некуда. Реакции ноль. Понятное дело что тут не в кавычках, не пробелах, не в синтаксисе дело. Просто что то там внутри не срабатывает как бы на подобии из отдельной темы с куки. Отключены куки и хоть ты обкакайся, код правильный, работать не будет. Далее разумеется сначала что бы форумы не засирать своими проблемами ищешь инфу в гугле совершенно верно. Насчет mesqli не задумывался, но если говоришь проблемы будут, то да будем думать.)
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Что значит реакции ноль? mysql_error() вернула пустой результат? В файле 1.php не был включен вывод ошибок и, не увидев их, решили, что их нет?
    Понятно на основе чего? Предположений? Программирование - это точная штука. Догадок тут быть не должно. Любая догадка должна быть подтверждена или опровергнута опытным путем. Если человек не знает как правильно проверить, это не делает его суждения верными, если он проверял не правильно.
    Это машина. У нее не бывает "как бы что-то там внутри не срабатывает". Это же не истеричка во время месячных, когда хрен поймешь-разберешь, что там творится у нее в голове.

    Программирование и любые технические решения основаны на логике. На четкой логике. Где всегда, при любых условиях есть связь причина=>следствие. Если вы о ней не знаете, это не значит, что ее не существует. Значит, надо лучше изучить то, с чем имеете дело.

    Решение любой проблемы состоит в понимании ее причины. Так, и больше никак. То, что вы сделали - пальцем в небо. Что было не так - не знаете, что сделали - не знаете, почему заработало - не знаете. Вы не убрали проблему, вы ее отсрочили.

    По своему опыту - любой "волшебно рассосавшийся баг", причины появления которого не были определены, а причины исчезновения окутаны мистикой, рано или поздно очень болезненно вылезет боком. По этому даже если случилась ситуация "прошло и ладно", надо продолжать рыть. Потому что не прошло нифига.
     
  8. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Да ты прав. Надо разбираться от и до. Буду думать...... Такой вопрос! Как бы ты сделал? Раздел администратора. Вывожу все товары с полями ввода для каждого товара и хочу из них отредактировать несколько товаров за один раз, а не все. каждому name присваиваю id товара из таблицы. К примеру name = 'category_<?=$item['id'];?>' Меняю в инпутах значения и делаю submit. Далее эти все $_POST летят в файл обработчика.
    По самому простому можно перебрать все записи по id. Приведу пример допустим для редактирования одного поля:
    $res_num = mysql_query("SELECT * FROM shoes ORDER BY id");
    for($i=0; $i<mysql_num_rows($res_num); $i++) {

    $in = mysql_result($result_num, $i, "id");
    $category = $_POST['category_'.$in];

    mysql_query("UPDATE shoes SET category = '$category' WHERE id = '$in'");
    }

    Но это переборка всех полей и как бы не страшно когда их не так много, а если их выше крыши)
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Давай разберемся в логике происходящего:
    0) У тебя на странице уже есть айдишники в инпутах товаров.
    1) Ты выбираешь все строки из таблицы.
    2) Чтобы вытащить только один ID.
    3) Который у тебя уже есть в POST.
    4) Чтобы получить доступ к записи в POST.
    5) Чтобы обновить категорию для, пусть 5 товаров.
    6) Ты зачем-то крутишь цикл, равный количеству ВСЕХ товаров.
    7) А где защита от инъекции? То, что это админка, не значит, что не надо ничего чистить.

    Смекаешь, сколько не нужной работы у тебя там делается? Сколько лишних движений?

    Код (PHP):
    1. foreach($_POST as $key=>$val) {
    2.   if (strpos($key,'category_')===0){
    3.     $id = substr($key,9);
    4.     $category = mysql_real_escape_string($val);
    5.   }
    6.   mysql_query("UPDATE shoes SET category = '$category' WHERE id = '$in'");
    7. } 
    Теперь посмотрим на то, что я написал:
    1) Мы получаем POST, в котором содержится и ID и новая категория.
    2) Для каждого элемента POST, ключ которого подпадает под шаблон categoty_XXX.
    3) Вытаскиваем ID из его ключа.
    4) Получаем и экранируем значение из его ячейки.
    5) Делаем апдейт в базу.
    6) Кол-во итераций равно кол-ву изменяемых элементов.
    7) Если чуть поколдовать, можно сделать, чтобы было достаточно всего одного запроса к БД, считай, что это тебе задание :)
    8) Переходи на mysqli, вот прям уже сейчас.

    Да, если у тебя нет такого, чтобы за один запрос присвоить нескольким множествам товаров разные группы, то я бы и структуру POST поменял. Хранил бы отдельно просто список айдишников, которые надо перепилить, и имя новой категории для них. Тогда не будет танцев со строками.
     
  10. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Насчет такого же кода как у тебя, Я уже думал раньше, да через $_POST а затем foreach. Это будет то же самое. Все товары активны, а значит все значения пост полетят на обработку и форэйч выдаст ровно столько $key с их $val сколько записей в таблице, а значит и запросов столько же. Если 1000 товаров, все они будут перебираться поочередно, да же если изменить только одно поле одного товара.
    Вопрос в том как сделать что бы после субмит в обработчик полетели только те значения полей, которые были отредактированы. Наводятся мысли втыкнуть поле hidden к каждому товару, а потом после отправки просто сравнить с текущим. Если равны, то update , а если нет, пропускаем. Это избавить от лишних запросов, а точнее от всех кроме тех нескольких измененных полей. Да это большой плюс, но теперь остается то что время будет уходить на сравнение полей hidden и текущего. Есть мысль яваскрипт воткнуть по событию клик в поле или изменения текста данного поля, а потом как то, еще не знаю скрыть лишние инпуты перед отправкой, но это опять, если не там тратя время на переборку то здесь. Палка о двух концах. В принципе если так подумать к примеру магазин сапато по аналокии которого Я сейчас пишу похожий магазинчик, то там разом чуть более 1000 позиций выводится и особо не критично. Может мне во обще насчет этого не парится!? )
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Эм..так вотоночо. Дык проставь чекбоксы напротив полей, которые надо обработать. И отсылай массив чекбоксов с ID (неотмеченные просто не будут отосланы) плюс новая категория. Если ты хочешь за раз нескольким товарам разные категории присвоить, то, тогда делай скрытый чекбокс, в который будет проставляться галка JS-м при изменении категории. Кароч соль вся в правильной организации ответа клиента. И в том, надо ли упарываться в мелочи, когда основы нет.
     
  12. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Хорошо, допусти поставил чекбосы. Изначально все скрыты. По клику в поле JS-м ативирую чекбокс и его value присваиваю значение измененного поля, но при отправке формы полетят и чекбоксы и все поля формы, а значит форэйдж будет перибирать всеравно все значения пока не наткнется на пост чекбокса. Да запросы insert будут только при наступлении чекбокса проходить. Это снимет лишние обращения к таблице, но количество цыклов проверки чекбокс это или нет останется равным количеству всех посланных $_POST.
    Если есть возможность отправить переменные пост только чекбоксов, из формы в которой помимо чекбоксов есть еще другие инпуты, то это было бы замечательно, а так это получится как Я уже писал, если просто добавлю поле hidden к каждому полю с текущим значением и в обработчике уже буду сравнивать. Это еще лучше. Не нужен яваскрипт.
    Но если есть метот отправки только определенных инпутов из формы, буду очень признателен. Если знаешь, напиши пожалуйста как это сделать.
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Сделай как везде:
    1) есть чекбоксы, много чекбоксов.
    2) Есть выпадающий список "с выбранными", содержащий варианты действия.

    По сабмиту на сервер улетят только имена отмеченных чекбоксов и значение списка. Вуаля.
     
  14. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    У меня есть поля, куда вписывается материал обуви, размеры, категория обуви, категория аксессуаров. Если Я это все через селект буду и чекбоксы делать, то каждый раз при появлении новой категории или аксессуара, которого нет в списке, а их сам понимаешь может быть куча нужно будет опять лезть в код и добавлять к списку новое значение, если его там нет. Я сделал по другому. У меня есть поля <input type='text'> куда Я могу ввести любое значение, а вместо select как имитация <div> блоки в которых куча блоков <span> в которые из базы через DISTINCT тыкаются уже имеющиеся записи. Далее если в списке <span> есть нужное значение, тогда яваскрипт и вставить это значение в value инпута type='text' . По сути вот сайт www.kitras.ru который Я написал пару лет назад когда еще знания были на уровне hello word. ) Там да куча селектов , чекбоксов, но опять же что делать когда появляется новый материал или какой нибудь не стандартный размер типа 36||38 в одном , которого нет в списке. Да, Я могу залезть в код и подправить, но простой пользователь это не сделает, тот же администратор за компом в рабочем кресле. На данный момент сайт полностью переписываю, так же уже добавил корзину и еще много чего. Остался последний момент, доработка администраторской части. Вот как бы сижу и думаю над этим местом.
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Дык храни категории в БД. Селект не обязан быть жестко прописанным в коде. Пусть он динамически генерится на основе данных в БД. Вбил новую категорию в список, пыщмагия, в селектах появилась новая строчка.
     
  16. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Да думал уже, но как бы задача, что бы человек, во обще не парился лишнее действие делать. Это же надо будет лишнее окошко открыть, там добавить материал, нажать кнопочку и вернутся к исходному окошку, что бы в селект появилась запись, хотя может Я преувеличиваю, но с другой стороны простой пользователь настолько тупой. Ему надо что бы все происходило в один клик. Вот к примеру интереса ради посадил трех человек поочередно и попросил добавить в корзину не со своего сайта, а с крупного магазина сапато вот этот товар http://www.sapato.ru/1643774 Проще некуда. Я офигел. Они начали enter тыкать , нажимать разные кнопки на клавиатуре, но ведь все как надо сделать написано перед глазами. При том что люди не из колхоза. Исходя из этого нужно делать все по максимуму в одно действие для хоть кого. Хоть администратора, который через неделю при поступлении нового товара, забудет куда тыкать и начнет трезвонить и простого безмозглого пользователя. С карзиной думаю во обще при открытии страницы что бы вылетали динамические подсказки что делать типа тыкните сюда, а потом нажмите это))) Вплоть до такой фигни. Представляешь как крупные интернет магазины тупо тратят свой трафик на объяснение тысячам как в корзину добавить. Если из трех три не понимают, что тут уже о глобальном говорить)))
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Воу воу. Погоди. Категории добавлять должен администратор магазина. Человек, который знает, что категорий может быть несколько и они могут меняться. Дай ему в админке менюшку "категории", где он будет их вбрасывать и выпиливать. 10 действий в разных комбинациях на одну кнопку не повесишь. Мануал рядом клади со скриптами на край. Юзай модальные окошки. Впиливать потенциально динамичные данные жестко в код - это очень, ОЧЕНЬ плохая практика.

    Ты понимаешь, объективно, что ради того, чтобы что-то теоретически упростить, ты себе жизнь усложнил в 10 раз и сейчас стоишь на грани пересмотра архитектуры системы? Ради одной свистопирделки для людей, которые, в общем-то, не глупых, потому что дурак не возьмется(не будет нанят) администрировать магазин. Этим людям даже удобнее будет, если дашь возможность править категории.
     
  18. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Подправил кое что. Добавил в базу таблицу и теперь при добавлении новой записи в инпут, если ее нет в списке, просто через запятую добавляется к существующим вариантам. На удивления раздел администратора да же при 100 записях в основной таблице стал в считанное мгновение грузится. Все имитации списков после прохождения имплодов эксплодв а после через массив выводятся теперь уже из отдельной таблицы. Да действительно надо было сразу так делать. В целом не критично. За пол часа все подправил. Не пришлось все переделывать от и до)