Разворачиваю форму со значениями с БД, все работает и по своим полям размечено. Редактируется как надо. А вот после редактирования не могу сохранить обратно в БД, просто очищает поля. Видимо я не правильно получаю данные с Формы. Прошу вас, опытных программистов, подсказать новичку! PHP: if($option == "edit") { $sqledit = "SELECT * from news where id=$id"; $resedit = mysql_query($sqledit); $dataedit = mysql_fetch_array($resedit); echo "<form action='#' method='POST' enctype='multipart-form/data'>"; echo "<input type='text' name='title' value='$dataedit[title]'>"; echo "<input type='text' name='img' value='$dataedit'>"; echo "<input type='text' name='intro' value='$dataedit[intro]'>"; echo "<textarea rows='25' cols='80' name='content'>$dataedit[content]</textarea>".'<br>'; echo "<input type='submit' name='editsave' value='save'"."<br>"; echo "</form>"; $id = $_POST[id]; $title = $_POST[title]; $img = $_POST[img]; $intro = $_POST[intro]; $content = $_POST[content]; $update_sql = "UPDATE news SET title='$title', img='$img', intro='$intro', content='$content' WHERE id='$id'"; mysql_query($update_sql) or die("Ошибка вставки" . mysql_error());
$sqledit = "SELECT * from news where id=$id"; откуда берется переменная $id ? --- Добавлено --- $_POST - [id][title][intro] почему ключи пишутся не в апострофах " ?
PHP: $table.="<a href='server.php?id=$data[id]&option=edit'>Редактировать новость</a>"; $id = $_GET[id]; if($option == "edit") { $sqledit = "SELECT * from news where id=$id"; $resedit = mysql_query($sqledit); $dataedit = mysql_fetch_array($resedit); echo "<form action='#' method='POST' enctype='multipart-form/data'>"; echo "<input type='text' name='title' value='$dataedit[title]'>"; echo "<input type='text' name='img' value='$dataedit[img]'>"; echo "<input type='text' name='intro' value='$dataedit[intro]'>"; echo "<textarea rows='25' cols='80' name='content'>$dataedit[content]</textarea>".'<br>'; echo "<input type='submit' name='editsave' value='save'"."<br>"; echo "</form>"; $id = $_POST["id"]; $title = $_POST["title"]; $img = $_POST["img"]; $intro = $_POST["intro"]; $content = $_POST["content"]; $update_sql = "UPDATE news SET title='$title', img='$img', intro='$intro', content='$content' WHERE id='$id'"; mysql_query($update_sql) or die("Ошибка вставки" . mysql_error()); Мой преподаватель сказал, что это задание на дом сложное.. Но я сразу и не поверил, а теперь голову ломаю и ответы ищу..
Самая простая отладка: PHP: echo $update_sql ; перед mysql_query() вставь и посмотри какой запрос ты отправляешь.И на будущее,не используй mysql,его убрали из 7 ветки.Либо mysqli либо PDO.И второе тоже на будущее,никогда не принимай так данные: PHP: $id = $_POST["id"]; Это крайне небезопасно Используй filter_var() или filter_input()
Спасибо большое за советы, приму к сведению и почитаю об этом подробнее. На сегодня я этого не знаю пробовал Вот что выводит эко PHP: UPDATE news SET title='', img='', intro='', content='' WHERE id='' PHP: UPDATE news SET title='qwerty', img='qwerty', intro='qwerty', content='qwerty' WHERE id=''
Всех люблю, очень счастлив!!! Спасибо за помощь и советы, убрал $id=$_POST["id"]; (Потому что сверху $id = $_GET[id] у меня из другой формы приходит] .. И все работает !!!
А теперь тебе немного сверху, что препод наверняка оценит: 1) перепиши все с mysql_ на mysqli_. Расширение mysql_ устарело и удалено из новых версий PHP. На замену ему пришло mysqli_, оно более удобное и безопасное. Переписать код с одного расширения на другое не сложно. Они похожи. 2) Почитай про sql-инъекции. И обработай все значения, получаемые из форм через mysqli_real_escape_string;
Огромное Вам спасибо! Все опробую, очень интересно и занимательно! И душу греют ответы опытных людей! Спасибо, тему закрываю! Или не закрываю, кнопку не нашел! Рад, счастлив, проблема исчерпана !
Переписав на mysqli выдает тонну ошибок, видимо для начала нужно прочитать об этом.. Вся ночь впереди. Прочту, спасибо! Это вовсе не понял пока. ООП только начинает открываться для меня, я очень и очень начинающий "неПрограммист" )
А если бы внимательно прочитал документацию,то увидел бы,что наряду с ООП, для тех кто не знаком с ним есть и процедурный стиль: PHP: $link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* проверка соединения */ if (mysqli_connect_errno()) { printf("Не удалось подключиться: %s\n", mysqli_connect_error()); exit(); } mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City"); $city = "'s Hertogenbosch"; /* этот запрос вызовет ошибку, так как мы не экранировали $city */ if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) { printf("Ошибка: %s\n", mysqli_sqlstate($link)); } $city = mysqli_real_escape_string($link, $city); /* этот запрос отработает нормально */ if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) { printf("%d строк вставлено.\n", mysqli_affected_rows($link)); } mysqli_close($link);
Прочитал, но понял слишком мало, пожалуй, чтобы попробовать.. Но до сдачи Домашнего задания еще почти двое суток, так что я обязательно разберусь и попробую. Спасибо!
как же хочется прикинуться учеником препода, чтобы забабахать такой код, о которого у него качан бы почесался (с). В свое время любил спорить с учителями информатики, в колледже информат разделили на ( неок люблю) и (вообще отстой). Изучали бейсик и прочее дребедень, пока сам один в тихоря ковырялся в своем сайте.
Ты просто не поднимал планку сложности. переписать на mysqli_ не значит "просто i везде добавить". Это значит "почитать документацию, понять, как работает mysqli, сравнить с mysql, понять, в чем различия, переписать код с учетом различий". Если бы разница между ними была только в одной буковке в названиях, никто бы не стал заморачиваться с написанием нового адаптера к БД, верно? Как было сказано выше, там есть и процедурный интерфейс.
Спасибо. Ознакомлюсь, перепишу и поделюсь результатом Вообще учусь не в ВУЗе, а на курсах ускоренных.. за 25 часов с нуля надо знать php/javascript/html/css ... Преподаватель говорит, что нужно использовать mysql т.к. могут быть проблемы с совместимостью при работе msqli и для меня, возможно, это будет слишком сложно на начальном этапе )
Гони его санными тряпками. Сам подумай, mysql удалили и когда ты закончишь курсы и захочешь что-то сделать, ставишь PHP 7.1 и оп, там уже нету mysql, там mysqli (прочувствовал подставу). Ладно если он не хочет тебя нагружать ООП, так mysqli доступна и в процедурном стиле! В PHP 5.6 ещё есть mysql но там из всех щелей лезут предупреждение что его удалят, и по факту уже удалили в PHP 7. Скоро PHP 5.6 перестанут поддерживать. Но ты всегда сможешь покопаться в старом проекте с mysql (почитаешь документацию, ничего сложного), но учить лучше сразу с mysqli. Это очень важно.
+1 Препод - некомпетентное говно. --- Добавлено --- Хотелось бы отдельно услышать перечень проблем с совместимостью. И перечень сложностей. Проблемы с совместимостью могуть быть только у человека, который до сих пор работает в php4+ и считает, что php5 вышел совсем недавно и его еще половина хостингов не поддерживает.
Примерно так и говорит .. Но, совсем скоро начнутся новые курсы с более продвинутой программой и преподавателями, может там будет чуть более свежая информация) --- Добавлено --- Спасибо. Поищу информацию о разнице mysql и mysqli и перепишу то, что уже есть. Я учу php 2 недели и раньше с программированием не сталкивался. Просто стало интересно, нашел курсы в своем городе за 37500 за 25 ак/ч .... --- Добавлено --- Сегодня на занятии я преподу сказал, что меня забросали камнями за mysql и сказали, что он давно умер... Он в ответ посмеялся и сказал никого не слушать
Ну ты можешь конечно никого не слушать,но документацию нельзя игнорировать) Спойлер: img https://secure.php.net/manual/ru/function.mysql-query.php
Спасибо! Я только ЗА то, чтобы делать правильно! Увидел небольшую задачку в разделе "Как быстро освоить PHP" .. Хочу попробовать ее выполнить и сразу же с освоением mysqli и всего, что успею прочесть за время выполнения ) Думаю уйдет не мало времени, но очень интересно ))
Бро. Я бы забрал деньги и ушел учиться самостоятельно. Да хоть сюда же на форум. Ты, главное, спрашивай. Тебе тут и литературу подберут, и с документацией помогут. И непонятное разъяснят. Бесплатно. Если желание и способности есть, а, похоже, что есть, лучше последуй этому совету. Ты за один тред на этом форуме уже о PHP, походу, узнал больше, чем до этого на курсах. Твой преподаватель некомпетентен. Это не мнение диванного эксперта. Он объективно некомпетентен. И, что хуже, из-за своей некомпетентности он не осознает, что он некомпетентен. Считая, что ему виднее, чем разработчикам языка, что устарело, а что нет. Он пытается учить людей тому, чего не знает сам. За деньги. Это капец.