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

Porównywanie elementów z tablicy

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.

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

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

To kod wypisujący wszystkie nicki z bazy

0

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

in_array($nowy_nick, $tablica_nickow_z_bazy)

zwróci true

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

będzie w tablicy z nickami z bazy.

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.

0

Wykonałem to w ten sposób

$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.

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ą.

0

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

$count = Rejestracja::where('nick','=',$post['nick'])->count();
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.

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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0