Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql] Zapis do bazy danych z parametru
Forum PHP.pl > Forum > Przedszkole
Swirek
Napisałem skrypcik który ma po podaniu w adresie parametru np
www.costam.pl/index?id=1 zwiększyć o jeden dane w tabeli "turns"
Chodzi o to że jak by ktoś poleci komuś stronke to wzamian przybędzie mu np. 1 punkcik ;]
do tego jeśli ktoś by miał ochote to blokade na ip przez 24 godziny.
Bardzo prosze o pomoc

num to jest oczywiście pole z numerem id
turns to nazwa pola do którego ma być dodana wartość 1
a players to nazwa tabeli

$sql = mysql_connect ($dbhost, $dbuser, $dbpass);
$mysql = mysql_select_db("$dbname");
$users = loadUser($id);
{
$query="SELECT num FROM players WHERE '$id'";
$wykonaj=mysql_query($query);
$queri="UPDATE players SET turns = 'turns' + 1 where '$id'";
if(!mysql_query($queri));
saveUserDataNet($id,"turns");
}
mysql_close($sql);

Prosze pomóźcie sadsmiley02.gif
dr_bonzo
Nie to forum: Gotowe skrypty > Szukam --> Przedszkole, przenosze
uzywaj odpowiedniego [ bbcode ] do wstawiania kodu
Świrek
Ups to przepraszam za umieszczenie w złym dziale i odrazu wskazówka że chodzi o coś tupu jak było w battlefighcie (ta gierka)
Jeśli klikniesz w polecający link przybyje Ci np. kaska smile.gif
Swirek
Widze że i tak mi tutaj nikt nie pomoże sad.gif
Nie spamuje już więcej wam forum.
Sprawdze jeszcze wątek jutro
Kuziu
Tworzysz 2 tabele SQL'a

1 zapisuje IP i czas w którym ktoś kliknął
2 zapisuje kto ile ma punktów

i teraz w momencie kliknięcia sprawdzasz czy takie IP nie klikało przez ostatnie 24 godziny jeśli nie to dodajesz punkt osobie która poleciła.

Dodatkowo mozesz co jakiś czas czyścić z tabeli IP wpisy starsze niż 24 godziny chyba że nie przeszkadza Ci to że będzie sie ona troche rozrastać
Swirek
No a co z tym kodem dodawania punktu sad.gif
Bo chyba całkowicie go powaliłem bo coś nie działa
Swirek
Odpowiadam jeszcze raz bo temacik umarł a ja naprawde potrzebuje help z tym kodem winksmiley.jpg
LBO
0. Osoba wchodzi na stronke Usera (jego id wyciągasz z $_GET['id']) poprzez link polecający.
1. Przeszukujesz BD w poszukiwaniu ip Osoby. Jeżeli nie znalezione idziesz do pkt. 3
2. Sprawdzasz datę ostatniego kliknięcia Osoby. Jeżeli nie mineło więcej, niż 24h (lub jakikolwiek, ustalony przez ciebie okres) idź do pkt. 4.
3. Dodajesz punkt do punktacji_usera i zapisujesz (lub nadpisujesz) ip Osoby oraz obecny czas w BD.
4. Generujesz stronę.
Swirek
$_get to znaczy jak dokładniej.
jednej linijki kodu mi brakuje jak dokładnie to wyciągnąć.
Prosze jeśli mógłbyś
Swirek
Chyba się zarejestruje bo edytować nie moge postów.
ok wiem jak z adresu nie załapałem ale powyżej mam kod który nie działa.
i co w tym kodziku jest nie tak.
nospor
nie mozesz pisac tak: pole='pole' + 1. 'pole' w ciapkach jest traktowane jako string a nie jako pole tabeli. no i te nie szczesne ....where $id. w where ma byc warunek, a nie sama liczba.
ma byc:
  1. <?php
  2.  
  3. $id= $_GET['id'];
  4. $sql = mysql_connect ($dbhost, $dbuser, $dbpass);
  5. $mysql = mysql_select_db($dbname);
  6. $users = loadUser($id);
  7. {
  8. $query='SELECT num FROM players WHERE pole_z_id='.$id;
  9. $wykonaj=mysql_query($query);
  10. $queri='UPDATE players SET turns = turns + 1 where pole_z_id='.$id;
  11. if(!mysql_query($queri));
  12. saveUserDataNet($id,"turns");
  13. }
  14.  
  15. ?>

