Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][mysql]
Forum PHP.pl > Forum > Bazy danych > MySQL
kamioool
$kopy = mysql_query("SELECT kopy FROM osoba WHERE id='$id'");
$kop = mysql_fetch_array($kopy);
mysql_query("UPDATE osoba SET kopy='++$kop[0]' WHERE id='$id'");


Nie wywala żadnego błedu. Nie działa poprawnie poprostu zeruje wartośc. Z 5 na 0. Skrypt ma polegac na tym że po wejsciu na .../kop/index.php?id=33 ma zawiekszyc sie wartosc rekordu kopy dla danego ID o 1.
nospor
To co chcesz zrobic zalatwia sie jednym zapytaniem:
  1. UPDATE osoba SET kopy=kopy+1 WHERE id=TWOJEID
kamioool
Pewnie problem polega na tym że w składni coś jest nie tak. Musze pobrac rekord dla danego ID a pozniej zapisac go spowrotem z wartośćia +1.
nospor
Cytat
Pewnie problem polega na tym że w składni coś jest nie tak.
No twoja skladnia jest zla.
  1. <?php
  2. $kopy = mysql_query("SELECT kopy FROM osoba WHERE id='$id'");
  3. $kop = mysql_fetch_array($kopy);
  4. $kopn = $kop[0]+1;
  5. mysql_query("UPDATE osoba SET kopy=$kopn WHERE id=$id");
  6. ?>
kamioool
To jeszcze jedno pytanko:
id = 1 kopy = 5
id = 2 kopy = 6
id = 3 kopy = 7
id = 4 kopy = 9
Potrzebuje zrobic aby pobrał wyniki z bazy danych, ustawił je w kolejnosci pod wzgledem ilosci kopow a pozniej przyporzadkował miejsce w rankingu dla danego ID.
Cytat
ID 3 jest na 2 miejscu pod wgledem ilosci kopow.
Cezar708
  1. SELECT id, kopy
  2. FROM osoba ORDER BY kopy DESC


będziesz miał posegregowane i po kolei możesz sobie (od największej liczby kopy) pobierać już w PHP
kamioool
Najwidoczniej mnie nie zrozumiałeś smile.gif Nie chodzi mi o to jak będzie wyglądać zapytanie tylko jak będzie wyglądać kod php.
Nie wiem jak znaleść pozycje na liscie danego id pod wzgledem ilosci kopow.
Cezar708
hmm być może nie rozumiem, więc napiszę Ci jak wyświetlić listę z miejscami:

  1. <?php
  2. $result = mysql_query('SELECT id, kopy FROM osoba ORDER BY kopy DESC ');
  3. $i=1;
  4. while ($row = mysql_fetch_assoc($result)) {
  5. echo "ID {$row['id']} jest na $i miejscu pod wgledem ilosci kopow. (posiada {$row['kopy']} kopy)<br />";
  6. $i++;
  7. }
  8. ?>
kamioool
Z tym ze chce wyswietlic dla konkretnego ID jego numerek tongue.gif Nie chce całej listy tongue.gif
Kurcze za duzo już mieszam tongue.gif
Cezar708
AAACHAAA!!!

no to wystarczy jedno zapytanie mysql (mam nadzieje, że w PHP już sobie to poradzisz, jak nie daj znać)
  1. SELECT count(*)+1
  2. FROM osoby WHERE kopy > (
  3. SELECT kopy
  4. FROM osoby WHERE id=$idKtoregoMiejscaSzukasz
  5. )
kamioool
W niezrozumiałej dla mnie formie mi to napisałeś, jednak nie umiem sobie poradzic z php a sądziłem że dam rade. Moge prosić znowu o pomoc?
Cezar708
No z tego co ja rozumiem, to masz konkretne ID i chcesz sprawdzić na którym miejscu w rankingu jest ten ID.

Czyli dla konkretnego ID chcesz pobrać z bazy jego numerek (czyli na którym jest miejscu).

Wykorzystujesz tamto zapytanie i do dzieła, czyli:

  1. <?php
  2. // zakładam, że jesteś połączony na tym etapie z bazą danych
  3.  
  4. $id = $_GET['id']; // na przykład ID dla którego szukasz wyniku, możesz pobrać z adresu URL (ale to tylko propozycja)
  5. $res = mysql_query("
  6. SELECT count(*)+1
  7. FROM osoby WHERE kopy > (
  8. SELECT kopy
  9. FROM osoby WHERE id=$id
  10. ");
  11. $row = mysql_fetch_row($res);
  12. $numerek = $row[0]; // czyli piersza kalumna (bo tylko taka jest) tongue.gif 
  13.  
  14. // no i na końcu wyświetelenie rezultatu, czyli 
  15.  
  16. echo "ID $id jest na $numerek miejscu pod wgledem ilosci kopow.";
  17. ?>
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.