Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja profilu przez ajax.
Forum PHP.pl > Forum > XML, AJAX
prostowniczek
Witam. Jestem w trakcie tworzenia strony, na której nie bd odświeżania i ładowania stron. Stoję ja edycji profilu.

POsiadam plik index.php w ktorym posiadam diva. Do diva ładuję plik editprofile.php poprzez menu:
  1. li><a href="#" onClick="callAHAH('profile.php', 'tresc', 'Trwa ładowanie zawartości ...')"><span>Profil</span></a></li>


Teraz chcę po wpisaniu danych aktualizować do bazy:

  1. <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
  2. <script type="text/javascript">
  3. jQuery(document).ready(function() {
  4. $("#guzik").click(function() {
  5. var website = $('input[name=website]').val();
  6. var 'from' = $('input[name=from]').val();
  7. var new_password = $('input[name=new_password]').val();
  8. var new_password2 = $('input[name=new_password2]').val();
  9. var email = $('input[name=new_email]').val();
  10. var password = $('input[name=password]').val();
  11.  
  12. $.ajax({
  13. url: "php1.php",
  14. type: "POST",
  15. data: "indeks="+website,"indeks="+'from',"indeks="+new_password,"indeks="+new_password2,"indeks="+email,"indeks="+password,
  16. success: function(msg) {
  17. $("#kontener").text(msg);
  18. }
  19. });
  20. });
  21. });
  22. </script>
  23. </head>


  1. // wyświetlamy prosty formularz
  2. echo '<form action="">
  3. <p>
  4. Login:<br>
  5. <input type="text" value="'.$user_data['user_name'].'" disabled="true">
  6. </p>
  7. <p>
  8. Strona WWW:<br>
  9. <input type="text" value="'.$user_data['user_website'].'" name="website">
  10. </p>
  11. <p>
  12. Skąd:<br>
  13. <input type="text" value="'.$user_data['user_from'].'" name="from">
  14. </p>
  15. <p>
  16. Nowe hasło (pozostaw puste jeśli nie chcesz zmieniać):<br>
  17. <input type="password" value="" name="new_password" autocomplete="off">
  18. </p>
  19. <p>
  20. Powtórz nowe hasło:<br>
  21. <input type="password" value="" name="new_password2" autocomplete="off">
  22. </p>
  23. <p>
  24. E-mail:<br>
  25. <input type="text" value="'.$user_data['user_email'].'" name="email">
  26. </p>
  27. <p>
  28. Aktualne hasło (wymagane przy zmianie emaila lub hasła):<br>
  29. <input type="password" value="" name="password" autocomplete="off">
  30. </p>
  31. <p>
  32. <input type="submit" id="guzik" value="Edytuj profil">
  33. </p>
  34. </form>
  35.  
  36. <div id="kontener"></div>';


