Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jak sprawdzić bazę przed dodaniem nowego użyt., j.w
mitp
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 29.12.2004

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


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ć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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!
Go to the top of the page
+Quote Post
Zajec
post
Post #3





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

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


Em, dziwna, nieintuicyjna metoda (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował Zajec 17.11.2005, 23:20:29
Go to the top of the page
+Quote Post
ergo
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

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


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
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
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: 22.08.2025 - 19:56