ďťż

[PHP/MySQL] Pobieranie wyników

       

Podstrony


telcocafe

Piszę do Vallheru miniskrypt do sprawdzania kont po IP.

<?php $Title = 'Sprawdzanie multikont'; require_once ('includes/head.php'); $GetGracze = mysql_query("SELECT ip FROM players;"); while ($gracz = mysql_fetch_array($GetGracze)): $PobierzSe = mysql_query ('SELECT id, user FROM players WHERE ip="'.$gracz['ip'].'";'); if (mysql_num_rows($PobierzSe) > 1) { while ($wyn = mysql_fetch_array($PobierzSe)): echo '['.$wyn['id'].'] <b>'.$wyn['user'].'</b> ('.$gracz['ip'].')<br />'; endwhile; } endwhile; require_once ('includes/foot.php'); ?>

Oto cały kod.
Jednak kiedy skrypt się wykonuje pokazuje np. jeśli ktoś ma 2 konta to 2 razy ten wynik w postaci [ID] User (IP).

Przykład:
[142] ZEDD (83.25.22.9)
[143] Kiku,Nights Flower (83.25.22.9)
[142] ZEDD (83.25.22.9)
[143] Kiku,Nights Flower (83.25.22.9)

Da radę zrobić tak żeby pokazywał tylko raz? (Jakoś wykluczyć jeżeli znajdzie już multikonto sprawdzanie reszty).



Może:
SELECT id, user FROM players WHERE ip="'.$gracz['ip'].'" group by ip;

// ale chyba cos zle kod zrozumiałem :/
Użytkownik master_dos edytował ten post 07 marzec 2007, 15:44
To w ogóle nic nie zwraca wtedy.
Chce żeby mi pokazał wszystkie id, user jeżeli jest wiecej niz jedno takie IP.

nie czasem tutaj:
while ($gracz = mysql_fetch_array($GetGracze)):
na końcu ma być średnik zamiast dwukropka?
Użytkownik loguś edytował ten post 07 marzec 2007, 16:27


Nie, średnik zamyka, a to ma byc pętla.
Nikt nie wie ?

$GetGracze = mysql_query("SELECT ip FROM players;");
Zmień może na:
$GetGracze = mysql_query("SELECT ip FROM players limit 1;");
Ale fakt - mało opisałeś, trzeba się dużo domyślać :D No i nie wiem, czy działa ;]

Próbowałem z limit 1 i nie działa. Przedstawię to bardziej szczegółowo

Jest gra na Vallheru. W tabeli players jest pole 'ip' w którym znajduje się IP danego gracza.
Skrypt ma za zadanie pobrać wszystkie adresy ip z bazy danych, a następnie jeżeli jakieś IP występuje więcej niż 1 gracz ma wyświetlić id oraz user dla danego gracza. Wszystko niby jest dobrze, ale jeżeli gracz ma 2 konta, to 2 razy powtarza wynik (konto 1 jest multikontem dla 2, a 2 multikontem dla 1). Chodzi mi o to że jeśli ID 1 ma ip 127.0.0.1 a ID 2 ip 127.0.0.1 to ma wyświetlać
ID1: 127.0.0.1
ID2: 127.0.0.1
Lecz wyświetla
ID1: 127.0.0.1
ID2: 127.0.0.1
ID1: 127.0.0.1
ID2: 127.0.0.1

mówie ci, spróbuj zamiast kropki średnik na końcu,

Loguś: takim sposobem się zapisuje pętle również:
while (1) : endwhile;

Średnik zakańcza, a to ma otwierać.
Zakończone jest przez endwhile. To czy tam jest kropka czy średnik nic nie ma do mojego problemu.

@pbnan: dzięi że powiedziałeś, pierwszy raz sie z tym spotykam
A co do kodu to poco robisz tą pętle 2 razy?
nie wystarczy tylko raz?

No to przedstaw mi ten skrypt tak aby działał prawidłowo i zawierał jedną pętle.

<?php

$Title = 'Sprawdzanie multikont';
require_once ('includes/head.php');

$PobierzSe = mysql_query ('SELECT id, user FROM players;');
if (mysql_num_rows($PobierzSe) > 1) {
while ($wyn = mysql_fetch_array($PobierzSe)):
echo '['.$wyn['id'].'] <b>'.$wyn['user'].'</b> ('.$gracz['ip'].')<br />';
endwhile;
}

require_once ('includes/foot.php');
?>

W takim wypadku skrypt pobierze WSZYSTKICH użytkowników nie zważając na adres IP, którego i tak skrypt nie zna bo $gracz nie istnieje.

ja znalazłęm taki kod:
SELECT * FROM `aaa` WHERE CONCAT_WS( "-", `b` ) = "1" ORDER BY `b` LIMIT 0 , 30

a znalazłęm go bawiac się bazą w php my admin chcicałem dodać do bazy klucz i wybrałem pole co miało już kilka takich samych wartości i pokazał się ten kod jak się wykonał wybrały się bazy tylko rekordy o tej samej wartości
nie wiem czy to w czymś pomoże
Użytkownik gregorywojcik edytował ten post 07 marzec 2007, 20:38
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.