26.12.2015, 14:27
|
Новичок на форуме
|
|
Регистрация: 26.12.2015
Сообщений: 7
|
|
Работа JS с БД
Здравствуйте, я не давно начал заниматься программированием, а ещё меньше я занимаюсь JS, мне дали готовый Profile, где я должен сделать, чтобы при нажатии на кнопку сохранить, оно сохраняло без обновления страницы, что я сделал через iframe, но информацию оно не обновляет, меня попросили сделать это через JS, вопрос:
Как это можно сделать?.
Код вывода карьеры
if ($user["career"] != "")
{
echo'
<font size="+1"><br><b>Работа:</b></font>
<br><div class="content_right_about">Карьера: </div>'.$user["career"].'';
}
Ввод карьеры:
Карьера:
<i class="fa fa-plus"></i>
</a>
<div class="contentredaction">
Работа:<br>
<p><textarea rows="10" cols="45" name="career" class="career" type="text" maxlength="100" value=""></textarea></p>';
?>
<script>
$('.career').val("<?php echo $user['career'];?>");
</script>
<?php
echo'
</div>
</div>
Так же после ввода данных, оно отправляется в другой файл, где обрабатывает эту всю информацию.
if ($_POST['career'] || $_POST['career'] == ""){
mysqli_query($CONNECT, "UPDATE `users` SET `career` = '$_POST[career]' WHERE `id` = $_SESSION[USER_ID]");
$_SESSION['USER_CAREER'] = $_POST['career'];
}
То есть оно заносит в БД без обновления страницы, но обновляет текст только после перезагрузки страницы.
Последний раз редактировалось zgmoru, 26.12.2015 в 14:39.
|
|
26.12.2015, 14:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
if ($user["career"] != "") - if($user["career"]) или if(!empty($user["career"])).
if ($_POST['career'] || $_POST['career'] == "") - логику этого пояснить можете?
"UPDATE `users` SET `career` = ' $_POST[career]' - так нельзя, это дыра в безопасности, данные необходимо обезопасить.
Сообщение от zgmoru
|
То есть оно заносит в БД без обновления страницы, но обновляет текст только после перезагрузки страницы.
|
Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?
|
|
26.12.2015, 15:15
|
Новичок на форуме
|
|
Регистрация: 26.12.2015
Сообщений: 7
|
|
Сообщение от laimas
|
if ($user["career"] != "") - if($user["career"]) или if(!empty($user["career"])).
if ($_POST['career'] || $_POST['career'] == "") - логику этого пояснить можете?
"UPDATE `users` SET `career` = '$_POST[career]' - так нельзя, это дыра в безопасности, данные необходимо обезопасить.
Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?
|
>if ($_POST['career'] || $_POST['career'] == "") - логику этого пояснить можете?
Для того чтобы можно было стереть данные из базы данных.
>Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?
Да, то есть чтобы данные обновились после редактирования, но страница не перезагружалась. Опять же повторюсь, это не мой код, мне дали уже готовый код..
Я сейчас сижу и разбираюсь в нём, лажу по форумам и так далее.
|
|
26.12.2015, 15:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от zgmoru
|
Для того чтобы можно было стереть данные из базы данных.
|
Это не объяснение, это несуразица.
if ($_POST['career'] || $_POST['career'] == "") - означает следующее
if (истинна ли переменная $_POST['career'], то есть не равна пустой строке, 0, false или null (кстати, прежде чем таковую проверку делать, нужно обрезать крайние пробелы) ИЛИ не истинна ли переменная $_POST['career'], то есть равно пустой строке) - и какой же смысл в этом условии, если оно будет возвращать истину в любом случае?
Сообщение от zgmoru
|
Да, то есть чтобы данные обновились после редактирования, но страница не перезагружалась. Опять же повторюсь, это не мой код, мне дали уже готовый код..
|
Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.
|
|
26.12.2015, 16:53
|
Новичок на форуме
|
|
Регистрация: 26.12.2015
Сообщений: 7
|
|
Сообщение от laimas
|
Это не объяснение, это несуразица.
if ($_POST['career'] || $_POST['career'] == "") - означает следующее
if (истинна ли переменная $_POST['career'], то есть не равна пустой строке, 0, false или null (кстати, прежде чем таковую проверку делать, нужно обрезать крайние пробелы) ИЛИ не истинна ли переменная $_POST['career'], то есть равно пустой строке) - и какой же смысл в этом условии, если оно будет возвращать истину в любом случае?
Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.
|
>if ($_POST['career'] || $_POST['career'] == ""), был баг с тем, что при нажатии на кнопку "Сохранить", которая сохраняет все данные, которые ввел пользователь в базу данных, не сохраняет пустую строку,
$_POST['career'] == "" - помогло решить проблему.
>Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.
Данные о пользователе пол, карьера и т.д..
|
|
26.12.2015, 18:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от zgmoru
|
if ($_POST['career'] || $_POST['career'] == ""), был баг с тем, что при нажатии на кнопку "Сохранить", которая сохраняет все данные, которые ввел пользователь в базу данных, не сохраняет пустую строку,
$_POST['career'] == "" - помогло решить проблему.
|
Ну что за глупости. Вы поступаете равносильно тому, как если бы:
1) сервер принимает данные которые гарантировано имеют значение 0 или 1
2) сервер знает что может получить только 0 или 1
3) но тем не менее он проверяет if($_POST['a']==0 || $_POST['a']==1)
Ну ежику же понятно, что это бессмысленная проверка. Вот та же самая глупость и в вашем условии.
UPDATE table SET = $var - обновит поле значением $var, и если оно пустое, то пустым, если оно заполнено, то заполненным, и от логики РНР это не зависит! А ваше условие лишнее ибо оно будет выполняться в лубом случае, проверьте, и думайте:
$a = '';
echo $a || $a=='' ? 'Yes' : 'No';
выполнив сперва с $a равной пустой строке, а затем заполненной любым значением. Что получается? Вы не решили проблему с чем-то там в коде, вы не разобравшись подогнали под ответ.
Вот только данные пришедшие извне нельзя непосредственно подставлять в запрос, и коли учитесь, то обязательно знать этот минимум!
Сообщение от zgmoru
|
Данные о пользователе пол, карьера и т.д..
|
Тут нужно пояснение - если эти данные редактирует их владелец, то значит они есть поля формы, и серверу нужно лишь их записать, сообщив пользователю, что они успешно приняты и сохранены, либо сообщить ошибку в случае неудачи. У клиента же эти данные и так будут те, что он ввел.
А в вашем случае эти данные что, и почему их нужно обновлять?
|
|
26.12.2015, 18:51
|
Новичок на форуме
|
|
Регистрация: 26.12.2015
Сообщений: 7
|
|
Сообщение от laimas
|
Ну что за глупости. Вы поступаете равносильно тому, как если бы:
1) сервер принимает данные которые гарантировано имеют значение 0 или 1
2) сервер знает что может получить только 0 или 1
3) но тем не менее он проверяет if($_POST['a']==0 || $_POST['a']==1)
Ну ежику же понятно, что это бессмысленная проверка. Вот та же самая глупость и в вашем условии.
UPDATE table SET = $var - обновит поле значением $var, и если оно пустое, то пустым, если оно заполнено, то заполненным, и от логики РНР это не зависит! А ваше условие лишнее ибо оно будет выполняться в лубом случае, проверьте, и думайте:
$a = '';
echo $a || $a=='' ? 'Yes' : 'No';
выполнив сперва с $a равной пустой строке, а затем заполненной любым значением. Что получается? Вы не решили проблему с чем-то там в коде, вы не разобравшись подогнали под ответ.
Вот только данные пришедшие извне нельзя непосредственно подставлять в запрос, и коли учитесь, то обязательно знать этот минимум!
Тут нужно пояснение - если эти данные редактирует их владелец, то значит они есть поля формы, и серверу нужно лишь их записать, сообщив пользователю, что они успешно приняты и сохранены, либо сообщить ошибку в случае неудачи. У клиента же эти данные и так будут те, что он ввел.
А в вашем случае эти данные что, и почему их нужно обновлять?
|
>1) сервер принимает данные которые гарантировано имеют значение 0 или 1
2) сервер знает что может получить только 0 или 1
3) но тем не менее он проверяет if($_POST['a']==0 || $_POST['a']==1)
Ну ежику же понятно, что это бессмысленная проверка. Вот та же самая глупость и в вашем условии.
UPDATE table SET = $var - обновит поле значением $var, и если оно пустое, то пустым, если оно заполнено, то заполненным, и от логики РНР это не зависит! А ваше условие лишнее ибо оно будет выполняться в лубом случае, проверьте, и думайте:
$a = '';
echo $a || $a=='' ? 'Yes' : 'No';
выполнив сперва с $a равной пустой строке, а затем заполненной любым значением. Что получается? Вы не решили проблему с чем-то там в коде, вы не разобравшись подогнали под ответ.
Вот только данные пришедшие извне нельзя непосредственно подставлять в запрос, и коли учитесь, то обязательно знать этот минимум!
Спасибо за информацию, я обязательно почитаю это, и попытаюсь разобраться в коде.
>
Тут нужно пояснение - если эти данные редактирует их владелец, то значит они есть поля формы, и серверу нужно лишь их записать, сообщив пользователю, что они успешно приняты и сохранены, либо сообщить ошибку в случае неудачи. У клиента же эти данные и так будут те, что он ввел.
Да, данные редактирует человек, после чего после нажатия на инпут, данные сохраняются в базу данных. То есть это возраст, имя, фамилия и так далее, в БД они заносятся под iframe, то есть страница не обновляется, после чего мне нужно чтобы эти данные выводились без перезагрузки страницы, данные могут быть разные, в основном это текст или числа, которые преобразуются в текст. Сейчас мне главное разобраться с выводом данных без перезагрузки.
Последний раз редактировалось zgmoru, 26.12.2015 в 18:56.
|
|
26.12.2015, 19:10
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Не цитируйте все мною написанное, это и лишено смысла, и забивает пост мусором, цитируйте только то, на что оставляете свой комментарий.
Выбрасывайте iframe и, если, на сайте используется jQuery, то используйте Ajax, но если и не используется, то все равно Ajax, это не сложно.
Только я ничего не понял из ответа. Еще раз поясняю о чем я спрашиваю, например, это редактирование личных данных в кабинете, при этом они могут отдаваться двумя способами:
а) сначала это просто текст с кнопкой "Редактировать", которая возвращает форму, после отправки которой и в случае успешного изменения в базе, эти данные обновляются, то есть опять возвращается текст с кнопкой. Тут еще можно говорить об обновлении.
б) входя в кабинет я получаю свои личные данные в виде полей формы, и если что-то надо изменить, вношу изменения и жму кнопу "Обновить". В данном случае о каком обновлении может идти речь, если в случае их успешного обновления они и так будут в форме, то есть введенное мной?
А что там у вас и где, я так и не понял.
|
|
26.12.2015, 19:26
|
Новичок на форуме
|
|
Регистрация: 26.12.2015
Сообщений: 7
|
|
Пример редактирования. После нажатия кнопки "Сохранить", все изменения отправляются в БД, к примеру мы нажимаем кнопку сохранить после того как что-то поменяли..
После этого все данные сохраняются через iframe, но не обновляются вот тут:
И только после перезагрузки страницы мы получаем эти данные.
Но я хочу сделать это через JS, без использования iframe, потому что это нагружает страницу. И я спрашиваю, как это сделать, я уже много где полазил, много где смотрел видео, но так и не понял, как это реализовать в моем случае.
Последний раз редактировалось zgmoru, 26.12.2015 в 19:29.
|
|
26.12.2015, 19:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
То есть у вас по варианту а) - данные вводятся в таблице текстом, щелчок по соответствующей строке таблицы выводит форму с текстовым полем (или показывает уже имеющееся, но скрытое по умолчанию) и это уже есть, и работает?
По коду приведенному ранее этого не видно, если нужен ответ по конкретному, то нужно привести исходный html-код. Хотя можно и абстрактный пример показать, если сможете его в свой код адаптировать.
|
|
|
|