Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13

Не работает UPDATE

04.04.2018, 15:03. Показов 2985. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
В общем у меня такая проблема, при редактировании записей когда я жму обновить у меня пишет Ваш урок успешно обновлён! но в базу никаких изменений не происходят, да и ошибок в коде вроде нету.
УЖЕ БЫЛА ТАКАЯ ТЕМА, но у меня не получилось как у автора темы.
Вообщем $result = mysql_query("UPDATE lessons SET title='$title', meta_d='$meta_d', meta_k='$meta_k', date='$date', description='$description', text='$text', author='$author' WHERE id='$id'"); Пробовал тут стереть WHERE id='$id' , тогда все работает, но все записи в базе редактируются одинаково.

Вот код файла edit_lessons.php
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php 
include ("lock.php");
include ("block/db.php");
if(isset($_GET['id'])) {$id = $_GET['id'];}/*если существует глоб перменная id то нудно в это случае создать простую переменную и присвоить значение глобальной перменной*/
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
    <title>Страница обновления урока</title>
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 
    <link rel="stylesheet"  href="style.css" type="text/css" media="screen" />
</head>
<body>
<table border="0" align="center" bordercolor="black"  width="852" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
    <?php include ("block/header.php"); ?>
    <tr>
    <?php include ("block/lefttd.php"); ?>
            <td class="top">
                <?php
                if (!isset($id))/*выводить id и title таблицы lessons только тогда, когда перменной id не существует*/
                {
                $result = mysql_query("SELECT title,id FROM lessons");/*вытаскиваем 2 поля в переменную*/
                $myrow = mysql_fetch_array($result); /*переменная в массиве по первому уроку*/
                do
                {
                    printf("<p><a href='edit_lessons.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]); /*вывести название данного урока и ссылку id*/
                }
                while ($myrow = mysql_fetch_array($result));/*выполнять пдо тех пор пока условие выполянется*/
                }
                else/*иначе выводи форму*/
                {
                    $result = mysql_query("SELECT * FROM lessons WHERE  id=$id");
                $myrow = mysql_fetch_array($result);                     
print <<<HERE
<form name="form1" method="post" action="update_lessons.php">
                    <p>
                        <label>Введите название урока<br>
                            <input value="$myrow[title]" type="text" name="title" id="title">
                        </label>
                    </p>
                    <p>
                        <label>Введите краткое описание урока<br>
                            <input value="$myrow[meta_d]" type="text" name="meta_d" id="meta_d">
                        </label>
                    </p>
                        <p>
                        <label>Введите ключевые слова урока<br>
                            <input value="$myrow[meta_d]" type="text" name="meta_k" id="meta_k">
                        </label>
                    </p>
                        <p>
                        <label>Введите дату добавления урока<br>
                            <input value="$myrow[meta_d]" type="text" name="date" id="date" value="2018-04-01">
                        </label>
                    </p>
                    <p>
                        <label>Введите краткое описание урока с тегами абзацев<br>
                            <textarea name="description" id="description" cols="42" rows="5">$myrow[description]</textarea>
                        </label>
                    </p>
                    <p>
                        <label>Введите полный текст урока с тэгами<br>
                            <textarea name="text" id="text" cols="42" rows="20">$myrow[text]</textarea>
                        </label>
                    </p>
                    <p>
                        <label>Введите автора урока<br>
                            <input  value="$myrow[author]" type="text" name="author" id="author">
                        </label>
                    </p>
                    <imput name="id" type="hidden" value="$myrow[id]"> 
                    <p>
                        <label>
                            <input type="submit" name="submit" id="submit" value="Сохранить изменения">
                        </label>
                    </p>
                </form>
HERE;
 //<imput name="id" type="hidden" value="$myrow[id]">  какой урок нужно обновить
                }
                ?>
            </td>
        </tr>
        </table> </td>
    </tr>
    <?php include ("block/footer.php"); ?>
</table>
</body>
</html>
Файл update_lesson.php
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
include ("lock.php");
include("block/db.php");
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}} 
/*если существует в глобальном массиве $_POST['title'] ячейка, то мы создаем простую перменную из нее.Если переменная пустая, то уничтожаем переменную */
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}
if (isset($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset($author);}}
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
    <title>Обработчик</title>
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 
    <link rel="stylesheet"  href="style.css" type="text/css" media="screen" />
