Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z przyciskiem.
Forum PHP.pl > Forum > Przedszkole
Gruchol
Witam,
Mam taki kod : http://wklej.org/id/1619031/
I problem leży tutaj :

  1. if(isset($_POST['like'])) {
  2. mysqli_query($db, "UPDATE baza SET rank=rank+1 WHERE id='$id'");
  3. header("Location: <a href="http://localhost/&quot%3b%29;" target="_blank">http://localhost/");</a>
  4. }


Ponieważ chcę aby po kliknięciu przycisku like do tabeli rank w bazie dodawał się 1 punkt.
Problem polega na tym, że po kliknięciu przycisku punkty dodają się do każdego rekordu po kolei a chcę aby dodało się w tym rekordzie w którym się kliknęło.
Np. mam taką tabelę :

http://screenshooter.net/101736853/dypirpx

I kliknę przycisk like przy raz to się dodaje jeden punkt, to jest okej tylko że jak kliknę drugi i trzeci raz to doda się do rekordu dwa i trzy a ma się dodawać tylko do raz.


rad11
a var_dump($id) co ma?

nierozumie dlaczego w value dajesz submit, zrob moze tak:
  1. <input type="image" name="like" src="like.png" value="<?php $id ?>" onfocus="blur()" />
  2.  
  3. if(isset($_POST['like'])) {
  4. mysqli_query($db, "UPDATE baza SET rank=rank+1 WHERE id='$_POST['like']'");
  5. header("Location: <a href="http://localhost/&quot%3b%29;" target="_blank">http://localhost/");</a>
  6. }
Gruchol
string(2) "27"
untorched
  1. mysqli_query($db, "UPDATE baza SET rank=rank+1 WHERE id=".(int)$id);


Bo chyba w bazie id masz jako int.
Gruchol
Tak w bazie jest id jako int. Gdy zamienię to co wysłałeś, przycisk nie reaguje.
rad11
  1. <input type="submit" name="like" src="like.png" value="<?php $id ?>" onfocus="blur()" />
Gruchol
rad przerobiłem troszkę to co wysłałeś ponieważ to zapytanie mysql nie chciało działać.
Zrobiłem to tak :

  1. $idl = $_POST['like'];
  2. echo "</form>";
  3. if(isset($_POST['like'])) {
  4. mysqli_query($db, "UPDATE baza SET rank=rank+1 WHERE id='$idl'");
  5. }


I teraz strona się ładuje jednak nadal po wciśnięciu przycisku nic się nie dzieje.
A przyciski wyglądają tak : http://screenshooter.net/101736853/sdydndv

Przyciski się naprawiły jednak zapytania do bazy nadal się nie wykonują .
rad11
  1. <td>
  2. <form method="POST">
  3. <input type="image" name="like" src="like.png" value="submit" onfocus="blur()" />
  4. <input type="text" value="$id" style="display:none;" name="id" />
  5. </form>
  6. </td>
  7.  
  8. if(isset($_POST['like'])) {
  9. mysqli_query($db, "UPDATE baza SET rank=rank+1 WHERE id=$_POST['id']");
  10. header("Location: <a href="http://localhost/&quot%3b%29;" target="_blank">http://localhost/");</a>
  11. }
  12.  
untorched
Matko boska. Dlaczego nie chcecie używać rzutowania na INT? Przecież tu SQL Injection jak się patrzy.

@rad11:
Cytat
<input type="text" value="$id" style="display:none;" name="id" />


Co to ma być?

  1. <input type="hidden" name="id" value="$id" />



  1. mysqli_query($db, "UPDATE baza SET rank=rank+1 WHERE id=".(int)$_POST['id']) or die(mysqli_error($db));
Gruchol
Okej wszystko działa do czasu.

Mam sortowanie tego id aby wyświetlało to które ma najwięcej głosów i wygląda to tak :

$zapytanie = mysqli_query($db, "SELECT * FROM reklama WHERE wys='1' ORDER BY rank DESC");

Tylko że teraz jest taki problem że gdy np. raz i dwa mają po 10 pkt to wszystko zaczyna szaleć i znowu daje na przemian.
Gdy liczby są różne jest wszystko ok.
untorched
Coś takiego powinno zadziałać

  1. $zapytanie = mysqli_query($db, "SELECT * FROM reklama WHERE wys='1' ORDER BY rank, id DESC");
Gruchol
Teraz sortuje odwrotnie i jest ten sam problem .

Zrobiłem $cos = var_dump($id);
i gdy to wyświetlam pokazuje się :

string(2) "26" i gdy klikam cały czas na 1 i ten sam przycisk zmienia się raz na string(2) "26" a raz na string(2) "25"

Ma ktoś może jeszcze jakieś pomysły jak to naprawić ?

@Edit
Już nie mam siły do tego :/
Cały dzień próbuje to naprawić i nici.

Nagrałem nawet krótki filmik aby pokazać na żywo co się dzieje :

https://www.youtube.com/watch?v=j36SJghu4ls...eature=youtu.be

Proszę o dalszą pomoc.
com
wrzuć ten kod po poprawkach smile.gif

zrobiłeś sobie sortowanie to się sortuje wiec się zmienia ?
Gruchol
Tak wygląda cały kod :

http://wklej.org/hash/63815c61a29/

No tak sortuje się ładnie ale jak np. 2 rekordy mają tą samą wartość w punktach to skrypt szaleje i daje każdemu który ma tyle samo pkt. Zobacz że klikam 1 przycisk a dodaje się na przemian do innego.
com
nie daje każdemu tylko je sortuje wiec jak klikasz potem to klikasz w rekord który jest na tym miejscu ale to już jest inny rekord, masz sortowanie po rankingu i id malejąco

miesza się bo sortujesz to, a że klikasz w tego samego lajka to to przeskakuje, albo wywal te sortowanie albo klikaj cały czas w ten sam rekord tam gdzie on jest a nie tam gdzie był na samym początku smile.gif

jak miałeś :
26 99
27 100

to jak zwiększysz 26 to bd miał
27 100
26 100

A nie
26 100
27 100

A Ty przyjmujesz te druga błędą wersje to potem wszytko skacze
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.