Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sprawdzanie czy jest taka wartosc
Forum PHP.pl > Forum > PHP
masta089
jak sprawdzić czy jest już taka nazwa w bazie jeśli jest to wyświetlić komunikat. mój kod
  1. $baza = mysql_connect($nhost, $nuser, $npassword);
  2. if ($baza) {
  3. $wynik = mysql_select_db($nbaza);
  4. if ($wynik) {
  5. if ($popraw=="") {
  6. $wynik = mysql_query("
  7. INSERT INTO filmy VALUES($id,'$nazwa','$gatunek','$rok', '$gdzie', '$uwagi')
  8. ");
  9. if ($wynik) {
  10. echo "<br /><b>Rekord zostal dodany</b>";
  11. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  12. }
  13. } else {
  14. $wynik = mysql_query("
  15. UPDATE filmy SET id=$id, nazwa='$nazwa',
  16. gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw
  17. ");
  18. if ($wynik) {
  19. echo "<br /><b>Rekord zostal uaktualniony</b>"; $popraw="";
  20. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  21. }
  22. }
  23. }
  24. mysql_close($baza);
  25. }
  26.  
  27. }
  28. }
marcio
Jesli kolumna jest typu UNIQUE to zapytanie za pomoca mysql_query() zwroci false i wtedy robisz prosty warunek.

Jak nie robisz select z odpowiednim where i na to robisz warunek:

  1. if(mysql_num_rows($query) > 0) //to znaczy ze jest


Takie proste warunki chyba o to ci chodzi.

darko
ja robiłem kiedyś tak:
  1. // nazwa którą chcemy zapisać
  2. $nazwa = "xyz";
  3.  
  4. $tmp = mysql_fetch_row(mysql_query("SELECT id FROM tabela WHERE nazwa like '$nazwa'"));
  5.  
  6. if(is_numeric($tmp[0])) {
  7. echo "niestety podana nazwa istnieje już w bazie danych";
  8. }
  9. else {
  10. // OK, insert do bazy
  11. }
masta089
to ten kod gdzie mam wstawić??
MateuszS
  1. $baza = mysql_connect($nhost, $nuser, $npassword);
  2. if ($baza) {
  3. $wynik = mysql_select_db($nbaza);
  4.  
  5. if ($wynik) {
  6. $nazwa='jakas';
  7. $tmp = mysql_fetch_row(mysql_query("SELECT id FROM tabela WHERE nazwa like '$nazwa'"));
  8.  
  9. if(is_numeric($tmp[0])) {
  10. echo "niestety podana nazwa istnieje już w bazie danych";
  11. } else {
  12.  
  13. if ($popraw=="") {
  14. $wynik = mysql_query("
  15. INSERT INTO filmy VALUES($id,'$nazwa','$gatunek','$rok', '$gdzie', '$uwagi')
  16. ");
  17. if ($wynik) {
  18. echo "<br /><b>Rekord zostal dodany</b>";
  19. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  20. }
  21. } else {
  22. $wynik = mysql_query("
  23. UPDATE filmy SET id=$id, nazwa='$nazwa',
  24. gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw
  25. ");
  26. if ($wynik) {
  27. echo "<br /><b>Rekord zostal uaktualniony</b>"; $popraw="";
  28. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  29. }
  30. }
  31. }
  32. }
  33. mysql_close($baza);
  34. }
  35.  
  36. }
  37. }