</head>
<body>
<table border="0" align="center" bordercolor="black"  width="852" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
    <?php include ("block/header.php"); ?>
    <tr>
    <?php include ("block/lefttd.php"); ?>
            <td class="top">
            <?php
            if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text) && isset($author))/* если у нас существуют переменные*/
            {
            $result = mysql_query("UPDATE lessons SET title='$title', meta_d='$meta_d', meta_k='$meta_k', date='$date', description='$description', text='$text', author='$author' WHERE id='$id'");
            /*обновляем инфу в базе поля - переменные*/
                if ($result == 'true') {echo "<p>Ваш урок успешно обнавлен!</p>";}
                else {echo "<p>Ваш урок не обнавлен!</p>";}
            }
            else
            {
                echo "<p>Вы ввели не всю информацию, поэтому урок в базу не может быть обновлен.</p>";
            }
            ?>
            </td>
        </tr>
        </table> </td>
    </tr>
    <?php include ("block/footer.php"); ?>
</table>
</body>
</html>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2018, 15:03
Ответы с готовыми решениями:

Триггер с after update не работает, а с for update работает
Не могу понять, почему так происходит? В нэте пишут, что after/for это the same . Но все же. В начале прописал AFTER UPDATE и этот триггер...

Не работает изменение, не могу понять почему, Update не работает, ошибку выдает
Помогите, изменение с помощью button string u = заявкиDataGridView.CurrentRow.Cells.Value.ToString(); ...

Почему не работает Update, но работает аналогичный Delete?
В xmal есть datagrid в него подтянута из базы информация. Название и количество. Надо сделать во viewmodel кнопки delete и update. Delete ...

25
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
04.04.2018, 21:52
просто, последите начальный путь id - и найдете ошибку

сначала выведите

PHP
1
echo $myrow['id'];
потом

PHP
1
echo $_POST['id'] или $id
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
06.04.2018, 13:42  [ТС]
Не помогло, не выводит.
Уже не знаю, что делать. Походу 100% что-то с id.
Кто-нибудь может помочь с готовым кодом где исправлена ошибка?
ДАнный способ редактирование данных на сайте взял с видеоуроков Попова, у него работает, у меня нет..
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
06.04.2018, 15:03
laron88, попробуйте вот так:

PHP
1
$result = mysql_query("UPDATE `lessons` SET `title`= \"$title\", `meta_d` = \"$meta_d\", `meta_k` = \"$meta_k\", `date` = \"$date\", `description` = \"$description\", `text = \"$text\", `author` = \"$author\" WHERE `id` = \"$id\" ");
Если не получиться, попробуйте по одной колонке изменять:

PHP
1
$result = mysql_query("UPDATE `lessons` SET `title`= \"$title\" WHERE `id` = \"$id\" ");
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
06.04.2018, 15:46
Цитата Сообщение от laron88 Посмотреть сообщение
Не помогло, не выводит.
что не выводит не существует id? в каком месте когда из базы береет и ли когда форму отправляйте?
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
07.04.2018, 09:33  [ТС]
Цитата Сообщение от andyyy Посмотреть сообщение
что не выводит не существует id? в каком месте когда из базы береет и ли когда форму отправляйте?
Хорошо. В каком месте кода вы имели ввиду это надо вывести?

Добавлено через 1 минуту
Atanov, увы не помогло.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
07.04.2018, 10:41
laron88, так Вы же не вняли совету коллеги andyyy, проследить путь id. Для скрипта edit_lessons.php переменная $id присваивается из массива GET, строка 4. Далее, в edit_lessons.php есть форма (начинается со строки 36). У этой формы указан обработчик в 37 строке: update_lessons.php. Нажав на кнопку, строка 76, Вы запускаете обработчик и перезагружаете страницу; и переменная $id благополучно помирает. Поэтому-то дальнейшие танцы с бубнами и без бесполезны, пока Вы переменную в update_lessons.php не передадите.
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
07.04.2018, 14:30  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
laron88, так Вы же не вняли совету коллеги andyyy, проследить путь id. Для скрипта edit_lessons.php переменная $id присваивается из массива GET, строка 4. Далее, в edit_lessons.php есть форма (начинается со строки 36). У этой формы указан обработчик в 37 строке: update_lessons.php. Нажав на кнопку, строка 76, Вы запускаете обработчик и перезагружаете страницу; и переменная $id благополучно помирает. Поэтому-то дальнейшие танцы с бубнами и без бесполезны, пока Вы переменную в update_lessons.php не передадите.
<imput name="id" type="hidden" value="$myrow[id]"> данная строка кода не передает переменную id?
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
07.04.2018, 16:59
laron88, судя по всему нет.
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
07.04.2018, 17:45  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
laron88, судя по всему нет.
Если вам скину свой сайт и базу сможете помочь? Готов даже рублей 200 перевести за потраченное время)
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
07.04.2018, 21:54
laron88, выкладывайте, и версии php и mysql. Завтра утром посмотрю, может смогу помочь.
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
08.04.2018, 19:04  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
laron88, выкладывайте, и версии php и mysql. Завтра утром посмотрю, может смогу помочь.
это сайт и база.
Логин: php
Пароль: 123456
Версия PHP: 5.5.38
Версия сервера: 5.6.38 - MySQL Community Server (GPL)
phpMyAdmin версии: 4.7.7
вроде бы все, пароль и логин к админке сайта есть в базе. логин phpuser пароль php
Вложения
Тип файла: rar localhost.rar (6.12 Мб, 1 просмотров)
Тип файла: rar baza.rar (12.2 Кб, 1 просмотров)
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
09.04.2018, 11:50
laron88, блин, ну как же я сразу не увидел - в добавлениях у Вас нету добавление для поля id таблицы!
Итак в Вашем файле add_lessons.php, строка с переменной $result должна выглядеть так:

