Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z warunkiem, Problem z warunkiem podczas walidacji formularza
brutal1985
post 31.08.2011, 16:03:07
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.08.2011

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


Witam.
Mam problem z warunkiem podczas walidacji formularza.
Mój kod:
  1. $query_ask = 'SELECT `Dzial_ID`, `Tytul` FROM `Dzial` WHERE `Tytul` = "' . $_POST['tytul'] . '";';
  2. $query_ask_result = mysql_query($query_ask);
  3. $query_ask_row = mysql_fetch_assoc($query_ask_result);
  4.  
  5. if($_GET['ID'] != $query_ask_row['Dzial_ID'])
  6. {
  7. $error = true;
  8. $error_name = 'Nie można zmienić nazwy działu. Dział o podanym tytule już istnieje w bazie danych i jest inny niż dział, który edytujesz. ';
  9. }

I sprawdzam warunek błędu:
  1. if($error!=true)
  2. {
  3. // Tu właściwy kod do wykonania w przypadku braku błędu
  4. }
  5. else
  6. {
  7. echo '<div class="edit_content">
  8. Błąd. ' . $error_name . ' ' . '
  9. <a href="index.php?dzial=panel&link=edit_user&ID='. $_GET['ID'] .'" class="blank_link">Powrót do edycji danych.</a>
  10. </div>';
  11. }

W ten sposób sprawdzam, czy ktoś nie chce zmienić nazwy działu na inny już istniejący w bazie (ale nie ten, który edytuję).
I wszystko byłoby pięknie, gdyby nie fakt, że poprzez zapytanie, które wykonuję, nie można dodać nazwy działu, której nie ma w bazie danych.
Jak przerobić to zapytanie, aby można było zmienić nazwę działu na inną (nieistniejącą w bazie danych) i jednocześnie uniemożliwić zmianę nazwy na już istniejącą w bazie danych (ale inną niż tą, którą edytuję). Oczywiście ponadto musiałaby pozostać możliwość braku zmiany nazwy.

Trochę to zawile napisałem. Mam nadzieję, że jest to zrozumiałe.

Z góry dzięki za pomoc.

Ten post edytował brutal1985 31.08.2011, 16:07:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
-jarek-
post 31.08.2011, 16:30:59
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 26.05.2010

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


Cytat(brutal1985 @ 31.08.2011, 17:03:07 ) *
  1. $query_ask = 'SELECT `Dzial_ID`, `Tytul` FROM `Dzial` WHERE `Tytul` = "' . $_POST['tytul'] . '";';
  2. $query_ask_result = mysql_query($query_ask);
  3. if(!$query_ask_result){
  4. $sql = mysql_query("INSERT INTO `Dzial` (Tytul) VALUES ('" . $_POST['tytul'] . "')");
  5. }
  6.  
  7. $query_ask_row = mysql_fetch_assoc($query_ask_result);
  8.  

Jeśli Cię dobrze zrozumiałem

Ten post edytował -jarek- 31.08.2011, 16:32:19
Go to the top of the page
+Quote Post
brutal1985
post 31.08.2011, 16:48:22
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.08.2011

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


No nie do końca o to mi chodziło. Nie potrzebuje wstawiać tych danych do tabeli w bazie danych.
One mają być tylko sprawdzone, czy są właściwe.

Zilustruję to na przykładzie.
Mam dwa działy: Adres i Kontakt.
Klikam i wybieram do edycji np. Adres. (przekazuje w zmiennej GET ID działu Adres)
Wyświetla się formularz wraz z wstawionymi tam informacjami z bazy danych (dane, które dotychczas były w bazie danych przypisane do działu Adres).
W formularzu jest pole Tytuł.
Domyślnie podświetli się wpisane w polu Tytuł: "Adres"

I teraz chciałbym, aby można było zmienić Tytuł "Adres" na jakikolwiek inny niż "Kontakt" lub zostawić Tytuł "Adres" bez zmian.
Jeśli wpiszę w pole Tytuł "Kontakt", to wyświetlić ma się błąd (czyli wartość zmiennej $error ma być true)
  1. $error = true;
  2. $error_name = 'Nie można zmienić nazwy działu';

Celem takiego rozwiązania jest to, żeby w bazie nie było dwóch działów o tej samej nazwie, a różnym ID.

Ten post edytował brutal1985 31.08.2011, 16:58:12
Go to the top of the page
+Quote Post
-jarek-
post 31.08.2011, 19:31:27
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 26.05.2010

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


Cytat(brutal1985 @ 31.08.2011, 17:48:22 ) *
No nie do końca o to mi chodziło. Nie potrzebuje wstawiać tych danych do tabeli w bazie danych.
One mają być tylko sprawdzone, czy są właściwe.
Zilustruję to na przykładzie.
Mam dwa działy: Adres i Kontakt.
Klikam i wybieram do edycji np. Adres. (przekazuje w zmiennej GET ID działu Adres)
Wyświetla się formularz wraz z wstawionymi tam informacjami z bazy danych (dane, które dotychczas były w bazie danych przypisane do działu Adres).
W formularzu jest pole Tytuł.
Domyślnie podświetli się wpisane w polu Tytuł: "Adres"

Celem takiego rozwiązania jest to, żeby w bazie nie było dwóch działów o tej samej nazwie, a różnym ID.

  1. // umieść przed wysłaniem nagłówków
  2. $query_ask = 'SELECT `Dzial_ID`, `Tytul` FROM `Dzial` WHERE `Tytul` = "' . $_POST['tytul'] . '";';
  3. if(mysql_num_rows(mysql_query($query_ask))){
  4. header("Location: jakasstrona?error=Nie można zmienić nazwy działu. Dział o podanym tytule już istnieje w bazie danych i jest inny niż dział, który edytujesz");
  5. }
  6. else{
  7. // ........
  8. }
  9. // gdzieś dalej przechwycenie
  10.  
  11. isset($_GET['error']) {
  12. echo $_GET['error'];
  13. }



może o to Ci codziło??
Go to the top of the page
+Quote Post
brutal1985
post 1.09.2011, 14:06:02
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.08.2011

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


Poradziłem sobie w inny sposób. Po prostu zmieniłem zapytanie do bazy danych. Teraz wyciągam z bazy wszystkie rekordy, które mają ID równe przekazanemu w zmiennej $_GET oraz te, które mają tytuł taki sam, jak wpisany w formularzu.
Następnie w warunku odrzucam wszystkie te, które mają inne ID od oczekiwanego.

Oto mój kod:
  1. $query_ask = 'SELECT `Dzial_ID`, `Tytul` FROM `Dzial` WHERE `Dzial_ID` = "' . $_GET['ID'] . '" OR `Tytul` = "' . $_POST['tytul'] . '";';
  2. $query_ask_result = mysql_query($query_ask);
  3. $query_ask_row = mysql_fetch_assoc($query_ask_result);
  4. if($_GET['ID'] != $query_ask_row['Dzial_ID'])
  5. {
  6. $error = true;
  7. $error_name = 'Nie można zmienić nazwy działu. Dział o podanym tytule już istnieje w bazie danych i jest inny niż dział, który edytujesz. ';
  8. }


Mimo to, dziękuje za próbę pomocy. Pozdrawiam.

Ten post edytował brutal1985 1.09.2011, 14:07:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:49