Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Работа JS с БД (https://javascript.ru/forum/jquery/60394-rabota-js-s-bd.html)

zgmoru 26.12.2015 14:27

Работа 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'];
}

То есть оно заносит в БД без обновления страницы, но обновляет текст только после перезагрузки страницы.

laimas 26.12.2015 14:42

if ($user["career"] != "") - if($user["career"]) или if(!empty($user["career"])).

if ($_POST['career'] || $_POST['career'] == "") - логику этого пояснить можете?

"UPDATE `users` SET `career` = '$_POST[career]' - так нельзя, это дыра в безопасности, данные необходимо обезопасить.

Цитата:

Сообщение от zgmoru
То есть оно заносит в БД без обновления страницы, но обновляет текст только после перезагрузки страницы.

Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?

zgmoru 26.12.2015 15:15

Цитата:

Сообщение от laimas (Сообщение 401460)
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'] == "") - логику этого пояснить можете?
Для того чтобы можно было стереть данные из базы данных.
>Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?
Да, то есть чтобы данные обновились после редактирования, но страница не перезагружалась. Опять же повторюсь, это не мой код, мне дали уже готовый код..
Я сейчас сижу и разбираюсь в нём, лажу по форумам и так далее.

laimas 26.12.2015 15:34

Цитата:

Сообщение от zgmoru
Для того чтобы можно было стереть данные из базы данных.

Это не объяснение, это несуразица.

if ($_POST['career'] || $_POST['career'] == "") - означает следующее

if (истинна ли переменная $_POST['career'], то есть не равна пустой строке, 0, false или null (кстати, прежде чем таковую проверку делать, нужно обрезать крайние пробелы) ИЛИ не истинна ли переменная $_POST['career'], то есть равно пустой строке) - и какой же смысл в этом условии, если оно будет возвращать истину в любом случае?

Цитата:

Сообщение от zgmoru
Да, то есть чтобы данные обновились после редактирования, но страница не перезагружалась. Опять же повторюсь, это не мой код, мне дали уже готовый код..

Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.

Rise 26.12.2015 15:51

zgmoru,
<textarea rows="10" cols="45" name="career" class="career" type="text" maxlength="100"><?=$user['career']?></textarea>

zgmoru 26.12.2015 16:53

Цитата:

Сообщение от laimas (Сообщение 401474)
Это не объяснение, это несуразица.

if ($_POST['career'] || $_POST['career'] == "") - означает следующее

if (истинна ли переменная $_POST['career'], то есть не равна пустой строке, 0, false или null (кстати, прежде чем таковую проверку делать, нужно обрезать крайние пробелы) ИЛИ не истинна ли переменная $_POST['career'], то есть равно пустой строке) - и какой же смысл в этом условии, если оно будет возвращать истину в любом случае?



Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.

>if ($_POST['career'] || $_POST['career'] == ""), был баг с тем, что при нажатии на кнопку "Сохранить", которая сохраняет все данные, которые ввел пользователь в базу данных, не сохраняет пустую строку,
$_POST['career'] == "" - помогло решить проблему.
>Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.
Данные о пользователе пол, карьера и т.д..

laimas 26.12.2015 18:24

Цитата:

Сообщение от 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
Данные о пользователе пол, карьера и т.д..

Тут нужно пояснение - если эти данные редактирует их владелец, то значит они есть поля формы, и серверу нужно лишь их записать, сообщив пользователю, что они успешно приняты и сохранены, либо сообщить ошибку в случае неудачи. У клиента же эти данные и так будут те, что он ввел.

А в вашем случае эти данные что, и почему их нужно обновлять?

zgmoru 26.12.2015 18:51

Цитата:

Сообщение от laimas (Сообщение 401507)
Ну что за глупости. Вы поступаете равносильно тому, как если бы:

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, то есть страница не обновляется, после чего мне нужно чтобы эти данные выводились без перезагрузки страницы, данные могут быть разные, в основном это текст или числа, которые преобразуются в текст. Сейчас мне главное разобраться с выводом данных без перезагрузки.

laimas 26.12.2015 19:10

Не цитируйте все мною написанное, это и лишено смысла, и забивает пост мусором, цитируйте только то, на что оставляете свой комментарий.

Выбрасывайте iframe и, если, на сайте используется jQuery, то используйте Ajax, но если и не используется, то все равно Ajax, это не сложно.

Только я ничего не понял из ответа. Еще раз поясняю о чем я спрашиваю, например, это редактирование личных данных в кабинете, при этом они могут отдаваться двумя способами:

а) сначала это просто текст с кнопкой "Редактировать", которая возвращает форму, после отправки которой и в случае успешного изменения в базе, эти данные обновляются, то есть опять возвращается текст с кнопкой. Тут еще можно говорить об обновлении.

б) входя в кабинет я получаю свои личные данные в виде полей формы, и если что-то надо изменить, вношу изменения и жму кнопу "Обновить". В данном случае о каком обновлении может идти речь, если в случае их успешного обновления они и так будут в форме, то есть введенное мной?

А что там у вас и где, я так и не понял.

zgmoru 26.12.2015 19:26


Пример редактирования. После нажатия кнопки "Сохранить", все изменения отправляются в БД, к примеру мы нажимаем кнопку сохранить после того как что-то поменяли..

После этого все данные сохраняются через iframe, но не обновляются вот тут:

И только после перезагрузки страницы мы получаем эти данные.

Но я хочу сделать это через JS, без использования iframe, потому что это нагружает страницу. И я спрашиваю, как это сделать, я уже много где полазил, много где смотрел видео, но так и не понял, как это реализовать в моем случае.


Часовой пояс GMT +3, время: 15:10.