masta089
a czy można zastosować taki kod questionmark.gif
  1. $nowy_film = trim($_POST['nazwa']);
  2.  
  3. // sprawd1, czy taka nazwa filmu jest juz w bazie
  4. $zapytanie = "SELECT nazwa FROM filmy WHERE nazwa='$nowy_film'";
  5. $film = mysql_query($zapytanie);
  6.  
  7. if (mysql_num_rows($film) > 0)
  8. echo "<p>Film o takiej nazwie juz istnieje. Podaj inna nazwe.</p>";
  9.  
  10. else {

marcio
jak najbardziej.
masta089
mam kod
  1. $baza = mysql_connect($nhost, $nuser, $npassword);
  2. if ($baza) {
  3. $wynik = mysql_select_db($nbaza);
  4. if ($wynik) {
  5. if ($popraw=="") {
  6. // sprawdzanie czy taka nazwa istnieje
  7. $nowy_film = trim($_POST['nazwa']);
  8.  
  9. $zapytanie = "SELECT nazwa FROM filmy WHERE nazwa='$nowy_film'";
  10. $wynik = mysql_query($zapytanie);
  11.  
  12. if (mysql_num_rows($wynik) > 0)
  13. echo "<p>Film ".$nazwa." juz istnieje!!! Podaj inna nazwe.</p>";
  14.  
  15. else {
  16. $wynik = mysql_query("
  17. INSERT INTO filmy VALUES($id,'$nazwa','$gatunek','$rok', '$gdzie', '$uwagi')
  18. ");
  19. if ($wynik) {
  20. echo "<br /><b>Rekord zostal dodany</b>";
  21. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  22. }
  23. }
  24. } else {
  25.  
  26. $wynik = mysql_query("
  27. UPDATE filmy SET id=$id, nazwa='$nazwa',
  28. gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw
  29. ");
  30. if ($wynik) {
  31. echo "<br /><b>Rekord zostal uaktualniony</b>"; $popraw="";
  32. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  33. }
  34. }
  35. }
  36. mysql_close($baza);
  37. }
  38.  
  39. }
  40. }
i chciałem też do aktualizacji dodać sprawdzanie lecz aktualizacje się powiodła a nazwa się zmieniła na istniejąca w bazie.
Blame
A czy zamiast $nazwa ni powinno być $nowy_film?
masta089
mam taki kod
  1. $baza = mysql_connect($nhost, $nuser, $npassword);
  2. if ($baza) {
  3. $wynik = mysql_select_db($nbaza);
  4. if ($wynik) {
  5. if ($popraw=="") {
  6. // sprawdzanie czy taka nazwa istnieje
  7. $nowy_film = trim($_POST['nazwa']);
  8.  
  9. $zapytanie = "SELECT nazwa FROM filmy WHERE nazwa='$nowy_film'";
  10. $wynik = mysql_query($zapytanie);
  11.  
  12. if (mysql_num_rows($wynik) > 0)
  13. echo "<p>Film ".$nazwa." juz istnieje!!! Podaj inna nazwe.</p>";
  14.  
  15. else {
  16. $wynik = mysql_query("
  17. INSERT INTO filmy VALUES($id,'$nazwa','$gatunek','$rok', '$gdzie', '$uwagi')
  18. ");
  19. if ($wynik) {
  20. echo "<br /><b>Rekord zostal dodany</b>";
  21. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  22. }
  23. }
  24. } else {
  25.  
  26. // sprawdzanie czy taka nazwa istnieje
  27. $nowy_film = trim($_POST['nazwa']);
  28.  
  29. $zapytanie = "SELECT nazwa FROM filmy WHERE nazwa='$nowy_film'";
  30. $wynik = mysql_query($zapytanie);
  31.  
  32. if (mysql_num_rows($wynik) > 0)
  33. echo "<p>Film ".$nazwa." juz istnieje!!! Podaj inna nazwe.</p>";
  34.  
  35. else {
  36.  
  37.  
  38.  
  39. $wynik = mysql_query("
  40. UPDATE filmy SET id=$id, nazwa='$nazwa',
  41. gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw
  42. ");
  43. if ($wynik) {
  44. echo "<br /><b>Rekord zostal uaktualniony</b>"; $popraw="";
  45. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  46. }}
  47. }
  48. }
  49. mysql_close($baza);
  50. }
  51.  
  52. }
  53. }
i przy aktualizacji nie wyskakuje że film już istnieje w bazie.
darko
Jak już marcio wspomniał - możesz ustawić w bazie na polu nazwa atrybut UNIQUE i od razu robić mysql_query sprawdzając czy zwróciło false, jeśli zwróciło false, tzn. że już masz rekord w bazie o takiej nazwie i wtedy dajesz tylko stosowny komunikat.

ps. rzuć jeszcze strukturę bazy, bo może tu jest problem
ps2. chyba, że :
id
nazwa
gatunek
rok
gdzie
uwagi

to wszystko i struktura jest kompletna, to nie wrzucaj.
masta089
struktura jest kompletna. A sprawdzanie działa przy dodawaniu. czyli
  1. $baza = mysql_connect($nhost, $nuser, $npassword);
  2. if ($baza) {
  3. $wynik = mysql_select_db($nbaza);
  4. if ($wynik) {
  5. if ($popraw=="") {
  6. // sprawdzanie czy taka nazwa istnieje
  7. $nowy_film = trim($_POST['nazwa']);
  8.  
  9. $zapytanie = "SELECT nazwa FROM filmy WHERE nazwa='$nowy_film'";
  10. $wynik = mysql_query($zapytanie);
  11.  
  12. if (mysql_num_rows($wynik) > 0)
  13. echo "<p>Film o nazwie:".$nazwa." juz istnieje!!! Podaj inna nazwe.</p>";
  14.  
  15. else {
  16. $wynik = mysql_query("
  17. INSERT INTO filmy VALUES($id,'$nazwa','$gatunek','$rok', '$gdzie', '$uwagi')
  18. ");
  19. if ($wynik) {
  20. echo "<br /><b>Rekord zostal dodany</b>";
  21. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  22. }
  23. }
  24. } else {
a przy aktualizacji jak dodałem ten kod
  1. // sprawdzanie czy taka nazwa istnieje
  2. $nowy_film = trim($_POST['nazwa']);
  3.  
  4. $zapytanie = "SELECT nazwa FROM filmy WHERE nazwa='$nowy_film'";
  5. $wynik = mysql_query($zapytanie);
  6.  
  7. if (mysql_num_rows($wynik) > 0)
  8. echo "<p>Film o nazwie:".$nazwa." juz istnieje!!! Podaj inna nazwe.</p>";
  9.  
  10. else {
nic nie dał. można aktualizować lecz nie sprawdza
a tu kod aktualizacji/zmiany
  1. }
  2. } else {
  3.  
  4.  
  5. $wynik = mysql_query("
  6. UPDATE filmy SET id=$id, nazwa='$nazwa',
  7. gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw
  8. ");
  9. if ($wynik) {
  10. echo "<br /><b>Rekord zostal uaktualniony</b>"; $popraw="";
  11. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  12. }
  13. }
  14. }
  15. mysql_close($baza);
  16. }
  17.  
  18. }
  19. }
darko
Cytat
UPDATE filmy SET id=$id, nazwa='$nazwa', gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw


to jest bez sensu, nie aktualizuj wartości id, zamień na:
UPDATE filmy SET nazwa='$nazwa', gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$id

ps. co się kryje pod $popraw ?
masta089
  1. if ($popraw<>"") $guzik="Uaktualnij";

  1. <input type="hidden" name="popraw" value="$popraw" />
poprawiłem teraz mam
  1. }
  2. } else {
  3.  
  4. //!!!TU Chciał bym sprawdzać czy istnieje taka nazwa!!! dodałem kod taki jak przy dodawaniu
  5.  
  6. $wynik = mysql_query("
  7. UPDATE filmy SET nazwa='$nazwa', gatunek='$gatunek', rok='$rok', gdzie='$gdzie', uwagi='$uwagi' where id=$popraw
  8. ");
  9. if ($wynik) {
  10. echo "<br /><b>Rekord zostal uaktualniony</b>"; $popraw="";
  11. $id=""; $nazwa=""; $gatunek=""; $rok=""; $gdzie=""; $uwagi="";
  12. }
  13. }
  14. }
  15. mysql_close($baza);
  16. }
  17.  
  18. }
  19. }
i jak tu dać to sprawdzanie
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.