Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Początkujący] Jak sprawdzić czy dany rekord już istnieje
Forum PHP.pl > Forum > Bazy danych > MySQL
pol1techn1k
Witam! To mój pierwszy post (mam nadzieję że to dobry dział) i pierwsze kroki z php i mysql. Ogarnąłem już jak dodać dane do bazy i idzie mi to całkiem nieźle (początki). Jednak potrzebuję napisać taki skrypt który będzie sprawdzał czy w danej tabeli występuje już w danym polu taki rekord i jeśli istnieje to nie doda rekordu, a jeśli nie to rekord zostanie dodany do bazy. Kod który wyskrobałem nie trybi, proszę o pomoc, zawsze zwraca zero. Oczywiście formularzem przesyłam dane do bazy Z góry wszystkim bardzo dziękuję za niesioną pomoc:
  1.  
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5.  
  6. </head>
  7.  
  8.  
  9. <?php
  10. // odbieramy dane z formularza
  11. $nazwa = $_POST['nazwa'];
  12. $mail = $_POST['mail'];
  13. // łączymy się z bazą danych
  14. $connection = @mysql_connect('localhost', '', '')
  15. or die('Brak połączenia z serwerem MySQL');
  16. $db = @mysql_select_db('turniej', $connection)
  17. or die('Nie mogę połączyć się z bazą danych');
  18. mysql_set_charset('utf8');
  19.  
  20. $wynik = mysql_query("SELECT nazwa FROM druzyny WHERE nazwa == '$nazwa'");
  21. echo $wynik;
  22. if($wynik == 0) {
  23.  
  24. // dodajemy rekord do bazy
  25. $ins = @mysql_query("INSERT INTO druzyny SET nazwa='$nazwa', mail='$mail'");
  26. if($ins) echo "Drużyna została dodana poprawnie, dokonaj rejestracji uczestnika";
  27. else echo "Błąd nie udało się dodać nowego rekordu";
  28.  
  29. mysql_close($connection);
  30.  
  31.  
  32.  
  33.  
  34. }
  35. else {
  36. mysql_close($connection);
  37. echo("Przepraszamy, ale ta nazwa jest już zajęta! Wróć do formularza rejestracyjnego i wybierz inną nazwę dla swojej drużyny");
  38. echo $wynik;
  39. }
  40.  
  41. ?>
  42.  
  43.  


  1. <title>Formularz tworzenia drużyny! </title>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  3.  
  4. </head>
  5.  
  6. Uwaga! Drużynę rejestrujemy tylko raz! Lista wszystkich drużyn zostanie natychamist zaktualizowana w formularzu rejestracyjnym dla użytkowników <br /> <br />
  7. <form action="dodaj_druzyne.php" method="post">
  8. Nazwa drużyny <input type="text" name="nazwa" /><br />
  9. Adres e-mail kapitana: <input type="text" name="mail" /><br />
  10. <input type="submit" value="dodaj" />
  11. </form>
  12. </body>
  13. </html>
Niktoś
Może tak:
$wynik = mysql_query("If EXISTS (SELECT nazwa FROM druzyny WHERE nazwa == '$nazwa') SELECT 1 ELSE SELECT 0");
melkorm
mysql_num_rows

PS. Kod to nie ZOO pozbądź się tych małp.
PS2. Dział to przedszkole smile.gif
bww
Wydaje się, że w tym wypadku lepszą praktyką jest wykonanie zapytania SELECT count(*) FROM (w twoim przypadku
  1. SELECT count(*) AS wynik FROM druzyny WHERE nazwa == '$nazwa'
), albo jeszcze lepiej SELECT count(nazwa).

http://forums.mysql.com/read.php?115,55854,55854#msg-55854
viking
Najlepszą metodą jest http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html a nie zbędne wybieranie danych.
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.