PHP
1
$result = mysql_query("INSERT INTO `название Вашей базы`.`lessons` (`id`,`title`,`meta_d`,`meta_k`,`date`,`description`,`text`,`author`) VALUES (NULL, \"$title\",\"$meta_d\",\"$meta_k\",\"$date\",\"$description\",\"$text\",\"$author\")");
Везде, где вставка в базу нужно указать для id значение NULL, т.к. в таблице указан автоинкремент для этого поля.

Некоторые замечания по оформлению.
1. mysql нужно менять, причём незамедлительно, т.к. в современном php эта библиотека исключена; возможно на некоторое время использовать mysqli. А лучше сразу перейти на pdo.
2. у Вас оформлены стили, зачем куча стилей прописывается в обломках html'ей? Выносите всё в файлы стилей. Табличная вёрстка - у многих web'ов к ней неоднозначное отношение, вплоть до икоты. Лучше на современный манер css переделать.
3. у Вас масса всевозможных проверок isset - зачем? Вы и так проверили при POST'ах в обработчик, зачем ещё раз проверять?
4. пока Вы отлаживаете код, сделайте вывод ошибок в начале первых php файлов
PHP
1
error_reporting(E_ALL);
полезно будет.

А сайт интересный у Вас будет!

Да и ещё, у Вас где-то я видел проверку:

PHP
1
if ($result == 'true')
При удачно выполнении $result вроде 1 вернёт, не уверен, что true правильное условие. Если уже хотите проверить оставьте
PHP
1
if ($result)
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
09.04.2018, 17:30  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
laron88, блин, ну как же я сразу не увидел - в добавлениях у Вас нету добавление для поля id таблицы!
Итак в Вашем файле add_lessons.php, строка с переменной $result должна выглядеть так:

PHP
1
$result = mysql_query("INSERT INTO `название Вашей базы`.`lessons` (`id`,`title`,`meta_d`,`meta_k`,`date`,`description`,`text`,`author`) VALUES (NULL, \"$title\",\"$meta_d\",\"$meta_k\",\"$date\",\"$description\",\"$text\",\"$author\")");
Везде, где вставка в базу нужно указать для id значение NULL, т.к. в таблице указан автоинкремент для этого поля.

Некоторые замечания по оформлению.
1. mysql нужно менять, причём незамедлительно, т.к. в современном php эта библиотека исключена; возможно на некоторое время использовать mysqli. А лучше сразу перейти на pdo.
2. у Вас оформлены стили, зачем куча стилей прописывается в обломках html'ей? Выносите всё в файлы стилей. Табличная вёрстка - у многих web'ов к ней неоднозначное отношение, вплоть до икоты. Лучше на современный манер css переделать.
3. у Вас масса всевозможных проверок isset - зачем? Вы и так проверили при POST'ах в обработчик, зачем ещё раз проверять?
4. пока Вы отлаживаете код, сделайте вывод ошибок в начале первых php файлов
PHP
1
error_reporting(E_ALL);
полезно будет.

А сайт интересный у Вас будет!

Да и ещё, у Вас где-то я видел проверку:

PHP
1
if ($result == 'true')
При удачно выполнении $result вроде 1 вернёт, не уверен, что true правильное условие. Если уже хотите проверить оставьте
PHP
1
if ($result)
Я сделал как вы сказали, теперь пишет: Ваш урок не добавлен!
Хотя до этого добавление работало. Странно, а у вас работает получается?
у меня же id со старым кодом добавлялся в базу автоматом
А что на счет UPDATE, я же на счет него думал поможете?
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
09.04.2018, 17:42
В файл add_lessons.php, обломок php скрипта, начинающийся со строки 24 замените на вот этот:

