Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Wyciągnie danych z mysql przez pętlę.
Klycior
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 31.05.2009

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


Cześć,

Mam stronkę na której każdy użytkownik ma swój link refrakcyjny który rozsyła znajomym i nabija mu się licznik odwiedzin.Działa to tak: Jeżeli ktoś wejdzie w jego link do to bazy ref dodaje się IP odwiedzającego oraz ID zapraszającego czyli coś takiego:
(IMG:http://img691.imageshack.us/img691/6964/48959338.jpg)


Każdy użytkownik może sprawdzić ile osób weszło w jego link a o to system sprawdzający:

  1. $id = mysql_fetch_row(mysql_query("SELECT id FROM users WHERE login='$login'"));
  2. $ile = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM ref WHERE id_user='".$id[0]."'"));
  3. echo '<h1><center>Zaprosiłeś '; echo $ile[0]; echo ' osoby/osób.</h1></center>';
  4. echo '<h2><center>Twój link to: <br><br><a href=http://nefix.pl/zaproszenie.php?ref=';
  5. echo "$id[0]";
  6. echo '><font color=red>http://nefix.pl/zaproszenie.php?ref=';
  7. echo "$id[0]";
  8. echo "</font></a></h2></center>";


Chciałbym zrobić dla siebie listę kto ma najwięcej zaproszonych po to aby wynagrodzić osobę u której weszło najwięcej osób w link.Na liście wystarczy ilość zaproszonych oraz nick użytkownika.

Pomoże ktoś ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


  1. $id = mysql_fetch_row(mysql_query("SELECT id FROM users WHERE login='$login'"));
  2. $ile = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM ref WHERE id_user='".$id[0]."'"));


To można zapisać mniej więcej tak:
  1. SELECT COUNT(`id`) FROM `ref` WHERE `id_user` = (SELECT `id` FROM `users` WHERE `login` = "'.$login.'" LIMIT 1)



A to co Ty chcesz zrobić:
  1. SELECT `users`.`login`, count(`ref`.`id`) AS `zaproszen` FROM `ref`
  2. LEFT JOIN `users` ON(`ref`.`id_user` = `users`.`id`)
  3. ORDER BY `zaproszen` DESC


Chyba tak (IMG:style_emoticons/default/haha.gif)

Ten post edytował fifi209 5.06.2010, 09:13:17
Go to the top of the page
+Quote Post
Klycior
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 31.05.2009

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


No dobrze ale jak teraz tego użyć ?

Wybaczcie ale dopiero co poznaję język PHP.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


  1.  
  2. $sql = 'zapytanie które dałem';
  3.  
  4. $select = mysql_query($sql);
  5.  
  6. while($data = mysql_fetch_assoc($select)) {
  7. echo 'Uzyszkodnik: '.$data['login'].' ma '.$data['zaproszen'].' zaproszen';
  8. }
Go to the top of the page
+Quote Post
Klycior
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 31.05.2009

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


Wiem że to może być śmieszne co napiszę ale nie potrafię zrobić zapytania z tego ponieważ zwraca mi błąd.
Nigdy nie operowałem na takich długich zapytaniach.

Będę bardzo wdzięczny jeżeli wrzucisz mi gotowca.
Go to the top of the page
+Quote Post
Van Pytel
post
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 6
Dołączył: 3.03.2010

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


A jaki blad? Napisz dokladnie co Ci pisze.
Wtedy mozna wiecej powiedziec co jest zle
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Van Pytel @ 5.06.2010, 11:34:05 ) *
A jaki blad? Napisz dokladnie co Ci pisze.
Wtedy mozna wiecej powiedziec co jest zle


To co kolega napisał to raz.

Dwa pokaż jak jest zbudowana baza danych dla tych dwóch tabel.
Go to the top of the page
+Quote Post
Klycior
post
Post #8





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 31.05.2009

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


(IMG:http://img717.imageshack.us/img717/7301/77098315.jpg)


Mógł by mi ktoś stworzyć takie zapytanie które ja powinienem zrobić ale nie umiem ?

I chciałbym również podziękować wam za chęci (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Po pierwsze: Zapytanie jest proste. Jeśli nie masz pomysłu na to jak napisać je to trudniejsze będą dla Ciebie nie do napisania. W takim wypadku radzę albo zacząć się do tego przykładać jak należy, albo dać sobie spokój z programowaniem jakimkolwiek. Przerośnie Cię to inaczej.
Po drugie: zrzucam na karb niedoświadczenia, ale IP przechowuje się w bazie nie jako varchar tylko int (po użyciu jednej funkcji konwertującej).
Po trzecie: Fifi już Ci podpowiada, ale jego zapytanie można prościej rozwiązać grupowaniem i liczeniem tam. Wtedy poda jak na tacy nie dla jednego usera, tyko wszystkich (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(thek @ 5.06.2010, 13:29:49 ) *
Po trzecie: Fifi już Ci podpowiada, ale jego zapytanie można prościej rozwiązać grupowaniem i liczeniem tam. Wtedy poda jak na tacy nie dla jednego usera, tyko wszystkich (IMG:style_emoticons/default/smile.gif)


Hmm, a to które napisałem
  1. SELECT `users`.`login`, count(`ref`.`id`) AS `zaproszen` FROM `ref`
  2. LEFT JOIN `users` ON(`ref`.`id_user` = `users`.`id`)
  3. ORDER BY `zaproszen` DESC


Funkcja o której mowa ip2long - może Cię to naprowadzi.
Go to the top of the page
+Quote Post
Klycior
post
Post #11





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 31.05.2009

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


Wyjechałem na weekend więc nie mogłem odpisać.

Jak wielu z was zauważyła temat napisałem w dziale "Przedszkole" czyli początki to wydaje mi się że teksty typu "Jak takich podstaw nie wiesz to się nie bierze za programowanie" nie są na miejscu bo naprawdę mi zależy a jeżeli ktoś już ma coś przeciwko to może zachować to dla siebie.

Mogę zapłacić jeżeli ktoś mi pomoże zrobić to o co prosiłem.
Nie potrafię stworzyć zapytania które dostałem od fifi209 któremu bardzo dziękuję za pomoc.
Go to the top of the page
+Quote Post
thek
post
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Napiszę to zapytanie w sposób "ludzki"... Weź policz wszystkie adresy IP pogrupowane według id_użytkownika. Jeśli chcesz możesz jeszcze dołączyć tabelę użytkowników i pobrać z niej nazwę użytkownika.
Tak więc całość zapytania to:
  1. SELECT u.nazwa_usera, count(adres_ip) AS ile FROM referencyjne AS r LEFT JOIN users AS u ON r.id_usera = u.id GROUP BY r.id_usera
czy coś w ten deseń... Można jeszcze jedynie kombinować z tabelą referencyjnych linków, by usunąć ewentualne zdublowane I.Ale to już zostawiam na Twoje przemyślenie. Zapytanie Fifiego wygeneruje wyniki, ale niech on sam zobaczy, czy ten count zadziała tak jak powinien.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.08.2025 - 05:50