Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzanie czy rekord istnieje.
MalyKazio
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Pytanie może proste ale wyszukiwarka mi nie pomogła. Mój problem polega na tym, że mam formularz dodajacy rekordy do bazy danych. Wszystko działa, ładnie sie dodaje tylko po pewnym czasie rekordy mogą zacząć się powtarzać a ręczne sprawdzanie czy wpis istnieje jest męczące.
Jak zrobić żeby przed dopisaniem do bazy danych sprawdzało czy już taki wpis jest? Powiedzmy, że chcę dodać imie i nazwisko.
Wiem jak skonsturować zapytanie do sprawdzenia:
z formularza powiedzmy jest pole "nazwisko"
  1. SELECT nazwisko
  2. FROM tabela WHERE nazwisko=$_POST[nazwisko]


Tylko jak teraz zrobić żeby w przypadku gdy istnieje już taki wpis skrypt pisał powiedzmy "Wpis już istnieje"?
Go to the top of the page
+Quote Post
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  1. SELECT COUNT(*) AS ilosc
  2. FROM tabela WHERE nazwisko=$_POST[nazwisko]


Jesli ilosc == 1 to juz istnieje i nie dodajesz.
Mozesz tez tak zrobic ze nazwisko jest unikalnym indeksem i wtedy zawsze dodajesz do bazy i sprawdzasz bledy.
Go to the top of the page
+Quote Post
ein
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.03.2005

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


if (istnieje)
{
dodaj do bazy }
else
{
wyswietl fomularz i dodaj informacje: "wpis istnieje"
}

dla ulatwienia formularz stworz w jakims innym pliku i go importuj

@SongoQ
no jasne,jasne

Ten post edytował ein 17.12.2005, 23:50:18
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@ein
Powinno byc
if (!istnieje)
{
Go to the top of the page
+Quote Post
MalyKazio
post
Post #5





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Hmm... czy może zatem być coś takiego:

  1. <?php
  2. $zapytanie = "SELECT count(*) FROM table WHERE nazwisko=$_POST[nazwisko]"
  3. $wykonaj = mysql_query($zapytanie);
  4. $row = mysql_fetch_array($wykonaj);
  5. print $row[0]; */ zeby wiedziec czy cos jest (rozwiazanie testowe */
  6. if ($row[0] == 0) {wtedy dodajemy}
  7.  
  8. ?>


Dobrze mysle?
Go to the top of the page
+Quote Post
SongoQ
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Dokladnie w ten sposob co napisales. No i czy trudno bylo?
Go to the top of the page
+Quote Post
MalyKazio
post
Post #7





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Może i nie trudo ale sam nie wpadłbym, że to ma być akurat $row[0] Reszta to już pryszcz. Czasem jedna mała podpowiedź wystarcza do rozwiązania ogromnego problemu użytkownika (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dzięki.
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Ale radze uzywac tablicy asocjacyjnej
http://pl2.php.net/manual/pl/function.mysql-fetch-array.php
Go to the top of the page
+Quote Post
MalyKazio
post
Post #9





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Ale chyba, o ile dobrze wyczytalem, przy uzyciu mysql_fetch_array domyślnie ustawione jest MYSQL_BOTH wiec można uzywać obu metod $row[0] i $row[pole]
Go to the top of the page
+Quote Post
SongoQ
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Piszac to mialem na mysli uzywanie:
  1. <?php
  2. $zapytanie = "SELECT count(*) AS ilosc FROM table WHERE nazwisko=$_POST[nazwisko]";
  3. .
  4. .
  5. .
  6. if ($row['ilosc'] == 0) 
  7.  
  8. ?>


Mniejsza ilosc bledow
Go to the top of the page
+Quote Post
dtb
post
Post #11





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


sprostowanie do kodu malykazia:

  1. <?php
  2. $wykonaj = mysql_query('SELECT count(*) FROM table WHERE nazwisko='.$_POST[nazwisko]);
  3. if (mysql_fetch_array($wykonaj)) {wtedy dodajemy} // kazdy "chyba" wie ze gdy nie ma juz wiecej rekordow zwraca false!
  4. ?>


Ten post edytował dtb 18.12.2005, 16:31:44
Go to the top of the page
+Quote Post
SongoQ
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
sprostowanie do kodu malykazia:

Nie wiem co bylo celem Twojej wypowiedzi ale zawsze bedzie zwrocony 1 rekord bo masz COUNT, jesli nawet nie ma rekordow w bazie zostanie i tak zwrocony 1 rekord. Oczywiscie pod warunkiem ze zapytanie jest poprawne. Wiec to co napisales jest bledne.
Go to the top of the page
+Quote Post
dtb
post
Post #13





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


nie zauwazylem tego count:

  1. <?php
  2. $wykonaj = mysql_query('SELECT * FROM table WHERE nazwisko='.$_POST[nazwisko]);
  3. if (mysql_fetch_array($wykonaj)) {wtedy dodajemy} // kazdy "chyba" wie ze gdy nie ma juz wiecej rekordow zwraca false!
  4. ?>


Ten post edytował dtb 18.12.2005, 19:33:49
Go to the top of the page
+Quote Post
SongoQ
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
nie zauwazylem tego count:


Oj widze ze na temat wydajnosci baz to cieniutko z Toba. Radze poczytac jakas ksiazeczke bo piszac w ten sposob przygoda programisty moze sie zle skonczyc. Pomysl logicznie jesli zapytanie takie zwroci Ci 1 GB rekordow a ty taki warunek sprawdzasz. jest w tym sens?? Radze nieraz pomyslec.
Go to the top of the page
+Quote Post
MalyKazio
post
Post #15





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Kurcze, to ja już sam nie wiem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Jak to w końcu powinno wyglądać? Sam sobie nie daję rady (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Kurcze, to ja już sam nie wiem sad.gif Jak to w końcu powinno wyglądać? Sam sobie nie daję rady


Sam sobie napisales odpowiedz wystarczy ze wykorzystasz to w swoim projekcie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
MalyKazio
post
Post #17





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Ok, dzięki za pomoc i cierpliwość (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

No i to nie działa. Mam taki kod:

  1. <?php
  2. $zapytanie = "SELECT count(*) as ilosc FROM hodowle WHERE hodowla=$_POST[hodowla]";
  3. $wykonaj = mysql_query($zapytanie);
  4. $row = mysql_fetch_array($wykonaj);
  5.  
  6. if ($row[ilosc] == 0) {
  7. $query = "INSERT INTO hodowle VALUES ('','$_POST[hodowla]')";
  8. $wynik = mysql_query($query);
  9.  
  10. echo "Dodano do bazy danych hodowle $_POST[hodowla]";
  11. echo "<BR><a href="modules.php?op=modload&name=Ranking&file=hodowle">Dodaj kolejna hodowle</a>";
  12. } else {
  13. echo "Hodowla istnieje!";
  14. }
  15.  
  16.  
  17. mysql_close($link);
  18. ?>


Zawsze dodaje do bazy danych (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował MalyKazio 25.12.2005, 00:33:57
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 - 14:42