PHP
1
2
3
4
$sql = "INSERT INTO `locall`.`lessons` (`id`,`title`,`meta_d`,`meta_k`,`date`,`description`,`text`,`author`) VALUES (NULL, \"$title\",\"$meta_d\",\"$meta_k\",\"$date\",\"$description\",\"$text\",\"$author\")";
$result = mysql_query($sql);
if ($result) {echo "<p>Ваш урок успешно добавлен!</p>";}
else {echo "<p>Ваш урок не добавлен!</p>";}
У меня работает; и у Вас должен работать. Скрины ниже.

UPDATE посмотрю попозже.
Миниатюры
Не работает UPDATE   Не работает UPDATE   Не работает UPDATE  

Не работает UPDATE  
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
09.04.2018, 17:56  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
В файл add_lessons.php, обломок php скрипта, начинающийся со строки 24 замените на вот этот:

PHP
1
2
3
4
$sql = "INSERT INTO `locall`.`lessons` (`id`,`title`,`meta_d`,`meta_k`,`date`,`description`,`text`,`author`) VALUES (NULL, \"$title\",\"$meta_d\",\"$meta_k\",\"$date\",\"$description\",\"$text\",\"$author\")";
$result = mysql_query($sql);
if ($result) {echo "<p>Ваш урок успешно добавлен!</p>";}
else {echo "<p>Ваш урок не добавлен!</p>";}
У меня работает; и у Вас должен работать. Скрины ниже.

UPDATE посмотрю попозже.
я понял в чем была ошибка, у меня название базы localhost, а у вас locall поэтому он и не понимал, что делать)
хорошо, подожду
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
09.04.2018, 18:10
Да, верно, забыл предупредить. Теперь про UPDATE, в файле edit_lessons.php, 33 строка, начало else до print заменяете на:

PHP
1
2
3
$sql = "SELECT * FROM `название Вашей базы`.`lessons` WHERE id = \"$id\"";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
Всё выводится. Запись отредактированного, похоже на запись нового:

в файлу update_lessons.php, строку 32 меняете на:
PHP
1
2
$sql = "UPDATE `название Вашей базы`.`lessons` SET title = \"$title\", meta_d=\"$meta_d\", meta_k=\"$meta_k\", date=\"$date\", description=\"$description\", text=\"$text\", author=\"$author\" WHERE id = \"$id\"";
$result = mysql_query($sql);
34 if меняете на:

PHP
1
2
if ($result) {echo "<p>Ваш урок успешно обновлен!</p>";}
                else {echo "<p>Ваш урок не обновлен!</p>";}
Дальше блох надо будет вылавливать, код надо бы перелопатить на предмет ошибок. А лучше бы Ваш код переделать. Авторизация очень сомнительная, взломают
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
09.04.2018, 19:28  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
Да, верно, забыл предупредить. Теперь про UPDATE, в файле edit_lessons.php, 33 строка, начало else до print заменяете на:

PHP
1
2
3
$sql = "SELECT * FROM `название Вашей базы`.`lessons` WHERE id = \"$id\"";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
Всё выводится. Запись отредактированного, похоже на запись нового:

в файлу update_lessons.php, строку 32 меняете на:
PHP
1
2
$sql = "UPDATE `название Вашей базы`.`lessons` SET title = \"$title\", meta_d=\"$meta_d\", meta_k=\"$meta_k\", date=\"$date\", description=\"$description\", text=\"$text\", author=\"$author\" WHERE id = \"$id\"";
$result = mysql_query($sql);
34 if меняете на:

PHP
1
2
if ($result) {echo "<p>Ваш урок успешно обновлен!</p>";}
                else {echo "<p>Ваш урок не обновлен!</p>";}
Дальше блох надо будет вылавливать, код надо бы перелопатить на предмет ошибок. А лучше бы Ваш код переделать. Авторизация очень сомнительная, взломают
Все сделал как вы и сказали. Старые записи пишет: Ваш урок не обновлен! (это не страшно, можно их пересоздать)
А новые как и раньше: Ваш урок успешно обновлен! (но обновления в базе не происходит)
Очень странно, все как у вас, но не хочет обновлять..

