Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.12.2015, 14:27
Новичок на форуме
Отправить личное сообщение для zgmoru Посмотреть профиль Найти все сообщения от zgmoru
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2015, 14:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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
То есть оно заносит в БД без обновления страницы, но обновляет текст только после перезагрузки страницы.
Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2015, 15:15
Новичок на форуме
Отправить личное сообщение для zgmoru Посмотреть профиль Найти все сообщения от zgmoru
 
Регистрация: 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'] == "") - логику этого пояснить можете?
Для того чтобы можно было стереть данные из базы данных.
>Ну а чего вы хотите - отправлять данные без перезагрузки страницы и в тоже время обновить ее? Можно, но тогда какой смысл в асинхронном запросе?
Да, то есть чтобы данные обновились после редактирования, но страница не перезагружалась. Опять же повторюсь, это не мой код, мне дали уже готовый код..
Я сейчас сижу и разбираюсь в нём, лажу по форумам и так далее.
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2015, 15:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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

Сообщение от zgmoru
Да, то есть чтобы данные обновились после редактирования, но страница не перезагружалась. Опять же повторюсь, это не мой код, мне дали уже готовый код..
Чтобы обновились на странице часть ее данных, тогда еще да, это логично, но вопрос только в том какова эта часть и что за данные, вполне возможно, что лучше не тревожить Ajax.
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2015, 16:53
Новичок на форуме
Отправить личное сообщение для zgmoru Посмотреть профиль Найти все сообщения от zgmoru
 
Регистрация: 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.
Данные о пользователе пол, карьера и т.д..
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2015, 18:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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
Данные о пользователе пол, карьера и т.д..
Тут нужно пояснение - если эти данные редактирует их владелец, то значит они есть поля формы, и серверу нужно лишь их записать, сообщив пользователю, что они успешно приняты и сохранены, либо сообщить ошибку в случае неудачи. У клиента же эти данные и так будут те, что он ввел.

А в вашем случае эти данные что, и почему их нужно обновлять?
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2015, 18:51
Новичок на форуме
Отправить личное сообщение для zgmoru Посмотреть профиль Найти все сообщения от zgmoru
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 26.12.2015, 19:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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

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

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

А что там у вас и где, я так и не понял.
Ответить с цитированием
  #9 (permalink)  
Старый 26.12.2015, 19:26
Новичок на форуме
Отправить личное сообщение для zgmoru Посмотреть профиль Найти все сообщения от zgmoru
 
Регистрация: 26.12.2015
Сообщений: 7


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

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

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

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

Последний раз редактировалось zgmoru, 26.12.2015 в 19:29.
Ответить с цитированием
  #10 (permalink)  
Старый 26.12.2015, 19:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

То есть у вас по варианту а) - данные вводятся в таблице текстом, щелчок по соответствующей строке таблицы выводит форму с текстовым полем (или показывает уже имеющееся, но скрытое по умолчанию) и это уже есть, и работает?

По коду приведенному ранее этого не видно, если нужен ответ по конкретному, то нужно привести исходный html-код. Хотя можно и абстрактный пример показать, если сможете его в свой код адаптировать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересная работа для JavaScript-разработчика в Москве от 120 000 linna9 Работа 1 21.01.2014 23:59
Конфликтуют js скрипты в Opera romka AJAX и COMET 2 28.05.2012 15:32
JS мастер, 2 месяца на Бали, потом Москва офис, белая з/п от 90000 руб Lingualeo Работа 3 04.05.2012 14:33
работа с файлами JS demix Общие вопросы Javascript 1 19.02.2010 23:56
Вакансия дизайнера/разработчика интерфейсов на EXT JS в Москве lakehouse Работа 0 09.01.2010 18:11