Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> + i -, zmiana rekordu bazy
awek520
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Witam.. Pisze sobie taki mały portal z możliwością oceny danego elementu (np. zdjęcia)
Chciałbym się dowiedziec, jak edytowac rekord w bazie, ale rekord liczbowy.. Np. do 51 dodajemy 1. wink.gif

Mam taki skrypt, nie działa mi też edycja danego rekordu, w sensie edycja po ID (który ma byc wybierany do danego elementu).

Oto częsc kodu:

  1. <?
  2. require_once "baza.php";
  3. $result = mysql_query("SELECT * FROM cytat") or die(mysql_error());
  4.  
  5. while ($dane=mysql_fetch_array($result)) {
  6.  
  7. echo "<font color='orange'>#";
  8. echo "".$wiersz['id']."";
  9. echo "</font> (";
  10. echo "".$wiersz['punkty']."";
  11. echo ")<br><a href='index.php?up&id=".$wiersz['id']."'><font color='#009900'>Mocne!</font></a>";
  12. echo "| <font color='#FF0000'><a href='index.php?down&id=".$wiersz['id']."'><font color='#FF0000'>Słabe!</font></a>";
  13. echo "<div class='cytat'><p><br>";
  14. echo "".$wiersz['tresc']."";
  15. echo "<br></p></div><div class='cytat_dol'></div>
  16.  
  17. <br>
  18. <a href='#gora'><p align='right'><small><font color='white'>Do góry ^</font></a></small></p>
  19. <hr>
  20. <br>";
  21.  
  22. }
  23.  
  24. if ($_POST["action"] == "up") {
  25.  
  26. // punkt w gore
  27.  
  28. $punkty = $_POST["punkty"];
  29.  
  30. $result = mysql_query("UPDATE cytat SET WHERE id='$id'") or die(mysql_error());
  31.  
  32.  
  33. }
  34.  
  35. if ($_POST["action"] == "down") {
  36.  
  37. // punkt w dol
  38.  
  39. $punkty = $_POST["punkty"];
  40.  
  41. $result = mysql_query("UPDATE cytat SET WHERE id='$id'") or die(mysql_error());
  42.  
  43.  
  44. }
  45. ?>



Mógłby mi ktoś pomoc, albo nakierowac?

Ten post edytował awek520 10.04.2014, 17:25:34
Go to the top of the page
+Quote Post
mar1aczi
post
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Odpowiedź na Twoje pytanie jest w dokumentacji: update.


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
awek520
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Czyli coś takiego?


  1. <?
  2. require "baza.php";
  3. $link=mysql_query("SELECT * FROM cytat ORDER BY id ASC");
  4. while($wiersz=mysql_fetch_array($link)){
  5.  
  6. echo "</font><font color='orange'>#";
  7. echo "".$wiersz['id']."";
  8. echo "</font> (";
  9. echo "".$wiersz['punkty']."";
  10. echo ")<br><a href='index.php?up&id=".$wiersz['id']."'><font color='#009900'>Mocne!</font></a>";
  11. echo "| <font color='#FF0000'><a href='index.php?down&id=".$wiersz['id']."'><font color='#FF0000'>Słabe!</font></a>";
  12. echo "<div class='cytat'><p><br>";
  13. echo "".$wiersz['tresc']."";
  14. echo "<br></p></div><div class='cytat_dol'></div>
  15. <br>
  16. <a href='#gora'><p align='right'><small><font color='white'>Do góry ^</font></a></small></p>
  17. <hr>
  18. <br>";
  19.  
  20. }
  21.  
  22. if ($_POST["action"] == "up") {
  23.  
  24. // punkt w gore
  25.  
  26. $punkty = $_POST["punkty"];
  27.  
  28. $result = mysql_query("UPDATE cytat SET punkty = punkty + 1 WHERE id='$id'") or die(mysql_error());
  29.  
  30.  
  31. }
  32.  
  33. if ($_POST["action"] == "down") {
  34.  
  35. // punkt w dol
  36.  
  37. $punkty = $_POST["punkty"];
  38.  
  39. $result = mysql_query("UPDATE cytat SET punkty = punkty - 1 WHERE id='$id'") or die(mysql_error());
  40.  
  41. }
  42. ?>


Nie wiem czy to będzie dobry system do takiego czegos.. : / chciałbym żeby, gdy klikło się poweidzmy "dobre", to edytuje się odrazu rekord punkty(+1) a dalej zostajemy na stronie głównej. smile.gif do tego nie wiem jak zrobic, żeby tylko raz mogło by się głosowac.. ktoś by coś doradziłquestionmark.gif

Ten post edytował awek520 10.04.2014, 18:52:43
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ajax, cookie, sprawdzenie IP + UserAgent + cookie
Go to the top of the page
+Quote Post
awek520
post
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Napisałeś to w dużym skrócie.. bardzo dużym
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Tworzysz linki
  1. echo '<a class="ocena" id="'.$wiersz['id'].'" type="plus">Dobre</a> <a class="ocena" id="'.$wiersz['id'].'" type="minus">Słabe</a>