Да знаю, что код не очень и авторизация тоже, мне для курсовой сайт нужен. И я сомневаюсь, что кто-нибудь захочет взломать шахматный сайт)
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
10.04.2018, 08:01
Цитата Сообщение от laron88 Посмотреть сообщение
Все сделал как вы и сказали. Старые записи пишет: Ваш урок не обновлен! (это не страшно, можно их пересоздать)
А новые как и раньше: Ваш урок успешно обновлен! (но обновления в базе не происходит)
Очень странно, все как у вас, но не хочет обновлять..
Не расстраивайтесь, у меня тоже не обновляется И вот по какой причине: в файле edit_lessons синтаксическая ошибка в строке 76 вместо input стоит imput. Поэтому id не передавался. Исправьте и внимательно проверьте sql запросы:

PHP
1
2
$sql = "UPDATE `locall`.`lessons` SET `title` = \"$title\", `meta_d` = \"$meta_d\", `meta_k` = \"$meta_k\", `date` = \"$date\", `description` = \"$description\", `text` = \"$text\", `author` = \"$author\" WHERE `id` = \"$id\" ";
$result = mysqli_query($db, $sql);
После исправлений у меня стало редактирование работать и у Вас заработает.

Не забудьте поменять этот кусок: `locall`.`lessons` на `название Вашей базы`.`lessons`
0
0 / 0 / 0
Регистрация: 04.10.2017
Сообщений: 13
10.04.2018, 13:11  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
Не расстраивайтесь, у меня тоже не обновляется И вот по какой причине: в файле edit_lessons синтаксическая ошибка в строке 76 вместо input стоит imput. Поэтому id не передавался. Исправьте и внимательно проверьте sql запросы:

PHP
1
2
$sql = "UPDATE `locall`.`lessons` SET `title` = \"$title\", `meta_d` = \"$meta_d\", `meta_k` = \"$meta_k\", `date` = \"$date\", `description` = \"$description\", `text` = \"$text\", `author` = \"$author\" WHERE `id` = \"$id\" ";
$result = mysqli_query($db, $sql);
После исправлений у меня стало редактирование работать и у Вас заработает.

Не забудьте поменять этот кусок: `locall`.`lessons` на `название Вашей базы`.`lessons`
мдаа о моя невнимательность.. грубо ошибся
теперь обновляет, огромное спасибо.
я вам уже сильно надоел, я знаю)
но можно последний вопрос: почему у меня все пункты главного меню работают нормально, но головоломка и о нас, при переходе на эти страницы, сайт немного смещается. почему так? ведь для всех страниц стоит стандарт.

Добавлено через 21 минуту
atanov, Сейчас кстати не могу понять в чем прикол, текст который пишу от балды добавляется и пишет ваш урок добавлен, но осмысленные уроки не добваляются точнее, когда начинаю писать поле текст:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<h3>История шахмат</h3>
<p>Происхождение шахмат не совсем ясно, хотя большинство полагает, что они возниклииз шахматно-
подобных игр(Чатуранга),которые существовали в Индии почти две тысячи лет назад. Игра в шахматы
такая, какую мы ее знаем, существовала в 15 веке, будучи популярной в Европе.</p>
                                                                             
<h3>Цель игры</h3>
<p> Шахматы - это игра между двумя соперниками, фигуры которых расположены напротивоположных 
сторонах доски, содержащей 64 поля двух разных (обычно черного и белого) цветов. У каждого
игрока в начале игры по 16 фигур: 1 король, 1 ферзь, 2 слона, 2 коня и 8 пешек.Цель игры —
поставить мат королю противника. Мат - это ситуация, в которой у короля нет  возможности уйти от
шаха (все поля вокруг него заняты своими фигурами либо находятся под ударом фигур противника),
нет возможности закрыться от  шаха другой фигурой и нет возможности взять фигуру, объявившую
шах.</p>
<center><img src="img/deb.jpg"></center>
 
<h3><Начало игры</h3>
<p>В начале игры шахматная доска должна располагаться так, чтобы каждый игрок имел клетку белого
(или светлого) цвета в правом-нижнем углу Шахматные фигуры расставляются  одинаково в каждой
партии На второй и седьмой линиях располагаются пешки.  Ладьи стоят в углах, кони рядом с ними, 
затем слоны, и, наконец, ферзь,который всегда стоит на поле одного с ним цвета (белый ферзь на
белом, черный ферзь на черном), и король рядом с ферзем.
 
Игрок с белыми фигурами всегда ходит первым. До этого, игроки обычно решают, кто  получит 
какие фигуры путем жребия. Сначала ходят белые, затем чёрные, потом опять белые, затем снова 
чёрные... И так до конца игры.</p>
 