Plik php1.php

  1. include 'config.php';
  2. db_connect();
  3.  
  4. check_login();
  5.  
  6. $user_data = get_user_data();
  7. // jeśli zostanie naciśnięty przycisk "Edytuj profil"
  8. if(isset($_POST['email'])) {
  9. // filtrujemy dane
  10. $_POST['website'] = clear($_POST['website']);
  11. $_POST['from'] = clear($_POST['from']);
  12. $_POST['new_password'] = clear($_POST['new_password']);
  13. $_POST['new_password2'] = clear($_POST['new_password2']);
  14. $_POST['password'] = clear($_POST['password']);
  15. $_POST['email'] = clear($_POST['email']);
  16.  
  17. // zmienne tymczasowe na treść błędu
  18. $err = '';
  19. // i zapytanie sql
  20. $up2 = '';
  21.  
  22. // jeśli zostanie podane nowe hasło lub inny email
  23. if(!empty($_POST['new_password']) || $_POST['email'] != $user_data['user_email']) {
  24. // sprawdzamy czy zostało podane aktualne hasło
  25. if(empty($_POST['password'])) {
  26. $err = '<p>Jeśli chcesz zmienić hasło lub adres email musisz podać aktualne hasło.</p>';
  27. // jeśli zostało podane to sprawdzamy czy jest poprawne
  28. } elseif(codepass($_POST['password']) != $user_data['user_password']) {
  29. $err = '<p>Podane aktualne hasło jest nieprawidłowe.</p>';
  30. } else {
  31. // jeśli wszystko jest ok...
  32.  
  33. // sprawdzamy czy user chce zmienić hasło
  34. if(!empty($_POST['new_password'])) {
  35. // jeśli podane dwa hasła są różne to wyświetlamy błąd
  36. if($_POST['new_password'] != $_POST['new_password2']) {
  37. $err = '<p>Podane hasła nie są takie same.</p>';
  38. // jeśli wszystko jest ok, dopisujemy do zmiennej tymczasowej zapytanie do zaktualizowania hasła
  39. } else {
  40. $up2.= ", `user_password` = '".codepass($_POST['new_password'])."'";
  41. }
  42. }
  43. // sprawdzamy czy user chce zmienić email (czy ten podany jest różny od aktualnego)
  44. if($_POST['email'] != $user_data['user_email']) {
  45. // sprawdzamy czy podany email jest prawidłowy
  46. if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
  47. $err = '<p>Podany email jest nieprawidłowy.</p>';
  48. } else {
  49. // sprawdzamy czy istnieje taki email w bazie przy czym omijamy usera który jest zalogowany
  50. $result = mysql_query("SELECT Count(user_id) FROM `users` WHERE `user_id` != '{$user_data['user_id']}' AND `user_email` = '{$_POST['email']}'");
  51. $row = mysql_fetch_row($result);
  52. if($row[0] > 0) {
  53. $err = '<p>Już istnieje użytkownik z takim loginem lub adresem e-mail.</p>';
  54. } else {
  55. // jeśli wszystko jest ok to dopisujemy zapytanie do zaktualizowania emaila
  56. $up2.= ", `user_email` = '{$_POST['email']}'";
  57. }
  58. }
  59. }
  60. }
  61. }
  62.  
  63. // jeśli są jakieś błędy z powyższych działań to je wyświetlamy
  64. if(!empty($err)) {
  65. echo $err;
  66. } else {
  67. // jeśli nie ma błędów to wykonujemy zapytanie dopisując te na aktualizacje hasła oraz emaila - $up2
  68. $result = mysql_query("UPDATE `users` SET `user_website` = '{$_POST['website']}', `user_from` = '{$_POST['from']}'{$up2} WHERE `user_id` = '{$user_data['user_id']}'");
  69. if($result) {
  70. // jeśli zapytanie się wykonało to wyświetlamy komunikat...
  71. echo '<p>Twój profil został poprawnie zaktualizowany.</p>';
  72. // i pobieramy od nowa dane usera aby w poniższym formularze się one zaktualizowały
  73. $user_data = get_user_data();
  74. } else {
  75. // jeśli zapytanie będzie błędne to wyświetlamy treść errora
  76. echo '<p>Niestety wystąpił błąd:<br>'.mysql_error().'</p>';
  77. }
  78. }
  79. }
  80. ?>



Jedyne co się dzieje to odświeża mi się strona. Jak to naprawić ?
viking
Dodaj return false po wywołaniu funkcji callAHAH().
prostowniczek
Niestety nie pomogło.

Adres strony to:

http://cspolczyn.pl/groszek/prostownik/

Plik js:

  1. function getXMLHTTPRequest() {
  2. try {
  3. req=new XMLHttpRequest(); /* np. Firefox */
  4. } catch(err1) {
  5. try {
  6. req=new ActiveXObject("Msxm12.XMLHTTP"); /* niektóre wersje IE */
  7. } catch(err2) {
  8. try {
  9. req=new ActiveXObject("Microsoft.XMLHTTP"); /* niektóre wersje IE */
  10. } catch(err3) {
  11. req=false;
  12. }
  13. }
  14. }
  15. return req;
  16. }
  17. /* WCZYTYWANIE PODSTRON */
  18. var http=getXMLHTTPRequest();
  19. function callAHAH(url, pageElement, callMessage) {
  20. return false;
  21. document.getElementById(pageElement).innerHTML = callMessage;
  22. myRand=parseInt(Math.random()*9999999999);
  23. var myurl=url + "?rand=" + myRand;
  24. http.open("GET",myurl,true);
  25. http.onreadystatechange = function() {responseAHAH(pageElement);};
  26. http.send(null);
  27. }
  28. function responseAHAH(pageElement) {
  29. if(http.readyState == 4) {
  30. if(http.status == 200) {
  31. var output = http.responseText;
  32. document.getElementById(pageElement).innerHTML = output;
  33. }
  34. }
  35. }


Dane do konta to test1234 haslo test1234
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.