Robisz akcję onclick
[JAVASCRIPT] pobierz, plaintext
  1. $(".ocena").on('click', function(){
  2. var type = $(this).attr('type'); //dzięki temu wiemy czy użytkownik kliknął słabe czy dobre
  3. })
[JAVASCRIPT] pobierz, plaintext

ajaxem wysyłasz dane i php robisz update
Go to the top of the page
+Quote Post
awek520
post
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Cytat(Turson @ 10.04.2014, 22:14:57 ) *
Tworzysz linki
  1. echo '<a class="ocena" id="'.$wiersz['id'].'" type="plus">Dobre</a> <a class="ocena" id="'.$wiersz['id'].'" type="minus">Słabe</a>


Robisz akcję onclick
[JAVASCRIPT] pobierz, plaintext
  1. $(".ocena").on('click', function(){
  2. var type = $(this).attr('type'); //dzięki temu wiemy czy użytkownik kliknął słabe czy dobre
  3. })
[JAVASCRIPT] pobierz, plaintext

ajaxem wysyłasz dane i php robisz update




A ten kod drugi to gdzie wstawic? w jakiej częsci kodu?
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


W tym samym pliku co jest link
Go to the top of the page
+Quote Post
awek520
post
Post #9





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


No tak, ale trzeba jakąś zmienną dopisac czy cos? gdy dodaje sam ten kod do pliku to wychodzi bląd.. coś z tym drugim "("..


Nie znam się na tym ajaxie.. jakaś czarna magia dla mnie to ; /
Go to the top of the page
+Quote Post
Turson
post
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Wywala ci błąd w konsoli bo musisz dołączyć bibliotekę jquery w <head>. Poczytaj o ajaxie, napisz coś i wróć.
Go to the top of the page
+Quote Post
awek520
post
Post #11





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Sciągłem skrypt z neta.. Niestety nie do końca działa.. Mozna dodawac tyle plusów ile się chce.

  1. <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  2. <strong>Cytat 1</strong>
  3. <a id="gora" type="gora">
  4. <img src="image/yes.png" alt="+" width="14" height="14"/>
  5. </a>
  6.  
  7. <!-- tutaj poniższy kod PHP -->
  8. <a id="dol" type="dol">
  9. <img src="image/no.png" alt="-" width="14" height="14"/>
  10. </a>
  11.  
  12. <?php
  13. mysql_connect("localhost", "root", "") or die ("Błąd: NIE MOŻNA POŁĄCZYĆ SIĘ Z BAZĄ DANYCH.");
  14. mysql_select_db("admin") or die ("Błąd: NIE MOŻNA NAZWIĄZAĆ POŁĄCZENIA Z BAZĄ DANYCH.");
  15. $rat = mysql_query("SELECT * FROM cytat WHERE id=11;");
  16. if($res = mysql_fetch_assoc($rat)) {
  17. print '<span id="11"> '.($res['ocena']-1).'</span> '; // id="ile"
  18.  
  19. }
  20. ?>
  21.  
  22. <script type="text/javascript">
  23. $(document).ready(function() {
  24. $("#gora").unbind().bind("click", function() {
  25. $.ajax({
  26. type: 'POST',
  27. url: 'glos.php',
  28. data: 'akcja=dodaj',
  29. success: function(wynik) {
  30. $("#11").html(wynik)
  31. }
  32. });
  33. return false;
  34. });
  35. $("#dol").unbind().bind("click", function() {
  36. $.ajax({
  37. type: 'POST',
  38. url: 'glos.php',
  39. data: 'akcja=odejmij',
  40. success: function(wynik) {
  41. $("#11").html(wynik)
  42. }
  43. });
  44. });
  45. return false;
  46. });
  47. </script>


glos.php

  1. <?php
  2. mysql_connect("localhost", "root", "");
  3. mysql_select_db("admin");
  4. $increase = "UPDATE cytat SET punkty=punkty+1 WHERE id=1;";
  5. $decrease = "UPDATE cytat SET punkty=punkty-1 WHERE id=1;";
  6. $active_rate = mysql_query("SELECT * FROM cytat WHERE id=1;");
  7. $how = 0;
  8. if($rt = mysql_fetch_assoc($active_rate)) {
  9. $how = $rt['punkty'];
  10. }
  11. if($_POST['akcja'] == 'dodaj') {
  12. mysql_query($increase);
  13. print $how++;
  14. } elseif($_POST['akcja'] == 'odejmij') {
  15. mysql_query($decrease);
  16. print $how--;
  17. }
  18. ?>