<h3>*** Как ходят фигуры</h3>
      <p>Все шесть фигур ходят по-разному. Фигуры, за исключением коня, не могут “перепрыгивать” через
другие фигуры, и не могут ходить на поля, занятые фигурами своего цвета. Фигуры могут занимать 
поля, на которых расположены фигуры соперника, осуществив их взятие. Фигуры, как правило, надо
 располагать так, чтобы они угрожали взять фигуры соперника, могли защитить свои фигуры или 
контролировать важные поля.</p>
<h3>Король</h3>
<p>Король является наиболее важной, но и самой слабой фигурой. Король может двигаться только на
одно поле в любом направлении - вверх, вниз, в стороны, по диагонали. Нажмите на '>' кнопку на
диаграмме ниже, чтобы увидеть, как король может передвигаться по доске. Король не может
ходить на те поля, на которых он будет находиться под шахом (то есть может быть взят).</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=73"></iframe></center>
<h3>Ферзь</h3>
<p>Ферзь является самой сильной фигурой. Он может двигаться по любой прямой (по горизонтали,
 вертикали или диагоналям) на любое возможное расстояние, но не перепрыгивая через фигуры
 своего цвета. И, как и у всех фигур, если ферзь берет фигуру соперника, его движение
 заканчивается. Щелкните по диаграмме ниже, чтобы увидеть, как ходит ферзь. Обратите внимание,
 как белый ферзь берет черного ферзя, а затем черный король вынужден ходить.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=74"></iframe></center>
<h3>Ладья</h3>
<p>Ладья может ходить на любое расстояние, но только по горизонтали и вертикали. Ладьи особенно 
сильны, когда они защищают друг друга и работают вместе!</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=90"></iframe></center>
<h3>Слон</h3>
<p>Слон может двигаться так далеко, как он захочет, но только по диагонали Каждый слон начинает 
на клетке своего цвета, и должен всегда оставаться на клетках того-же цвета Слоны хорошо 
работают вместе, так как они покрывают слабые стороны друг друга.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=76"></iframe></center>
<h3>Конь</h3>
<p>Конь ходит не так, как все остальные фигуры. Сначала конь перемещается на два поля по
 горизонтали или по вертикали, а затем на одну клетку перпендикулярно первоначальному 