za pole_z_id wstaw se nazwe pola z id.

ps: jesli jeszcze raz zaczniesz pisac kilka postów pod sobą, to mozesz sie przekonac na wlasne oczy jak wygląda zamkniety topic. Tak wiec zrob co mowiles - zarejestruj sie i edytuj smile.gif

ps2: ogolnie ten twoj kod nadaje sie caly do przeróbki, ale ja poprawilem tylko doczesne bledy winksmiley.jpg
Swirek
Wielkie dzięki zaraz to wytestuje a następny post już najwyżej będzie na zarejestrowanym użytkownku smile.gif
Swirek
Drobne poprawki i działa smile.gif
Dzięki Ci wielkie!!! :* tongue.gif
i teraz inny problemik.
Ip jak ustawić na 24h żeby np. się z tabeli kasował po 24h.
aha lepiej nie kasować wogóle ip tylko sprawdzać warunek tylko jak napisać warunek dla 24 godzin? w dacie
Luke_Star
może cron?
Swirek
kurcze tylko że narazie nie mam serwera z cron jobem ;/
też o tym już myślałem alezrobie to nieco inaczej smile.gif
Zapisze do bazy danych date z dodanymi 24h.
I napisze warunek jeśli data<data+ to ma nie dodawać i zwróci wartość true jeśli zła to wartość false tzn. dodanie winksmiley.jpg
ip ustawie w 2 polu tabeli.
Według ip będe wyszukiwał osobe.
jeśli nie znajdzie ip w bazie danych to doda ip,date+ i punkt poleconemu.
jeśli ip znajdzie to funkcja z jakimś tam innym tekstem.
Teraz się troche pobawić z kodem.
Jeśli to tak nie może być prosze o poprawke smile.gif
LBO
Cytat
kurcze tylko że narazie nie mam serwera z cron jobem

Proszę.
Swirek
Jesteś wielki Dziękuje ;D
kolejne pytani bo poprostu jeszcze raczkuje z php sad.gif
Jak mam sprawdzić zgodność ip w bazie?
tzn. jaki warunek napisać w if?
Swirek
dry.gif

  1. <?php
  2. $id= $_GET['id'];
  3. $sql = mysql_connect (localhost, user, haslo);
  4. $mysql = mysql_select_db(nazwa bazy);
  5. $ipadres = $REMOTE_ADDR;
  6. $nextclick = time() + (* 24 * 60 * 60);
  7.  
  8. $baza='SELECT id FROM polec WHERE id='.$id;
  9. $wyconaj=mysql_query($baza);
  10. if ($baza[ipadres] != $ipadres)
  11. {
  12. {
  13. $queryy='SELECT id FROM polec WHERE id='.$id;
  14. $wykonajj=mysql_query($queryy);
  15. mysql_query("UPDATE polec SET polectime = $polectime + 86400 WHERE id='.$id;");
  16. mysql_query("UPDATE polec SET ipadres = $ipadres WHERE id='.$id;");
  17.  
  18. echo "<center> Zostales wsysniety przez U.F.O o numerze $id <BR>";
  19. echo "Twój IP: $ipadres<br />";
  20. echo "Aktualna godzina:<font color=green>  ". date(' Y-m-d G:i:s') ."n";
  21. echo "</font><BR>Ponownie mozesz zostac wsysniety:<font color=red> ". date('Y-m-d G:i:s', $nextclick) ."n";
  22. echo "<BR><BR><a href=index.php><font color=blue size=2>Strona Gry<BR>ZAPRASZAMY<BR>WWW.UFO.Z.PL</a></center> ";
  23. }
  24. {
  25. $query='SELECT num FROM players WHERE num='.$id;
  26. $wykonaj=mysql_query($query);
  27. $queri='UPDATE players SET turns = turns + 1 where num='.$id;
  28. }
  29. }
  30. else
  31. echo ("<center><BR><BR> Dzis juz byles raz porwany przez UFO </center>");
  32.  
  33. ?>


