![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 0 Dołączył: 31.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Napisalem prosty skrypt ktory wysyla do bazy danych dane jakie wpisze sie w formularzu.
Problem w tym ze wystarczy odswiezyc strone, a w bazie pojawi sie nastepny, identyczny rekord. Co zrobic aby przy wysylaniu rekordow do bazy skrypt sprawdzal czy nie istnieje juz taki rekord i w razie jego istnienia zwrocil odpowiedni komunikat? Ten post edytował Macok 7.09.2006, 10:51:36 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Możesz nadać w SQL odpowiednim polom atrubut UNIQUE. Wtedy jesli bedziesz dodawał rekord, który już istnieje w bazie danych (np. takie same loginy) to zapytanie zwróci błąd ->> wyświetlasz odpowiedni komunikat.
-------------------- Załóż konto na dropbox.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 7.09.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
I po wysłaniu danych z formularza przekierować użytkownika na inną stronę, by przy odświeżeniu nie próbował znowu wysyłać tych samych danych do aplikacji. (header -> Location: lub, co bardziej irytujące, przekierowanie w meta)
![]() -------------------- NotePad++ / Eclipse 3.3 (+PDT+PyDev+WTP) / VS 2005 Standard (+WTL 8.0+WM 2003 SDK/WM 5.0 SDK) / Glassfish / php 5.2.3 / Apache 2.2.x / MySQL 5.0.x / PostgreSQL 8.2.x / cvsd / violin 2.0 / piano 0.7-pre :P
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 0 Dołączył: 31.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ok. dzieki
Tylko jak zrobic zeby mysql nie wywalal swojego komunikatu tylko taki jaki ja napisze? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tu masz topic jak sie zabezpieczyc przed refreshem:
http://forum.php.pl/index.php?showtopic=44383 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 0 Dołączył: 31.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mam jeszcze 1 pytanie:
Jak zapobiec zapisaniu w bazie 2 rekordów, w których 2 dane pola będą takie same? Np. mam rekord "samochód" Kod Marka = Opel i próbuje dodać drugi, w którym marka i model będą takie same:Model = Astra Uzywany = true Kod Marka = Opel 2 rekord nie powinien sie dodać ponieważ taki samochód jest już w bazie.Model = Astra Uzywany = false To czy jest nowy czy uzywany nei ma znaczenia. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 153 Pomógł: 2 Dołączył: 28.05.2007 Skąd: Stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Albo takie coś:
-------------------- Raz, dwa, trzy, baba Jaga patrzy!
http://trelemorele.cba.pl |
|
|
![]()
Post
#8
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej dodać na siłe ten rekord i wyrzicić i złapać wyjątek? Oczwiście pozwala na to tylko OOP i jakiś sterownik do baz danych na wyjątek w jakiejś metodzie Execute(), która robi mysql_query().
Fajnie opisła to niegdyś hwao na starym blogu. Możesz znaleźć to tutaj: http://hwao.strefaphp.net/blog/2006/06/16/wyjatki/ -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej utworzyć po prostu klucz złożony z tych pól? W ten sposób już na poziomie bazy wykluczysz możliwość wpisania błędnych danych.
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 0 Dołączył: 31.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję wszystkim,
zastosowałem się do pomysłu Glardena |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 164 Pomógł: 3 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Dodatkowe pytanie w temacie: Baza ma rekordy, powiedzmy z 15 pól każdy, blokuję warunkiem WHERE możliwosc dodania rekordu kiedy określone jedno z tych pól ma identyczną wartość. Zależy mi aby spradzić czy pozostałe 14 pól ma wartości identyczne z danymi z formularza i jeśli choć jedno jest inne - umożliwić nadpisanie. Czy robić to również za pomocą WHERE? Bo coś mi sie wydaje, że to jest nieprawifłowe, a conajmniej nieoptymalne (słabo wygląda taki wąż warunków ![]() Pozdrawiam -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 09:25 |