Chciałbym jeszcze, żeby automatycznie id wybierał z bazy, trzeba to dodac do id="'.$wiersz['id'].'" no ale nie dziala mi to.. : /
Tak samo nie edytuje rekordu w bazie.. ciągle zostaje taki sam..
Chcialbym jeszcze zrobic blokade, że tylko raz mozna głosowac, albo chociaz raz na dzien..


Pomoże ktoś?
Go to the top of the page
+Quote Post
Turson
post
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


data: 'akcja=dodaj',

spróbuj tak:
data: { akcja:'dodaj' },

analgiczne do odejmij
Go to the top of the page
+Quote Post
awek520
post
Post #13





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Nic, dalej to samo.. rekord w bazie się zmienia smile.gif tylko że można ciągle naciskac ++ albo --
Go to the top of the page
+Quote Post
Turson
post
Post #14





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Jeżeli rekord w bazie już się zmienia, a chcesz dodać blokadę, że można np. głosować raz, to musisz stworzyć nową tabelę, np. oceny z kolumnami: cytat_id, user_id(lub IP użytkownika w zależności czy masz system logowania), data
Wtedy po naciśnięciu plus/minus sprawdzasz przed update, czy użytkownik już głosował - zwykłe mysql_num_rows z warunkiem where cytat=cytat AND user=user/ip
Go to the top of the page
+Quote Post
awek520
post
Post #15





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


Cytat(Turson @ 12.04.2014, 11:35:23 ) *
Jeżeli rekord w bazie już się zmienia, a chcesz dodać blokadę, że można np. głosować raz, to musisz stworzyć nową tabelę, np. oceny z kolumnami: cytat_id, user_id(lub IP użytkownika w zależności czy masz system logowania), data
Wtedy po naciśnięciu plus/minus sprawdzasz przed update, czy użytkownik już głosował - zwykłe mysql_num_rows z warunkiem where cytat=cytat AND user=user/ip



No tak, ale wtedy chyba tylko pod jeden id będzie to działac tak? Czy źle zrozumiałem.. Muszę tworzyc nową tabele? Czy można np. w tej tabeli z cytatami to dodac?

A gdzie dodac ten update?

ps.. i tak do dupy działa.. : / bo trzeba odświezyc stronę żeby pokazała się ilośc.. : /

Ten post edytował awek520 12.04.2014, 10:45:50
Go to the top of the page
+Quote Post
Turson
post
Post #16





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Baza danych powinna wyglądać mniej więcej tak:

cytaty: id | tytul | opis itd....| ocena
oceny: cytat_id | x | data
gdzie x to user_id lub user_ip w zależności od tego czy masz logowanie czy nie

Po naciśnięciu przycisku plus/minus:
1. Wysyłasz czy to plus czy to minus ("plus i minus to jedyne co widzę" tongue.gif )
2. Sprawdzasz czy w tabeli ocny istnieje wiersz spełniający warunki cytat_id i x
- jeżeli 1 to: komunikat, ze uzytkownik głosował, exit
- jeżeli 0 to:
a) update tabeli cytaty gdzie cytat_id = wysłane ajaxem id
cool.gif dodajesz to tabeli oceny potrzebne dane
c) pobierasz aktualną ocenę i wyświetlasz ją

Ten post edytował Turson 12.04.2014, 10:48:47
Go to the top of the page
+Quote Post
awek520
post
Post #17





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


O boż.. Czemu to musi byc takie trudne.. ; / Tabele akurat mam zrobioną dobrze wink.gif
Go to the top of the page
+Quote Post
Turson
post
Post #18





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Jak nie chcesz przebudowywać bazy, to można to zrobić też na ciasteczku chociażby, ale ciasteczka można edytować, usunąć smile.gif
Go to the top of the page
+Quote Post
awek520
post
Post #19





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


coś takiego?

  1.  
  2.  
  3. <script type="text/javascript">
  4. $(document).ready(function() {
  5. $("#gora").unbind().bind("click", function() {
  6. $.ajax({
  7. type: 'POST',
  8. url: 'glos.php',
  9. data: { akcja:'dodaj' },
  10. if (user_ip = 0) { Głos przyjety!
  11. success: function(wynik) {
  12. $("#11").html(wynik)
  13. }
  14. }
  15. if (user_ip < 1) { Glosowałeś już! }
  16. });
  17. return false;
  18. });
  19. $("#dol").unbind().bind("click", function() {
  20. $.ajax({
  21. type: 'POST',
  22. url: 'glos.php',
  23. data: { akcja:'odejmij' },
  24. if (user_ip = 0) { Głos przyjety!
  25. success: function(wynik) {
  26. $("#11").html(wynik)
  27. }
  28. }
  29. if (user_ip < 1) { Glosowałeś już! }
  30. });
  31. });
  32. return false;
  33. });
  34. </script>
  35.  


Tak mam

Ten post edytował awek520 12.04.2014, 11:07:36
Go to the top of the page
+Quote Post
Turson
post
Post #20





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Skąd wziąłeś user_ip?
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 00:48