I co tu jest nie tak.
wyskakuje taki blad
Warning: mysql_query(): Access denied for user 'swirek'@'localhost' (using password: NO) in /home/swirek/public_html/polec.php on line 27

Warning: mysql_query(): A link to the server could not be established in /home/swirek/public_html/polec.php on line 27
Gość
Cytat
Access denied for user 'swirek'@'localhost' (using password: NO)

Jak sam blad wskazuje uzytkownik swirek laczacy sie bez hasla nie ma dostepu do serwera MySQL. Dlaczego ? Najprawdopodobniej nie masz utworzonego konta w MySQL. Jak to zrobic ? Zaloguj sie jako root w do MySQLa i wydaj nastepujace polecenie:
GRANT ALL PRIVILEGES ON *.* TO 'nazwa_utywkonika'@'localhost' IDENTIFIED BY 'haslo_uzytkownika';
Swirek
Konto utworzone jest
Tabele sa utworzone wszystko jest
haslo rowniez poprawne jest wiec chyba blad w kodzie
mike
  1. <?php
  2.  
  3. // ...
  4. $sql = mysql_connect (localhost, user, haslo);
  5. $mysql = mysql_select_db(nazwa bazy);
  6. // ...
  7.  
  8. ?>

A masz utworzone takie stałe, które przekazujesz? I czy mają dobre wartości?
Swirek
Tak mam sad.gif
teraz zauważyłem że niepotrzebnie 2 razy wybieram baze danych poec ale usunięcie jednego nic nie daje ;/
zauważyłem błąd z polectime=$polectime nie zdefiniowane
wiec zmienilem polectime=86400

  1. <?php
  2. $id= $_GET['id'];
  3. $sql = mysql_connect (localhost, user, haslo);
  4. $mysql = mysql_select_db(nazwabazy);
  5. $ipadres = $REMOTE_ADDR;
  6. $nextclick = time() + (* 24 * 60 * 60);
  7.  
  8. $baza='SELECT id FROM polec WHERE id='.$id;
  9. $wyconaj=mysql_query($baza);
  10. if ($baza[ipadres] != $ipadres)
  11. {
  12. {
  13. mysql_query("UPDATE polec SET polectime = 86400 WHERE id='.$id;");
  14. mysql_query("UPDATE polec SET ipadres = $ipadres WHERE id='.$id;");
  15.  
  16. echo "<center> Zostales wsysniety przez U.F.O o numerze $id <BR>";
  17. echo "Twój IP: $ipadres<br />";
  18. echo "Aktualna godzina:<font color=green>  ". date(' Y-m-d G:i:s') ."n";
  19. echo "</font><BR>Ponownie mozesz zostac wsysniety:<font color=red> ". date('Y-m-d G:i:s', $nextclick) ."n";
  20. echo "<BR><BR><a href=index.php><font color=blue size=2>Strona Gry<BR>ZAPRASZAMY<BR>WWW.UFO.Z.PL</a></center> ";
  21.  
  22. }
  23. {
  24. $query='SELECT num FROM players WHERE num='.$id;
  25. $wykonaj=mysql_query($query);
  26. $queri='UPDATE players SET turns = turns + 1 where num='.$id;
  27. }
  28. }
  29. else
  30. echo ("<center><BR><BR> Dzis juz byles raz porwany przez UFO </center>");
  31.  
  32. ?>

Teraz kod wyglada tak ale nie aktualizuje bazy danych
Bledu nie ma wczesniej zamknalem baze danych za wczesnie ;]
Gość
Tu masz blad : (nie zamknales apostrofy odnosnie konkatenacji)
  1. <?php
  2. $query='SELECT num FROM players WHERE num='.$id;
  3. ?>

Powinno byc :
  1. <?php
  2. $query='SELECT num FROM players WHERE num='.$id.' ; ';
  3. ?>
Swirek
juz to sprawdzam smile.gif
a u gory to samo?
nie dziala sad.gif
mike
Gośću doczytaj może sobie o podstawach i nie pisz takich głupot bo w błąd innych wprowadzasz.
Operatory Stringów
Swirek
jak ja sie ukałem to uczyłem się tak i zawsze tak pisze skrypty :/
i chyba są dobrze tongue.gif
a wróciłem do kodu powyżej sad.gif

a tak na marginesie
nawet śliczna Miki jesteś biggrin.gif
Gość
@mike_mech - oswiec mnie prosze gdzie wedlug ciebie popelnilem blad ?
Swirek
Bledu nie popelniles bo napisales tez poprawnie ale moj kod tez jest w tym miejscu akurat poprawny.
mike
Cytat(Gość @ 31.05.2006, 19:23 ) *
@mike_mech - oswiec mnie prosze gdzie wedlug ciebie popelnilem blad ?

Twoim błędem jest stwierdzenie że w tym fragmencie:
  1. <?php
  2. $query='SELECT num FROM players WHERE num='.$id;
  3. ?>

jest jakiś błąd.
A wyobraź sobie że tam nie ma żadnego błędu.

P.S.
~Swirek dzięki. Powtórzę Narzeczonej smile.gif
Swirek
a ja już myślałem że taka inteligenta kobieta ;]
Dobra ale wracając do tematu sad.gif
Dalej nie aktualizuje bazy danych
czy jak wybrałem jedną tabele w bazie i potem 2 musze tą pierwszą jakoś odznaczyć?
Gość
Teraz bym sie doczepil do fragmentu
  1. <?php
  2. mysql_query("UPDATE polec SET polectime = 86400 WHERE id='.$id;");
  3. mysql_query("UPDATE polec SET ipadres = $ipadres WHERE id='.$id;");
  4. ?>

i zmienil na tak:
  1. <?php
  2. mysql_query("UPDATE polec SET polectime = 86400 WHERE id='$id';");
  3. mysql_query("UPDATE polec SET ipadres = $ipadres WHERE id='$id';");
  4. ?>


Dzieki Mike za oswiecenie, czlowiek czasem zapomina o najprosztszych rzeczach.
Jezeli teraz w moim rozumowaniu jest blad to tez mnie popraw, chociaz juz powinno byc lepiej, bo wedlug mnie niepotrzebnie tam byly kropki w warunkach WHERE.
Swirek
Sprawdzam tongue.gif
no chyba jednak potrzebne sad.gif
ale jest faktycznie tam bląd z "
mike
smile.gif właśnie ten sam fragment już miałem podawać.

Zmieniłbym tylko na taki kod:
  1. <?php
  2.  
  3. mysql_query( 'UPDATE polec SET polectime = 86400 WHERE id=' . $id );
  4. mysql_query( 'UPDATE polec SET ipadres = ' . $ipadres . ' WHERE id=' . $id );
  5.  
  6. ?>


Pole id to liczba, więc apostrofy sa niepotrzebne.
Lepiej nich baza porównuje wartość jak liczbe a nie jak stringa.
Ale to raczej dla pewności a nie z konieczności.
Swirek
Działa jeszcze na dole tylko miałem to zmienić tongue.gif (ten sam błąd) ale warunek nie sprawdza ;]
Next zagadka smile.gif
zmieniłem na if (ipadres != $ipadres)
ale tez nie pyka

a wracam do starego ip nie zapisalo sad.gif
Gość
A co to w ogole jest ?
  1. <?php
  2. $baza='SELECT id FROM polec WHERE id='.$id;
  3. $wyconaj=mysql_query($baza);
  4. if ($baza[ipadres] != $ipadres)
  5. ?>

To przeciez bez sensu, bo co to jest to $baza ? $baza to zmienna w ktorym jest zapisane pytanie, moze po wykonaniu polecenia mysql_query bys sczytal dane jakie dostaniesz ? Uzyj np. mysql_fetch_array. Oprocz tego zle jest zapytanie do bazy - po nim dostaniesz tylko id z tabeli polec, a chcesz jakis IP wpisany, wiec albo zrobi SELECT * ..., albo SELECT id, inne_rzeczy_co_chcesz_wyciagnac_z_bazy.
Swirek
czyli coś takiego
  1. <?php
  2. $baza = mysql_query("SELECT id ipadres FROM polec WHERE id=' . $id ;");
  3. if ($baza[ipadres] != $ipadres)
  4. ?>

moze tak być?

nie może a możesz napisać jak byś ty to zrobił bo mi już mózg wysiadł dziś po południu :/
nospor
@swirek i tym sposobem zarabiasz upomnienie za nieczytanie co do ciebie pisza:
Cytat
Uzyj np. mysql_fetch_array
i za niechec do manuala

ps: i dorzucam bbcode smile.gif popraw prosze

edit: pomijam juz fakt ze skladnia twojego zapytania jest porazajaca. na szybko cos pisales, nawet nie sprawdziles, a efety widac
Gość
@nospor ci juz napisal, zebys spojrzal do manuala na temat funkcji co napisalem. Troche ci podpowiem:

  1. <?php
  2. $zapytanie='SELECT id, ipadres FROM polec WHERE id='.$id; 
  3. $resource=mysql_query($zapytanie); 
  4. while ($result=mysql_fetch_array($resource)) {
  5.  if ($result['ipadres']!=$ipadres) {
  6. //zrob co tam chcesz
  7.  }
  8. }
  9. ?>


Pisze na szybko, wiec jakbym mial jakies bledy to poprawcie mnie.
Swirek
Dziekuje panu u góry smile.gif
ale z kodu powyzej dlaczego ip nie zapisuje? sad.gif
siemakuba
co to znaczy, że nie zapisuje? Nie zapisuje żadnych danych?
  1. <?php
  2. ?>
podpowie dlaczego.

zapisuje ale nie ma wartości IP wpisanej? register_globals" title="Zobacz w manualu php" target="_manual
  1. <?php
  2. $ipadres = $REMOTE_ADDR;
  3. // zmieniasz na
  4. $ipadres = $_SERVER['REMOTE_ADDR'];
  5. ?>


pozdr.
Swirek
Parse error: syntax error, unexpected T_ELSE in /home/swirek/public_html/polec.php on line 32
zmieniłem ten ip sad.gif
ja juz nic nie lapie ;]

  1. <?php
  2. $id= $_GET['id'];
  3. $sql = mysql_connect (localhost, user,haslo);
  4. $mysql = mysql_select_db(nazwabazy);
  5. $ipadres = $_SERVER['REMOTE_ADDR'];
  6. $nextclick = time() + (* 24 * 60 * 60);
  7.  
  8.  
  9. $baza='SELECT id, ipadres FROM polec WHERE id='.$id; 
  10. $resource=mysql_query($baza); 
  11. while ($result=mysql_fetch_array($resource)) {
  12.  if ($result['ipadres']!=$ipadres) {
  13.  
  14. mysql_query( 'UPDATE polec SET polectime = 86400 WHERE id=' . $id );
  15. mysql_query( 'UPDATE polec SET ipadres = ' . $ipadres . ' WHERE id=' . $id );
  16.  
  17. echo "<center> Zostales wsysniety przez U.F.O o numerze $id <BR>";
  18. echo "Twój IP: $ipadres<br />";
  19. echo "Aktualna godzina:<font color=green>  ". date(' Y-m-d G:i:s') ."n";
  20. echo "</font><BR>Ponownie mozesz zostac wsysniety:<font color=red> ". date('Y-m-d G:i:s', $nextclick) ."n";
  21. echo "<BR><BR><a href=index.php><font color=blue size=2>Strona Gry<BR>ZAPRASZAMY<BR>WWW.UFO.Z.PL</a></center> ";
  22.  
  23. }
  24. {
  25. $query='SELECT num FROM players WHERE num='.$id;
  26. $wykonaj=mysql_query($query);
  27. mysql_query( 'UPDATE players SET turns = turns + 1 WHERE num=' . $id );
  28. }
  29. }
  30. else
  31. echo ("<center><BR><BR> Dzis juz byles raz porwany przez UFO </center>");
  32.  
  33. ?>
siemakuba
ejj, dude :)
nikt chyba nie będzie za ciebie sprawdzał poprawności zamykania klamerek, rajt?

podpowiedź: co to za konstrukcja w liniach 24/25?

zrob sobie odpowiednie wcięcia w kodzie, popatrz gdzie masz co otwarte, gdzie zamknięte i popraw to tak jak należy.

pozdr.
Swirek
Ja ide już spać bo normalnie jak takich rzeczy nie widze to jest źle tongue.gif
taka klapa.
Dzięki
niestety ip dlaej nie działa sad.gif
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.