Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrypt JS.-zmiana wartości
Forum PHP.pl > Forum > XML, AJAX > AJAX
BoomBox20
Witam serdecznie,
mam oto taki problem:
skrypty poniżej ( pochodzący z http://designconcept.webdev20.pl/articles/...-edycji-danych/ ) wyświetlają po drobnych przeróbkach z mojej bazy status użytkownika czyli 1 albo 0-odpowiednio aktywny,nieaktywny.Jako że nie znam się w ogóle na js proszę o pomoc w przerobieniu tego tak aby były dwa przyciski aktywuj i deaktywuj(w zależności który potrzebny) i po kliknięciu ich podmieniało wartość w bazie na przeciwną czyli z 1 na 0 i odwrotnie.Bardzo serdecznie proszę o pomoc.pozdrawiam



index.php
  1.  
  2. <body>
  3. <?php
  4. define('DB_HOST','localhost');
  5. define('DB_USER','user');
  6. define('DB_PASS','pass');
  7. define('DB_NAME','system_newsow');
  8. $con=mysql_connect(DB_HOST,DB_USER,DB_PASS,true);
  9. $select_db = mysql_select_db(DB_NAME,$con);
  10. if($select_db)
  11. {
  12. mysql_query("SET NAMES utf8",$con);
  13. }
  14. else
  15. {
  16. die('Nie mozna sie polaczyc z baza danych ');
  17. }
  18. $query = "SELECT * FROM user";
  19. $result = mysql_query($query,$con);
  20. if($result===false && trim(mysql_error($con)))
  21. {
  22. echo("Błędne zapytanie: \n");
  23. }
  24. while($row = mysql_fetch_assoc($result))
  25. {
  26. $out[]=$row;
  27. }
  28. echo '<table id="tab">
  29. <tr><th>Id</th><th>Stasus</th><th>Treść</th><th>Akcje</th></tr>';
  30. foreach($out as $art)
  31. {
  32. echo '<tr>';
  33. echo '<td>'.$art['id'].'</td>';
  34.  
  35. if($art['status']==1){
  36. echo '<td>"aktywny"</td>';
  37. }else
  38. {
  39. echo '<td>"nieaktywny"</td>';
  40. }
  41.  
  42. //echo '<td>'.htmlspecialchars($art['status'],ENT_QUOTES).'</td>';
  43. // echo '<td>'.htmlspecialchars($art['tresc'],ENT_QUOTES).'</td>';
  44. echo '<td><form method="post"><input type="hidden" name="id" value="'.$art['id'].'" /><input class="sub" type="submit" value="Edytuj" /></form>
  45. <form method="post" action=""><input type="hidden" name="id" value="'.$art['id'].'" /><input class="del" type="submit" value="" title="Usuń" /></form></td>';
  46. echo '</tr>';
  47. }
  48. echo '</table>
  49. <form action="" method="post" id="add_form">
  50. <label>Tytuł:</label><input type="text" name="tytul" value="" /><br />
  51. <label>Treść:</label><input type="text" name="tresc" value="" /><br />
  52. <input class="sub2" type="submit" value="Dodaj" />
  53. </form>';
  54. ?>
  55. </body>
  56.  


edit.php
  1.  
  2. <?php
  3. if(isset($_POST['status']) && isset($_POST['id']))
  4. {
  5. define('DB_HOST','localhost');
  6. define('DB_USER','user');
  7. define('DB_PASS','pass');
  8. define('DB_NAME','system_newsow');
  9. $con=mysql_connect(DB_HOST,DB_USER,DB_PASS,true);
  10. $select_db = mysql_select_db(DB_NAME,$con);
  11. if($select_db)
  12. {
  13. mysql_query("SET NAMES utf8",$con);
  14. }
  15. else
  16. {
  17. die('Nie mozna sie polaczyc z baza danych ');
  18. }
  19. $tytul = mysql_real_escape_string($_POST['status']);
  20. //$tresc = mysql_real_escape_string($_POST['tresc']);
  21. $id = intval($_POST['id']);
  22. $query = "UPDATE user SET status = '$tytul'";
  23. $result = mysql_query($query,$con);
  24. echo json_encode(array('status'=>$_POST['status']));
  25. }
  26. ?>
  27.  
  28.  


custom.js
  1.  
  2. $(document).ready(function() {
  3. $('input.sub').live('click',function(){
  4. var id_art = $(this).parent().find('input[type=hidden]').val();
  5. var title = $(this).parent().parent().parent().find('td:eq(1)').text();
  6. // var content = $(this).parent().parent().parent().find('td:eq(2)').text();
  7. var a = $('<div/>', {
  8. class: 'box',
  9. html: '<form action="" method="post"><input type="hidden" name="id" value="'+id_art+'" /><label>Tytuł:</label><input type="text" name="status" value="'+title+'" /><br /><label>Treść:</label><input type="text" name="tresc" value="'+content+'" /><br /><input class="sub2" type="submit" value="Edytuj" /></form>'
  10. });
  11. var thi = $(this).parent();
  12. var next_thi = thi.next();
  13. $(this).parent().parent().append(a);
  14. $(this).parent().remove();
  15. a.find('form').submit(function(){
  16. $.post('edit.php', $(this).serialize(), function(dane) {
  17. dane = eval('('+dane+')');
  18. tr = a.parent().parent();
  19. tr.find('td:eq(1)').text(dane['status']).css('background-color', 'yellow').animate({
  20. opacity: 1
  21. }, 3000, function() {
  22. $(this).css({'background-color' : '#DFF7FF', 'opacity' : '1'});
  23. });
  24. /* tr.find('td:eq(2)').text(dane['tresc']).css('background-color', 'yellow').animate({
  25. opacity: 1
  26. }, 3000, function() {
  27. $(this).css({'background-color' : '#DFF7FF', 'opacity' : '1'});
  28. }); */
  29. a.remove();
  30. next_thi.before(thi);
  31. });
  32. return false;
  33. });
  34. return false;
  35. });
  36.  
  37.  
  38.  
  39. });


dwa buttony aktywuj albo dezaktywuj zrobię w php w pliku index.php


  1. if($art['status']==1){
  2. echo '<td><form method="post"><input type="hidden" name="id" value="'.$art['id'].'" /><input class="sub" type="submit" value="Dezaktywuj" /></form>
  3. <form method="post" action=""><input type="hidden" name="id" value="'.$art['id'].'" /><input class="del" type="submit" value="" title="Usuń" /></form></td>';
  4. }
  5. else if(($art['status']==0))
  6. {
  7. echo '<td><form method="post"><input type="hidden" name="id" value="'.$art['id'].'" /><input class="sub" type="submit" value="Aktywuj" /></form>
  8. <form method="post" action=""><input type="hidden" name="id" value="'.$art['id'].'" /><input class="del" type="submit" value="" title="Usuń" /></form></td>';
  9. }
  10.  



ale gdzie zrobić zamianę z 0 na 1 i odwrotnie i jak wysłać np później tą wartość do bazy z js.?tzn w js. bo chyba tam to trzeba zrobic zamienić 0 na 1 wysłać do edit.php i wysłać do bazy ?!tylko jak?
jacobson
szczerze watpie czy ktos napisze Ci calosc, ale moge Cie naprowadzic. Zapoznaj sie z biblioteka jQuery a glownie z http://api.jquery.com/jQuery.ajax/ dzieki temu bedziesz mogl bez przeladowania przeslac informacje do skryptu php ktory wykona zapytanie do bazy danych o zmiane tej wartosci i potem zwroci Ci np to czy sie powiodlo itp
BoomBox20
Próbuję teraz przerobić przykład z tego linku http://www.webskrypty.pl/2010/dodawanie-re...-pomoca-jquery/

żeby działało na tej samej zasadzie czyli zamiana z 0 na 1 i odwrotnie ale dalej jest coś nie tak bo dodaje mi nowego usera itp itd

indexxxx.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Dodawanie rekordu do bazy MySQL za pomocą jQuery | www.WEBskrypty.pl</title>
  6. <script src="http://code.jquery.com/jquery-latest.js"></script>
  7.  
  8.  
  9.  
  10. <script type="text/javascript">
  11. $(document).ready(function(){
  12. $("form#submit").submit(function() {
  13. // Przechwytujemy wartości z formularza i przesyłamy je do pliku insert.php
  14. var imie = $('input[name=imie]');
  15. //var nazwisko = $('input[name=nazwisko]');
  16.  
  17. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  18. if(imie.val() == "") {
  19. $('div.blad').fadeIn(400);
  20. // Usuwamy wiadomość o błędzie po 4 sekundach
  21. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  22. return false;
  23. }
  24.  
  25. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  26. /*if(nazwisko.val() == "") {
  27. $('div.blad').fadeIn(400);
  28. // Usuwamy wiadomość o błędzie po 4 sekundach
  29. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  30. return false;
  31. }
  32. */
  33. var data = 'imie=' + imie.val() ;//+ '&nazwisko=' + nazwisko.val()
  34.  
  35. $.ajax({
  36. type: "POST",
  37. url: "insert.php",
  38. data: data,
  39. success: function(){
  40. // Usuwamy wpisane dane
  41. $('#imie').val('');
  42. //$('#nazwisko').val('');
  43. // Wyświetlamy wiadomość o poprawnym dodaniu użytkownika
  44. $('div.dodano').fadeIn(400);
  45. // Usuwamy wiadomość o poprawnym dodaniu użytkownika po 4 sekundach
  46. setTimeout(function(){ $("div.dodano").fadeOut(400) }, 4000);
  47. }
  48.  
  49. });
  50. return false;
  51. });
  52. });
  53. </script>
  54. </head>
  55. <body>
  56.  
  57. <?php
  58. define('DB_HOST','localhost');
  59. define('DB_USER','xxx');
  60. define('DB_PASS','xxx');
  61. define('DB_NAME','xxx');
  62. $con=mysql_connect(DB_HOST,DB_USER,DB_PASS,true);
  63. $select_db = mysql_select_db(DB_NAME,$con);
  64. if($select_db)
  65. {
  66. mysql_query("SET NAMES utf8",$con);
  67. }
  68. else
  69. {
  70. die('Nie mozna sie polaczyc z baza danych ');
  71. }
  72. $query = "SELECT * FROM user";
  73. $result = mysql_query($query,$con);
  74. if($result===false && trim(mysql_error($con)))
  75. {
  76. echo("Błędne zapytanie: \n");
  77. }
  78. while($row = mysql_fetch_assoc($result))
  79. {
  80. $out[]=$row;
  81. }
  82.  
  83. foreach($out as $art)
  84. {
  85. echo '<tr>';
  86.  
  87.  
  88.  
  89. //echo "<td><label for='imie'>status:</label>".$art['status']."</td>";
  90.  
  91.  
  92. //echo '<td>'.htmlspecialchars($art['tresc'],ENT_QUOTES).'</td>';
  93.  
  94. echo '
  95. <form id="submit" method="post" name="submit" action="">
  96. <fieldset>
  97. <td><label for="imie">id: '.$art["id"].' status:</label>'.$art["status"].'</td>
  98. <td><input type="text" name="imie" id="imie" class="text" size="20" value="'.$art['status'].'"/></td>
  99.  
  100. <button type="submit" id="submit"> Dodaj użytkownika </button>
  101. </fieldset>
  102. </form>
  103. ';
  104.  
  105.  
  106.  
  107. echo '</tr>';
  108. }
  109. ?>
  110. <!--
  111. <div id="content">
  112. <h1>Dodawanie rekordu do bazy MySQL za pomocą jQuery</h1>
  113. <form id="submit" method="post" name="submit" action="">
  114. <fieldset>
  115. <legend>DODAJ UŻYTKOWNIKA</legend>
  116.  
  117. <label for="imie">Imię:</label>
  118. <br />
  119. <input type="text" name="imie" id="imie" class="text" size="20" />
  120. <br />
  121. <label for="nazwisko">Nazwisko:</label>
  122. <br />
  123. <input type="text" name="nazwisko" id="nazwisko" class="text" size="20" />
  124. <br /><br />
  125.  
  126. <button type="submit" id="submit"> Dodaj użytkownika </button>
  127. </fieldset>
  128. </form>
  129. -->
  130. <div class="dodano" style="display:none;">
  131. <p><img class="tick" src="tick.png" alt="" />Użytkownik został dodany do bazy.</p>
  132. </div>
  133. <div class="blad" style="display:none;">
  134. <p><img class="error" src="error.png" alt="" />Uzupełnij pola w formularzu!</p>
  135. </div>
  136. <div class="info">
  137. <p>&laquo; <a href="http://www.webskrypty.pl/dodawanie-rekordu-do-bazy-mysql-za-pomoca-jquery/">Wróć do artykułu</a></p>
  138. </div>
  139. </div>
  140.  
  141. </body>
  142. </html>
  143.  
  144.  


insert.php
  1. <?php
  2. //Odbieranie danych metodą post
  3. $imie = htmlspecialchars(trim($_POST['imie']));
  4. // $nazwisko = htmlspecialchars(trim($_POST['nazwisko']));
  5.  
  6.  
  7.  
  8. //Konfiguracja połączenia z baza mysql
  9. $baza_host=("localhost");
  10. $baza_login=("xxx");
  11. $baza_haslo=("xxx");
  12. $baza_nazwa=("xxx");
  13.  
  14. //Łączenie się z bazą mysql
  15. $polaczenie = mysql_connect($baza_host, $baza_login, $baza_haslo);
  16. $db = mysql_select_db($baza_nazwa);
  17.  
  18. //Dodawanie rekordów do bazy mysql
  19.  
  20. if($imie==0){
  21. $dodaj = "INSERT INTO user (status) VALUES ('1') ";
  22. mysql_query($dodaj) or die(mysql_error());
  23. mysql_close($polaczenie);
  24.  
  25. } else if ($imie==1){
  26. $dodaj = "INSERT INTO user (status) VALUES ('0')";
  27. mysql_query($dodaj) or die(mysql_error());
  28. mysql_close($polaczenie);
  29. }
  30. /*
  31.   $dodaj = "INSERT INTO user (imie) VALUES ('$imie')";
  32.   mysql_query($dodaj) or die(mysql_error());
  33.   mysql_close($polaczenie);
  34.  
  35.   */
  36. ?>
  37.  
  38.  
  39.  
jacobson
a nie powinno to wygladac tak ze tylko raz w bazie wystepuje uzytkownik ze statusem ustawionym domyslnie np na '0' a potem zamiast INSERT stosowac UPDATE ? http://www.w3schools.com/php/php_mysql_update.asp
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-2025 Invision Power Services, Inc.