Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]nie dodaje rekordów do bazy przy obsłudze błędów
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam taki oto skrypcik:
  1. <?php
  2. require('connect2.php');
  3. if(empty($_POST['nazwisko'])||empty($_POST['imie'])||empty($_POST['rok_ur'])
  4. ||empty($_POST['bad'])||empty($_POST['opis'])){
  5. die("<center><b>!!!!SPRAWDZ CZY WYPELNILES WSZYSTKIE OBOWIAZKOWE POLA!!!!</b></center>");
  6. }
  7. if(!empty($_POST['rok_ur'])){
  8. if((($_POST['rok_ur'])<1900)||(($_POST['rok_ur'])>2010)){
  9. die("Czy aby pacjent urodził się na pewno w tym roku?");
  10. }
  11. }
  12. else {
  13. $query1 = 'insert into usg_opis (id_usg,termin,nazwisko,imie,rok_ur,opis) values
  14. ( "'.$_POST['bad'].'",now(), "'.$_POST['nazwisko'].'","'.$_POST['imie'].'",
  15. "'.$_POST['rok_ur'].'", "'.$_POST['opis'].'")';
  16. $result1=mysqli_query($mysqli,$query1) or
  17. die(mysqli_error($mysqli));
  18. }

Dalej znajduje się kilka linijek dotyczące tworzenia pdf. W momencie kiedy linijki dotyczące roku urodzenia (7-11) zostaną usunięte rekord zostanie dopisany do bazy, natomiast w przypadku gdy ta część kodu zostaje wówczas rekord się nie dodaje. Nie wiem, czy jest to błąd. Dodam tylko, że pdf tworzy się normalnie, a przeglądarka nie generuje żadnych błędów. Więc nie bardzo mam pomysł gdzie dalej szukać błędu.
Z góry dziękuję za pomoc.
evolucja
Masz błąd. Najpierw sprawdzasz czy $_POST['rok_ur']) nie jest pusty, jeśli nie jest to sprawdzasz czy data urodzenia jest realna a potem używasz `else` do pierwszego warunku. Oznacza to, że zapytanie wykona się wtedy jeśli $_POST['rok_ur']) będzie pusty smile.gif Rozwiązanie jest proste i myślę, że sam do niego dojdziesz.
MateuszS
U ciebie jest tak: Jeżeli pole z rokiem urodzenia jest wypełnione, sprawdzasz czy koleś nie jest już trupem albo czy jeszcze się nie urodził. No ale potem już nic nie ma. Jeżeli rok jest pomiedzy 1900 a 2010 powinno być zapytanie, a u ciebie jest "Jezeli pole z rok_ur bedzie puste dodaj zapytanie. I doda ci pusty rok ur. Troche zagmatwalem, ale ten kod powinien dzialac:

  1. <?php
  2. require('connect2.php');
  3. if(empty($_POST['nazwisko'])||empty($_POST['imie'])||empty($_POST['rok_ur'])
  4. ||empty($_POST['bad'])||empty($_POST['opis'])){
  5. die("<center><b>!!!!SPRAWDZ CZY WYPELNILES WSZYSTKIE OBOWIAZKOWE POLA!!!!</b></center>");
  6. }
  7. if(!empty($_POST['rok_ur'])){
  8. if((($_POST['rok_ur'])<1900)||(($_POST['rok_ur'])>2010)){
  9. die("Czy aby pacjent urodził się na pewno w tym roku?");
  10. }
  11.  
  12. $query1 = 'insert into usg_opis (id_usg,termin,nazwisko,imie,rok_ur,opis) values
  13. ( "'.$_POST['bad'].'",now(), "'.$_POST['nazwisko'].'","'.$_POST['imie'].'",
  14. "'.$_POST['rok_ur'].'", "'.$_POST['opis'].'")';
  15. $result1=mysqli_query($mysqli,$query1) or
  16. die(mysqli_error($mysqli));
  17. } else {
  18. die("Nie podales roku urodzenia");
  19. }
  20. ?>
jacusek
Dzięki za pomoc. Własne błędy zawsze najtrudniej zauważyć.
MateuszS nawet linijka 18 nie jest właściwie potrzebna bo przecież i tak jeżeli wysłane dane nie będą się zgadzały to wykonywanie skrytpu zakończy się w momencie wywołania funkcji die();
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.