Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2012, 10:30   #1
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию Запись в БД

Пытаюсь выполнить сей скрипт (через jQuery):

PHP код:
$dbh mysql_connect($dblocation$dbuser$dbpasswd); 
mysql_select_db($dbname,$dbh);
$note mysql_escape_string($_POST['text']);
$id mysql_escape_string($_POST['id']);
echo 
$note;
echo 
$id;
$sql "UPDATE `system_files_records` SET `name`=" $note " WHERE `id`=" $id " LIMIT 1";
mysql_query($sql,$dbh); 
В Firefox и IE $note и $id выводятся правильно, ошибку не выдаёт, но скрипт не выполняется...
В Chrome $note выводится undefined, $id правильно, ошибку не выдаёт, скрипт не выполняется...

Последний раз редактировалось Green4el; 18.04.2012 в 10:34.
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 11:00   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,149
По умолчанию

прикольно .. .в запросе на обновление
Код:
 LIMIT 1
а вообще вы привели код php - куда передаются данные, а покажите ка нам код JQuery который эти данные посылает?
ADSoft вне форума Ответить с цитированием
Старый 18.04.2012, 11:03   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Параметры полей заключить в одинарные кавычки:
PHP код:
$sql "UPDATE `system_files_records` 
        SET `name` = '" 
$note "' 
        WHERE `id` = '" 
$id "' LIMIT 1"
mysql_escape_string - устаревшая функция, используйте mysql_real_escape_string.

По поводу undefined - нужна отладка передающего кода.
Andkorol вне форума Ответить с цитированием
Старый 18.04.2012, 11:03   #4
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Код:
<script type="text/javascript">		$(document).ready(function () {
		
    $(".inlineEdit").bind("dblclick", updateText);

    var OrigText, NewText;

    $(".save").live("click", function () {

        NewText = $(this).siblings("form").children(".edit").val();
        var id = $(this).parent(".inlineEdit").attr("id");
        var data = 'id=' + id + '&text=' + NewText;

        $.post("/../htm/music/update.php", data, function (response) {
            $("#music_music1").html(response);

        });

        $(this).parent().html(NewText).removeClass("selected").bind("click", updateText);

    });

    $(".revert").live("click", function () {
        $(this).parent().html(OrigText).removeClass("selected").bind("click", updateText);
    });

    function updateText() {

        $('#music_music1').removeClass("inlineEdit");
        OrigText = $(this).html();
        $(this).addClass("selected").html('<form ><input class="edit" value="' + OrigText + '"> 
</form>
<a href="#" class="save">
<img src="/../htm/music/images/save.png" border="0" width="48" height="15"/></a>
 <a href="#" class="revert">
<img src="/../htm/music/images/cancel.png" border="0" width="58" height="15"/></a>').unbind('click', updateText);

    }
});</script>
Данные берем из строки такого вида:

Код:
<div style="display:inline" class="inlineEdit" id="{file_id}">{file_name}</div>
Может быть заодно подскажите как сделать так, чтобы не исчезал мой плей-лист после изменения?

Последний раз редактировалось Green4el; 18.04.2012 в 11:17.
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 11:10   #5
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Параметры полей заключить в одинарные кавычки:
PHP код:
$sql "UPDATE `system_files_records` 
        SET `name` = '" 
$note "' 
        WHERE `id` = '" 
$id "' LIMIT 1"
mysql_escape_string - устаревшая функция, используйте mysql_real_escape_string.

По поводу undefined - нужна отладка передающего кода.
Заключил в кавычки, сделал mysql_real_escape_string, в БД всё равно не пишет.

Для отладки нужны сторонние инструменты?
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 11:13   #6
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

О, теперь началась шляпа! В Chrome запись в БД идёт, только записывает в название undefined, в Firefox ничего не записывает.
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 11:19   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Green4el Посмотреть сообщение
Для отладки нужны сторонние инструменты?
Чаще всего нет - только голова, руки и несколько функций:
mysql_error() - выводит ошибки, возникающие при запросах к MySQL.
var_dump() - выводит информацию о переменной.
echo - выводим переменные, выводим готовый SQL-запрос (для проверки).
alert() - Javascript, нужна для вывода в браузер JS-переменных(проверка их наличия и содержания).
Andkorol вне форума Ответить с цитированием
Старый 18.04.2012, 11:26   #8
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Чаще всего нет - только голова, руки и несколько функций:
mysql_error() - выводит ошибки, возникающие при запросах к MySQL.
var_dump() - выводит информацию о переменной.
echo - выводим переменные, выводим готовый SQL-запрос (для проверки).
alert() - Javascript, нужна для вывода в браузер JS-переменных(проверка их наличия и содержания).
Результат Firefox:
Код:
string(23) "День - ДиДюЛя"
string(4) "3515"
День - ДиДюЛя
3515
UPDATE `system_files_records` SET `name`='День - ДиДюЛя' WHERE `id`='3515' LIMIT 1
Результат Chrome:
Код:
string(9) "undefined"
string(4) "3515"
undefined
3515
UPDATE `system_files_records` SET `name`='undefined' WHERE `id`='3515' LIMIT 1
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 11:32   #9
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Результат alert
Код:
alert(data);
Chrome:
id=3515&text=undefined

Firefox:
id=3515&text=День ДиЛюЛя

З.Ы. Почему Firefox не пишет в базу?

Последний раз редактировалось Green4el; 18.04.2012 в 11:34.
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 11:38   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

В вашем коде значение для NewText получается через какую-то ..опу:
Код:
NewText = $(this).siblings("form").children(".edit").val();
Не уверен, что это корректно срабатывает во всех браузерах.
Передача параметров через $.post мануалом рекомендуется так:
Код:
$.post("test.php", { name: "John", time: "2pm" } );
У вас это делается в строку - также не уверен насчет кроссбраузерности этого.
Цитата:
З.Ы. Почему Firefox не пишет в базу?
mysql_error()
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись CD n_mitrofanow Win Api 11 20.04.2012 19:27
запись любого целого числа n (n<3999) арабскими цифрами перевести в запись римскими цифрами (на языке C) qazse Помощь студентам 1 24.11.2011 12:05
Запись CD buenosaire Помощь студентам 2 08.05.2010 21:31
Запись в БД Vitaliy3009 БД в Delphi 6 09.10.2009 14:43