Porównywanie elementów z tablicy

Porównywanie elementów z tablicy

Wątek przeniesiony 2016-10-16 20:02 z PHP przez dzek69.

SU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 247
0

Witam. W jaki sposób mogę odnieść się do elementów z tablicy?
Chciałbym wybrać z bazy danych wszystkie nicki i porównywać z tym który chce przesłać użytkownik (warunkowanie formularza rejestracji) jeśli ktoś już wybrać taki nick, użytkownik powinien wybrać inny. Problem w tym że nie mogę odnieść do tych elementów.

Kopiuj
$zobacz = DB::select('SELECT * FROM uzytkownicy');

foreach($zobacz as $row)
{
	echo $row->nick.'<br>';
}

To kod wypisujący wszystkie nicki z bazy

  • Rejestracja: dni
  • Ostatnio: dni
0

SELECT uzytkownicy.nick FROM uzytkownicy;
Wrzuć je do tablicy i wykorzystaj funkcję

Kopiuj
in_array($nowy_nick, $tablica_nickow_z_bazy)

zwróci true

Kopiuj
 jeżeli <code class="php">$nowy_nick

będzie w tablicy z nickami z bazy.

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

@pijany Kot - głupszego rozwiązania nie dało się wymyślić?

@Sumekprog - najpierw MINIMUM teorii, wystarczy proste zapytanie z warunkiem WHERE. Jeżeli bez znajomości narzędzi będziesz brał się za programowanie to Ci z tego wyjdzie jakaś dziurawa, powolna i brzydka padaka.

SU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 247
0

Wykonałem to w ten sposób

Kopiuj
$nick = imie;
$zobacz = DB::select('select * from uzytkownicy where nick = :nick', ['nick' => $nick] );

foreach($zobacz as $row)
{
	echo $row->nick;
}

if ($row->nick == imie')
{
	echo "Jest już taki nick!";	
}

Gdy w bazie jest jeden taki nick, wtedy wszystko pięknie działa, jeśli jest kilka identycznych, wtedy nie widzi, ale to chyba idea tego warunku, aby nie dopuścić, by w bazie było więcej jak jeden takich samych nicków.

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
1

jeżeli chcesz testować tylko czy dany nick znajduje się w bazie danych powinieneś zrobić to inaczej:

DB::select('select count(*) as Result from uzytkownicy where nick = :nick', ['nick' => $nick] );

Jeżeli Result = 0 to nikt nie użył takiego nicku. Natomiast jeżeli liczba jest większa niż 0 to jest zajęty. Plusem tego jest fakt że nie musisz sciągać informacji o użytkownikach.
Jeżeli chciał byś super poprawny dobrze było by z tego utworzyć procedurę składowaną.

SU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 247
0

Super pomysł nasunąłeś. W sumie bardzo logiczny, zrobiłem to w ten sposób:

Kopiuj
$count = Rejestracja::where('nick','=',$post['nick'])->count();
SU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 247
0

Mam jeszcze pytanie, czy da radę jakoś rozszerzyć te zapytanie, aby wyciągało także informacje o mailu? próbowałem wszystkich kombinacji, a w dokumentacji nic nie ma.

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

Wszystko się da :) Pytanie co by miało zwrócić zapytanie jeżeli jest więcej niż jeden użytkownik z tym samym loginem (Teoretycznie nie możliwe).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.