Доброго времени суток. Топик наверняка баян, но у меня уже голов кругом. Короче суть: Есть страница с выводом списка пользователей: в таком формате Код (Text): <tr><td><h5>Никнейм:</h5></td><td><h5>   '. $row['Nick'] .' <tr><td><h5>Статус заявки:</h5></td><td><h5>   '.$Status = iconv('UTF-8', 'windows-1251', $row['Status']).'</h5></td> Вот, на той страничке где выводится список пользователей под статусом заявки есть поле для ввода нового статуса: Код (Text): <tr><td><h5>Новый статус:</h5></td><td><h5>   <input type="hiden" style="width:99%" type="text" name="Status" value="" aria-label="Новый ответ на заявку" aria-required="true" required="" title=""></h5></td> Мне нужно что бы текст введенный в форму "Новый статус заявки" заменял "Статус заявки". Мой PHP код: Код (Text): $Status = iconv('windows-1251', 'UTF-8', $_POST['Status']); $result = mysql_query ("UPDATE ancets SET Status='$Status' WHERE id='$id'"); if ($result == 'true') { echo "Данные успешно обновлены."; } else { echo "Данные не обновлены!"; Я ввожу новый статус, мне прилетает ответ "Данные успешно обновлены", но в базе по прежнему сидит старый не обновленный статус. Вот форма: Код (Text): <form action="/newstatus.php" method="POST" target="_self" onsubmit=""> В обще прошу вас, ткните пальцем туда где я налажал...
вверху этой страницы есть поиск по документации. поищи там mysql_query. глянь что он возвращает. никогда он не возвращает строку 'true'
Бред какой-то. Изменения всегда отображают, даже когда файл записываешь какая-нибудь звезда в заголовке исчезает, или там вкладка его с красной становится серой. А тут типа "усе хокей!" и досвидос. Естественно получается ТС и сам не видит ничего, ползет в пхпмайдмин, а там все по-старому. Делается вот так: update... select... и по результатам силекта - отображение. Тогда если сработало - вот оно, иначе ловить и топить программиста. ЗЫ Судя по бесконечным iconv лечить там уже нечего. Добавлено спустя 6 минут: Это субьдя всех форумов такого рода, их БД заполняют лентяи, у которых глюков на весь глобус хватит. Трудяи пытаются типа помочь лентяям, но всех не вылечишь, на место одного приходят тысячиих. Код (PHP): if(mysql_query ("UPDATE ancets SET Status='$Status' WHERE id='$id'")) $result=mysql_query ("select status from ancets WHERE id='$id'"); // отсюда в рендер, показать что вышло в результате
на самом деле проблема несколько богаче. да, топикстартер не имеет представления о типах данных и о том как PHP неявно их преобразует. но конкретно эта ошибка вызвана тем, что mysql_query('UPDATE...') возвращает признак успеха для любого выражения без ошибок. то есть если указан несуществующий id, то это синтаксически верно и не считается ошибкой. никакие данные не изменились, но результат положительный, се ля ви! (можно было бы воспользоваться функцией mysql_affected_rows() чтобы узнать сколько строк было изменено. но тут есть другая засада: если новый статус равен старому, то результат будет 0) откуда взялся $id, чему он равен — вот в чем вопрос! чтобы отладить запрос надо смотреть готовый текст, какой пойдет в mysql_query. Код (PHP): $sql = "UPDATE лалалала {$id} ололо {$hujnane}"; echo $sql; // отладка! $result = mysql_query($sql);
Дело в том, что сайт написан в 1251, а база в utf-8. Выгружать всё и пересоздавать базу мне лень. А иначе либо в базе кракозябры либо на сайте. Вот и приходится страдать такое темой. С PHP я и в правду не дружу. Так как веб вёрстка хобби, а не основное призвание. Учусь чему могу. Я думал у меня проблема в коде с выводом на страничку данных из базы...а конкретно в: Код (Text): '. $row['Nick'] .' в row. Но послушав вас вообще запутался. У меня проблема с синтаксисе update или в выводе ошибки... Пожалуйста не надо заумным языком, скажите проще.
это решается одним запросом 'set names cp1251' сразу после соединения ))) ну или аналогичным ему вызовом http://php.net/manual/ru/mysqli.set-charset Добавлено спустя 6 минут 9 секунд: ё* **** ***ь! как раз таки в синтаксисе ошибки нет. ошибка в логике: результат mysql_query('UPDATE...') всегда true, если нет синтаксической ошибки в запросе. проверь какой именно запрос ты вызываешь, наверное там id не тот. Добавлено спустя 1 минуту 56 секунд: мы земляки, кстати, но это тебя не оправдывает )))