направлению (как русская буква “Г”). Также конь это единственная фигура, которая может 
“перепрыгивать” через другие фигуры и пешки.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=77"></iframe></center>
<br>
<h3>Пешка</h3>
<p>Пешки отличаются от других фигур тем, что ходят и осуществляют взятие по-разному: ходят прямо
вперед, а взятие осуществляют по диагонали. Пешки ходят только вперед на одно поле за один ход, 
за ??исключением их самого первого хода, когда они могут пойти вперед на два поля. Пешка может
пойти на поле, занимаемое фигурой (пешкой) соперника, которая расположена по диагонали на
смежной вертикали, одновременно забирая эту фигуру (пешку). Пешки не могут ходить
(осуществлять взятие) назад. Если прямо перед пешкой есть другая фигура или пешка, она не 
может пройти мимо этой фигуры или пешки либо взять ее.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=92"></iframe></center>
<h3>Превращение</h3>
<p>У пешек есть одна отличительная особенность - они могут превращаться в другие фигуры. Пешка, 
достигшая последней горизонтали (8-й для белых, 1-й для чёрных), заменяется любой (кроме 
короля) фигурой того же цвета по выбору игрока, совершающего ход. Превращение производится 
немедленно (тем же ходом) независимо от наличия на доске фигур того же наименования. Обычно 
пешку превращают в ферзя. Только пешки могут превращаться в другие фигуры.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=80"></iframe></center>
<h3>Взятие на проходе</h3>
<p>Еще одно правило, связанное с пешками, называется “взятие на проходе” (от “en passant,” в 
переводе с французского “на проходе”). Взятие на проходе - это специальный ход пешки, при 
котором она берёт пешку противника, перемещённую сразу на два поля. Но под боем оказывается не
то поле, на котором остановилась вторая пешка, а то, которое было пересечено ею. Первая пешка 
завершает взятие именно на этом, пересечённом поле, как если бы пешка противника 
переместилась лишь на одно поле. Подобная ситуация становится возможной только в тех случаях, 
когда пешка располагается на пятой (для белых пешек) или четвёртой (для чёрных пешек) 
горизонтали, а поле, которое пересекает пешка противника, находится у неё под боем. Взятие 
пешки противника может осуществляться только сразу после её перемещения на два поля. 
Совершать взятие на проходе можно только ответным ходом, иначе право взятия на проходе 
теряется. Нажмите на примере ниже, чтобы лучше понять это важное правило.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=81"></iframe></center>
<h3>Рокировка</h3>
<p>Еще одно специальное правило называется рокировкой. Этот ход позволяет сделать две важные 
вещи одновременно: обезопасить своего короля и вывести ладью из угла доски на более активную 
позицию. Рокировка заключается в перемещении короля в сторону ладьи своего цвета на 2 клетки и 
затем ладьи на соседнюю с королём клетку по другую сторону от короля. Рокировка возможна при 
соблюдении следующих условий:</p>
<ul>
<li>Это должен быть первый ход короля в данной партии
<li>Это должен быть первый ход передвигаемой ладьи в данной партии
<li>Поля между ладьей и королем свободны, на них нет других фигур
<li style="margin-right: 15px;">Король не должен находиться под шахом и поле, которое он должен пересечь или занять, не 
должно быть атаковано одной или несколькими фигурами сопрерника.</ul>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=84"></iframe></center>
<p>Обратите внимание, что в начале партии в одном направлении король ближе к ладье. Если Вы 
делаете рокировку в эту сторону, она называется рокировкой на королевском фланге. Рокировка в 
другую сторону, через поле, на котором в начале партии стоял ферзь, называется рокировкой на 
ферзевом фланге. Независимо от того, в какую сторону совершается рокировка, король 
передвигается на два поля.</p>
<h3>Шах и Мат</h3>
<p>Как было сказано выше, цель игры состоит в том, чтобы поставить мат королю противника. Это 
происходит, когда король попадает под шах и не может из него уйти Король может выбраться из-
под шаха тремя способами: пойти на безопасную клетку (рокировка запрещена!), закрыться другой 
фигурой или взять шахующую фигуру. Если король не может избежать мата, то игра закончится. 
Обычно при мате короля не убирают с доски, а партия считается законченной.</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=85"></iframe></center>
<h3>Ничья</h3>
<p>Иногда в шахматной партии нет победителя, а фиксируется ничья.. Есть 5 правил, по которым 
шахматная партия завершается ничьёй:</p>
<ul>
<li>Пат, то есть положение, при котором игрок, имеющий право хода, не может им воспользоваться, 
так как все его фигуры и пешки лишены возможности сделать ход по правилам, причём король не 
находится под шахом
<li>Игроки могут просто согласиться на ничью и перестать играть
<li>Недостаточно фигур на доске для того, чтобы поставить мат (например король и слон против 
короля)
<li>Игрок объявляет ничью, если одна и та же позиция на доске повторяется три раза (не 
обязательно три раза подряд).
<li>Пятьдесят последовательных ходов были сыграны, при этом ни один из игроков не сделал ход 
пешкой и не осуществил взятие фигуры или пешки.</ul>
<h3>Шахматы Фишера (960)</h3>
<p>Chess960 (также называется шахматы Фишера) - это вариант шахмат, в котором те же правила, как 
и в обычных шахматах, но где “теории дебютов” не играют большой роли в игре.. Начальная 
позиция фигур формируется случайно, используя лишь 2 правила: слоны стоят на клетках разных 
цветов, а король должен находиться между ладьями. Черные и белые фигуры расположены 
симметрично. Существует ровно 960 возможных стартовых позиций, которые выполняют эти правила 
(отсюда приставка “960”). Правило рокировки необычное: здесь всё то же самое (король и ладья не 
двигались до этого, рокируются не в шах или через клетку с шахом) плюс все клетки между королем 
и ладьей должны быть свободны от фигур.</p>
<h3>Некоторые правила турниров</h3>
<p>Во многих турнирах используются идентичные правила.. Эти правила не обязательно применять, 
если вы играете дома либо в интернете..
<b>Взялся - ходи!</b>
Если игрок касается фигуры, то он обязан сделать ей ход.. Если игрок касается фигуры соперника, 
он должен осуществить ее взятие.. Игрок, который хочет прикоснуться к фигуре только чтобы 
поправить ее на доске, должен сначала объявить о своем намерении, как правило, говоря 
“поправляю”..
<b>Контроль времени.</b>
В большинстве турниров используется контроль времени, отведенного на всю партию, а не на 
каждый ход.. Оба игрока получают равное количество времени на партию, каждый игрок может 
решить, как использовать это время.. После того, как игрок делает ход, он нажимает кнопку на 
часах, чтобы запустить часы соперника.. Если у игрока закончилось отведенное на игру время и 
оппонент заявляет об этом, тот игрок, у которого закончилось время, проигрывает. Исключением 
являются случаи, когда у заявившего игрока недостаточно фигур, чтобы поставить мат - в таком 
случае партия заканчивается вничью..</p>
<h3>Основные стратегии</h3>
<p>Есть четыре простых вещи, которые должен знать каждый шахматист.:</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=87"></iframe></center>
<h3>#1 Защитите Вашего короля</h3>
<p>Переведите короля в угол доски, как правило, там ему безопаснее.. Не откладывайте рокировку. 
Как правило, надо рокироваться как можно быстрее.. Помните, не имеет значения, насколько вы 
близки к тому, чтобы поставить мат сопернику, если он поставит вам мат первым.!</p>
<h3>#2 Не отдавайте фигуры бесцельно</h3>
<p>Не теряйте свои фигуры бездумно! Каждая фигура имеет свою цену, и вы не сможете выиграть игру
 без фигур, нужных для постановки мата. Есть простая шкала, позволяющая оценить относительную 
