| веб-мастеру | блог веб-мастера | Статьи Веб-Мастера | SEO Tools | книги веб-мастеру |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| EGORR |
13.1.2008, 2:08
Сообщение
#1
|
|
Новичок ![]() ![]() Группа: Свои Сообщений: 12 Регистрация: 10.1.2008 Пользователь №: 492 |
Пишу небольшой сайт. Там должен быть раздел Вопрос-Ответ.
Страница добавления в Вопрос-Ответ никаких затруднений не вызвала. А вот редактирование сообщений застопорилось на UPDATE. Ни за что не хочет апдатить! Целый день искал ошибку, все перепробывал, всё что касается UPDATE прочитал, по сети в поисках решения пошлялся... Без толку... Страница выбора сообщения для редактирования наполняется списком из базы, вставляя попутно в ссылку на обработчик ID выбранного сообщения. Код <a href=edit_faq_dg.php?idfaq='.$row['id_faq'].'>Редактировать</a> На странице обработчика беру ID из $_GET['idfaq']. Код $id = $_GET['idfaq']; По полученному ID выбираю записи ему соответствующие. Код $query = "SELECT * FROM faq WHERE id_faq= '$id'"; Раскладываю их по формам (method="POST"). До сих пор все молотит как надо. Юзер жмет submit. Получаю Код $question = $_POST['question']; $answer = $_POST['answer']; $hide = $_POST['hide'];. Пишу запрос на UPDATE Код $query = "UPDATE `faq` SET и т. д.question ='$question', answer ='$answer' WHERE id_faq =$id"; $query_result = mysql_query($query); if(!$query_result ) die ("Невозможно выполнить: " .mysql_error()); И ничего не происходит... данные нипочем не желают обновляться! Меня эта проблема уже достала! Решение наверняка окажется простым до банальности, но я него сам найти уже отчаялся. Что я напорол, где косяк, надоумьте!... |
| gid |
13.1.2008, 12:00
Сообщение
#2
|
|
Администратор форума ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 617 Регистрация: 27.11.2006 Из: Россия Пользователь №: 1 |
Да, странная ошибка.
Возможные причины: 1. У пользователя БД нет права на обновление таблиц 2. Возможно из-за версии mysql придется заменить часть запроса: Код $query = "UPDATE `faq` SET question ='$question', answer ='$answer' WHERE id_faq =$id"; на Код $query = "UPDATE `faq` SET `question` ='$question', `answer` ='$answer' WHERE `id_faq` =$id"; 3. Может быть не все данные получены верно (присутствие невидимых символов \r,\n,\t...) или вообще не получены. Поэтому перед запросом лучше всего выводить значение переменной $query, и смотреть, что в запросе не так. Если окажется что виноваты невидимые символы в конце или начале, то функция trim(), применяемая ко всем значениям полученным из $_POST[] должна помочь. -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| EGORR |
13.1.2008, 15:14
Сообщение
#3
|
|
Новичок ![]() ![]() Группа: Свои Сообщений: 12 Регистрация: 10.1.2008 Пользователь №: 492 |
Спасибо за ответ.
1. Права разрулены норально. Обновление другого раздела проходит без проблем. 2. Я об этом думал. Пробовал. Результат - 0! Похоже не в этом дело! 3. поскольку данные берутся из БД, они уже обработаны, и тримом в том числе. Пробуя, я не вносил никаких зарез-ных символов. Но результат по-прежнему - 0! Меня эта проблема просто бесит! Стала навязчивой идеей. |
| gid |
13.1.2008, 16:56
Сообщение
#4
|
|
Администратор форума ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 617 Регистрация: 27.11.2006 Из: Россия Пользователь №: 1 |
А если этот же самый проблемный запрос через phpMyAdmin попробовать выполнить? Может он какую ни будь ошибку выдаст.
Еще может быть, но маловероятно что поможет: сделать поле id_faq индексом для таблицы. А вообще, можно на весь код взглянуть (как скрипта, так и на структуру таблицы), может что увижу, чего не видите вы? -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| EGORR |
13.1.2008, 20:00
Сообщение
#5
|
|
Новичок ![]() ![]() Группа: Свои Сообщений: 12 Регистрация: 10.1.2008 Пользователь №: 492 |
Код <?php require_once('../../../www/config.php'); $id = intval($_GET['idfaq']); $query = "SELECT * FROM faq WHERE id_faq= '$id'"; $result = mysql_query($query); $row = mysql_fetch_array($result); ?> <form action="<? echo $PHP_SELF; ?>" method="POST" style="margin:5px"> ID<br /> <input name="id" type="text" id="id" value="<?php echo $row['id_faq']; ?>" size="50" /> <br> Вопрос<br /> <textarea name="question" cols="50" rows="3" id="question"><?php echo $row['question']; ?></textarea> <br>Ответ<br /> <textarea name="answer"cols="50" rows="3" id="answer"><?php echo $row['answer']; ?></textarea> <br> Статус сообщения<br /> <select name="hide" id="hide"> <option value="show" <?php if (!(strcmp("show", $row['hide']))) {echo "selected=\"selected\"";} ?>>ВКЛЮЧЕН</option><option value="hide" <?php if (!(strcmp("hide", $row['hide']))) {echo "selected=\"selected\"";} ?>>ВЫКЛЮЧЕН</option> </select> <br /><br /> <input type="submit" name="faq_button" id="faqe_button" value="Изменить"> </form> <?php $id_1 = $row['id_faq']; $question = $_POST['question']; $answer = $_POST['answer']; $hide = $_POST['hide']; $link = mysql_connect($dblocation,$dbuser,$dbpasswd); $db = mysql_select_db($dbname,$link); $query = "UPDATE `faq` SET question ='.$question.', answer ='.$answer.' WHERE id_faq ='.$id.'"; $query_result = mysql_query($query, $link); if(!$query_result ) die ("Невозможно выполнить: " .mysql_error()); echo "<h2>Запись обновлена ".mysql_affected_rows()."</h2>"; ?> Цитата А если этот же самый проблемный запрос через phpMyAdmin попробовать выполнить? Спасибо! Ща попробую! Поле id_faq и есть индекс (int(11), auto_increment PRIMARY) |
| gid |
13.1.2008, 20:08
Сообщение
#6
|
|
Администратор форума ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 617 Регистрация: 27.11.2006 Из: Россия Пользователь №: 1 |
Ошибку можно сказать нашол:
Код $db = mysql_select_db($dbname,$link); $query = "UPDATE `faq` SET question ='.$question.', answer ='.$answer.' WHERE id_faq ='.$id.'"; должно быть: Код $db = mysql_select_db($dbname,$link); $query = "UPDATE `faq` SET question ='$question', answer ='$answer' WHERE id_faq ='$id'"; Всему виной точки, которыми вы возможно хотели соединить значения переменных и текст... -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| EGORR |
13.1.2008, 20:12
Сообщение
#7
|
|
Новичок ![]() ![]() Группа: Свои Сообщений: 12 Регистрация: 10.1.2008 Пользователь №: 492 |
gid, вот спасибо!
Я-то просой вещи не догнал. Сейчас средствами phpMyAdmin был сделан запрос. Код SQL-запрос: UPDATE `faq` SET `question` = 'Какие новости?', `answer` = 'Нет никаких новостей' WHERE `id_faq` = '44' Без малейших замечаний. Ни один МуСкуL не дрогнул! Значит ошибка в PHP! Круг сузился. Проблему это не решает, но надежду дает! Уважаемый модер, преноси топик в PHPовый форум, а то ругаться за оффтоп станешь. |
| EGORR |
13.1.2008, 22:18
Сообщение
#8
|
|
Новичок ![]() ![]() Группа: Свои Сообщений: 12 Регистрация: 10.1.2008 Пользователь №: 492 |
Ошибку можно сказать нашол: Код $db = mysql_select_db($dbname,$link); $query = "UPDATE `faq` SET question ='.$question.', answer ='.$answer.' WHERE id_faq ='.$id.'"; должно быть: Код $db = mysql_select_db($dbname,$link); $query = "UPDATE `faq` SET question ='$question', answer ='$answer' WHERE id_faq ='$id'"; Всему виной точки, которыми вы возможно хотели соединить значения переменных и текст... Нет, это я от полного отчаянья все возможные и невозможные варианты написания пробовал. Убрал я эти точки. Делал обработку mysql_real_escape_string-ом, trim-ом. Все бесполезно! Не работает!.... |
| gid |
13.1.2008, 22:34
Сообщение
#9
|
|
Администратор форума ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 617 Регистрация: 27.11.2006 Из: Россия Пользователь №: 1 |
А если сделать проверку на валидность соединения с mysql-сервером и выбор БД? Может проблема возникает еще до выполнения запроса?
-------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| EGORR |
14.1.2008, 0:01
Сообщение
#10
|
|
Новичок ![]() ![]() Группа: Свои Сообщений: 12 Регистрация: 10.1.2008 Пользователь №: 492 |
Проблема решена!
Подсказал уважаемый jbs с родственного форума. Дело было в том, что до запроса не доходило значение $id. И в точках. Вот рабочий код Код <?php require_once('../../../www/config.php'); $id = intval($_GET['idfaq']); $query = "SELECT * FROM faq WHERE id_faq= '$id'"; $result = mysql_query($query); $row = mysql_fetch_array($result); ?> <form action="<? echo $PHP_SELF; ?>" method="POST" style="margin:5px"> ID<br /> <input name="id" type="text" id="id" value="<?php echo $row['id_faq']; ?>" size="50" /> <br> Вопрос<br /> <textarea name="question" cols="50" rows="3" id="question"><?php echo $row['question']; ?></textarea> <br>Ответ<br /> <textarea name="answer"cols="50" rows="3" id="answer"><?php echo $row['answer']; ?></textarea> <br> Статус сообщения<br /> <select name="hide" id="hide"> <option value="show" <?php if (!(strcmp("show", $row['hide']))) {echo "selected=\"selected\"";} ?>>ВКЛЮЧЕН</option><option value="hide" <?php if (!(strcmp("hide", $row['hide']))) {echo "selected=\"selected\"";} ?>>ВЫКЛЮЧЕН</option> </select> <br /><br /> <input type="submit" name="faq_button" id="faqe_button" value="Изменить"> </form> <?php $id = $_POST['id']; $question = $_POST['question']; $answer = $_POST['answer']; $hide = $_POST['hide']; $link = mysql_connect($dblocation,$dbuser,$dbpasswd); $db = mysql_select_db($dbname,$link); $query = "UPDATE faq SET question ='$question', answer ='$answer' WHERE id_faq ='$id'"; $query_result = mysql_query($query, $link); if(!$query_result ) die ("Невозможно выполнить: " .mysql_error()); echo "<h2>Запись обновлена ".mysql_affected_rows()."</h2>"; ?> Спасибо всем, кто откликнулся! |
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 25.7.2008, 17:14 |