Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak sprawdzić bazę przed dodaniem nowego użyt.
Forum PHP.pl > Forum > PHP
mitp
Witam

Mam takie pytanie. Mam plik rejestracja.php - w nim formularz (podajemy imie, nazwisko, login)

Skrypt sprawdza poprawność danych a następnie dodaje dane do bazy.

oto dodanie do bazy:
  1. <?php
  2. if($action=='add' and $blad==0)
  3. {
  4. $conn = mysql_connect("localhost","root","krasnal") or die ("Nie można się połączyć z bazą");
  5. $db = mysql_select_db("baza") or die ("brak połączenia z bazą.");
  6. $sql = "INSERT INTO `tabela` (`imie`, `nazwisko`, `login`) VALUES ('$imie', '$nazwisko', '$login')";
  7. $result = mysql_query($sql) or die ("brak połączenia z tabelą");
  8.  
  9. }
  10. ?>


Problem mam w tym, że mogę dodać kilka razy tego samego użytkownika, a to najgorsze co może być. W jaki sposób sprawdzić czy imie, nazwisko, login już istnieją w bazie, a jeżeli tak to aby pokazało komunikat ze już istnieje użytkownik o takim imieniu, nazwisku i loginie

bardzo bym prosił o pomoc jak to zrobić.
strife
Wykonujesz sobie zapytanie dzięki któremu sprawdzasz czy dany użytkownik istnieje.
  1. <?php
  2.  
  3. $foo = $_POST['login'];
  4. $query = mysql_query("SELECT login
  5.                    FROM tabela
  6.                    WHERE login = '" . $foo . "' 
  7.                                   ;");
  8. $boo = @mysql_fetch_array( $query ); 
  9. if ( ! $boo )
  10. {
  11.   die('Taki user juz istnieje!');
  12. }
  13.  
  14. ?>

Tutaj, po wprowadzeniu w formularz takiego samego loginu jak ten w bazie zostanie wywołane die" title="Zobacz w manualu php" target="_manual. W przeciwnym przypadku reszta instrukcji.

Pozdrawiam!
Zajec
Em, dziwna, nieintuicyjna metoda smile.gif
  1. <?php
  2. $result = mysql_query('SELECT id FROM tabela WHERE login="'.$_POST['login'].'" LIMIT 1');
  3.  
  4. if (mysql_num_rows($result)==1)
  5. {
  6. echo 'Już istnieje';
  7. }
  8. else
  9. {
  10. //dodawanie
  11. }
  12. ?>
ergo
jak jestes leniwy to ustawiasz sobie kolumny w mysql na UNIQUE i juz sie nie da zalozyc takiego samego uzytkownika a jesli jestes mniej leniwy trzeba by najpierw sprobowac pobrac takiego uzytkownika i jak jest juz taki ktos to wypisac komunikat ze jest, a jak nie to nastepne zapytanie z INSERT
mike
Cytat(ergo @ 2005-11-20 13:42:05)
jak jestes leniwy to ustawiasz sobie kolumny w mysql na UNIQUE (...)

To nie jest lenistwo.
To jest najlepsza metoda, a nie wykonywanie jakichś głupich SELECT'ów prez dodaniem nowego. Po co?

Zakładasz UNIQUE i potem sprzwdzasz czy mysql_errno() zwrócilło jakiś błąd. Błąd o kodzie 1062 (jak się nie mylę) to naruszenie unikalności w tabeli.

I po sprawie.

Możesz dorzucić jeszcze ładne rzucanie wyjątkami, wtedy dodanie dasz w bloku try .. catch i masz bardzo ładne rozwiązanie.
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.