ценность каждой фигуры:</p>
<ul>
<li>Пешка - базовая единица
<li>Конь стоит 3 пешки
<li>Слон стоит 3 пешки
<li>Ладья стоит 5 пешек
<li>Ферзь стоит 9 пешек
<li>Король - бесценен
</ul>
<p>Для чего нам нужно знать сравнительную силу фигур? Во-первых, она определяет общую полезность 
фигуры. То есть ладья, обычно приносит больше пользы на доске, чем скажем слон. Во-вторых, 
ценность фигуры нужно осознавать при разменах..</p>
<center><iframe border="0" frameborder="0" allowtransparency="true" width="620" height="410" src="http://www.chess.com/emboard?id=89"></iframe></center>
<h3>#3 Контролируйте центр доски</h3>
<p>Вы должны контролировать центр доски своими фигурами и пешками. Если вы контролируете центр, 
то у вас больше возможностей для хорошего расположения своих фигур на доске, а сопернику 
тяжелее найти для своих фигур хорошие поля.. В приведенном выше примере белые делают 
хорошие ходы, чтобы контролировать центр, ходы черных - плохие..</p>
<h3>#4 Используйте все свои фигуры</h3>
<p>В приведенном выше примере все фигуры белых активны.! Ваши фигуры не приносят никакой 
пользы, отсиживаясь в тылу. Старайтесь развивать все свои фигуры для того, что бы вы могли их 
использовать при атаке короля соперника.. Использование лишь одной или двух фигур для атаки не 
сработает против сильного соперника.</p>
<h3>Getting Better по шахматам</h3>
<p>Знать правила и основы стратегии это только начало - есть так много того, чему можно учиться при 
игре в шахматы, что для того, чтобы научиться всему, не хватит всей жизни.! Чтобы усилиться, Вам 
надо делать три вещи:</p>
 
<p><b>#1 – Играть</b>
Просто продолжайте играть! Играть как можно больше. Вы должны выносить уроки из каждой игры 
- и с проигранной, и с выигранной.</p>
 
<p><b>#2 – Учиться</b>
Если вы действительно хотите улучшить свой навык быстро, то приобретите [рекомендованная 
шахматная книга]. Есть также много ресурсов на Chess.com, чтобы помочь вам учиться и 
совершенствовать свою игру.</p>
 
<p><b>#3 Веселитесь</b>
Не расстраивайтесь, если вы не выиграете все свои партии!. Все иногда проигрывают - даже 
чемпионы мира. Если Вы научитесь извлекать уроки из проигранных партий, Вы всегда сможете 
получать удовольствие от шахмат!</p>
 
Шахматов Шахмат
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2018, 13:11
Помогаю со студенческими работами здесь

Почему Update не работает а insert работает?
Почему Update не работает а insert работает? вот код if Request.QueryString('act')='sav' then sSQL1 = 'UPDATE pages SET...

Не работает UPDATE
Доброе время суток, вообщем проблема в следующем я загружаю картинку на сайт , она загружается , но в бд не передается. &lt;?php ...

Не работает Update в БД
Все хорошо, кроме того что в БД не изменяется значение money.... Помогите, кому не сложно &lt;?php session_start(); $connect =...

Не работает Update
Доброго времени суток. Возникла проблема с обновлением. Нужно обновить числовое поле в таблице данными из другой таблицы поля типа...

Не работает Update
Пишу игру в жанре кликер. В игре каждое окно это canvas которые можно переключать с помощью меню (к каждому привязана кнопка), которое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru