Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodatkowe pole podczas rejestracji
Forum PHP.pl > Forum > PHP
Rajdon
Witam, chciałbym napisać moduł, który do rejestracji w portalu doda pole "Polecający" (w tym polu każdy nowy user może podać nazwę użytkownika polecającego) i żeby później tworzyło cos w stylu rankingu osób które zaprosiły najwięcej znajomych + jakie to osoby (nick).

Jak coś takiego zrobić ? worriedsmiley.gif


Z góry dziękuje
Kszyhuu
Dodajesz w formularzu pole:
  1. <input type="text" name="polecil" size="10" class="input">

I później w php(zakładając że metoda formularza to post:
  1. if($_POST['polecil']!=""){
  2. $polecil = mysql_escape_string($_POST['polecil']);
  3. $polec = mysql_query("select id from USERS where login='$polecil'")
  4. mysql_query("Insert into polecil (id) values ($polec)");

A żeby później zrobić ranking, wystarczy wyciągnąć z bazy i zsumować liczbę wyników poszczególnego 'polecil':
  1. $sql = mysql_query("SELECT COUNT(*) FROM `polecil` WHERE `id`='ID_DANEGO_TYPKA'");

I wywołujesz normalnie przez php:
  1. echo 'Użytkownik XX polecił stronę '.$sql.' osobom.'

A jak chcesz zrobić spis osób polecających to robisz zapytanie masowe i wtedy order by.
Rajdon
Dzięki ale nie chce rankingu dla jednej osoby tylko dla wszystkich, żeby wyświetlało od razu np. jak to jest w top users poprostu, aby każdy mógł wejśc i zobaczyc ten ranking nawet, jeżeli w nim nei bierze udziału
R4D3K
Lol, napisany sposob napisany Kszychuu nie ogranicza sie do 1 osoby. Tylko każda osoba ktora polecila kogos bedzie w tym rankingu.
Rajdon
a no racja, sorry

Ps; a czy dało by się zrobic cos takiego, że polecanie odbywa się na zasadzie wejścia przez indywidualny link inny dla każdego polecającego ? Np. osoba o nicku "adam" miala by link "adres-strony/polecajacy/adam/ ?
thek
Tak... Routing php albo htaccess smile.gif
R4D3K
Można tylko będziesz musiał stowrzyć skrypt, który będzie edytował plik .htaccess poprzez dodawanie kolejnych linijek zamist tego bo to będzie poprsotu łatwiejsze stworzenie skryptu, który wywoła stronę twoją z odpowiednim parametrem GET:

  1. <form action="#" method="post">
  2. <input type="text" name="login" />
  3. <!-- i tak dalej inne pola rejestracji -->
  4.  

  1. if (isset($_GET['polecajacy']) {
  2. echo '<input type="hidden" name="polecajacy" value="'.$_GET['polecajacy'].'" />';
  3. }

  1. </form>


To jest prosty przykład, który wyświetla formularz rejestracji. Np dajesz dla jakieos zarejestrowanego usera polec nas innym z odpowiednim linkiem np http://example.org/rejestracja.php?polecajacy=123
User, który kliknie taki formularz bedzie mial w nim ukryte pole z wartoscia kto go polecil i dalej postępujesz jak zaproponował Kszychuu
Rajdon
R4D3K link niestety nie dziala, ale o coc takiego mi chodzi właśnie, żeby w polu poelcający znalazł się już wpisany nick
R4D3K
Rajdon oczywiście, że link nie działa bo tylko miał ci uzmysłowić jak to ma wyglądać. Stwórz sobie plik np rejestracja.php i wklej :

  1. <?php
  2. if (isset($_POST['register'])) {
  3. $polecil = mysql_escape_string($_POST['polecil']);
  4. $polec = mysql_query('select id from USERS where login="'.$polecil.'"');
  5. // tutaj mysql_connect i mysql_select_db
  6. mysql_query('Insert into polecil (id) values ($polec)');
  7. }
  8. else {
  9. echo '<form action="#" method="post" />';
  10. // twoje pola w rejstracji, login haslo itp.
  11. echo '<input type="submit" name="register" value="Zarejestruj mnie !" />';
  12. if (isset($_GET['polecajacy'])) {
  13. echo '<input type="hidden" name="polecajacy" value="'.$_GET['polecajacy'].'" />';
  14. }
  15. echo '</form>';
  16. }
  17. ?>


Na pewno, teraz obczaisz co i jak. Skrypt składa się z 2 części, pierwszy blok odbiera dane przesłane z formularza, drugi go wyświetla. Jeśli user został polecony to link jest w postaci http://www.twoj_adres_strony_www.pl/rejest...jacy.php?id=123 Klikając go wykona się 2 część skryptu czyli po prostu wyświetlenie formularza, który w zaleznosci od przeslanego parametru polecajacy, którym jest id osoby polecającej. Jeśli user sam trafi na strone i sie zarejestruje to nie będzie id polecającego. Po wypełnieniu formy do bazy danych zostanie zapisany nowy user wraz z id osoby go polecajacej, proste teraz questionmark.gif
Rajdon
  1. <?php
  2. if (isset($_POST['register'])) {
  3. $polecil = mysql_escape_string($_POST['polecil']);
  4. $polec = mysql_query('select id from USERS where login="'.$polecil.'"');
  5. // tutaj mysql_connect i mysql_select_db
  6. mysql_query('Insert into polecil (id) values ($polec)');
  7. }
  8. else {
  9. echo '<form action="#" method="post" />';
  10. // twoje pola w rejstracji, login haslo itp.
  11. echo '<input type="submit" name="register" value="Zarejestruj mnie !" />';
  12. if (isset($_GET['polecajacy'])) {
  13. echo '<input type="hidden" name="polecajacy" value="'.$_GET['polecajacy'].'" />';
  14. }
  15. echo '</form>';
  16. }
  17. ?>


Wiem jak to ma działać i wszystko dobrze tylko ja mam cms`a w którym jest folder modules i tam ma rejestracja.php i folder templates z szablonami w formacie .tpl i tam nie da rady z php wiec jak to zrobić inaczej ? Wiem, ze zminną np. $polecil trzeba w tpl zapisac jako {polecil} ale dalej jak... ? Jeszcze mam pytanie co do tego linka "http://www.twoj_adres_strony_www.pl/rejest...jacy.php?id=123" Jak to się dzieje, ze ma on akurat taka forme i czy można to ewentualnie zminić ?

Z góry dzękuję
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.