Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]apostrof górny - nie zapisują się dane do bazy; wymuszenie wypełnienia niektórych pól
Forum PHP.pl > Forum > Przedszkole
Ludek72
Witam wszystkich smile.gif
Moje pojęcie o php jest praktycznie żadne. Skrypt został napisany przez osobę, która aktualnie nie może mi pomóc. sad.gif
Mam formularz zgłoszeniowy, który wysyła dane na mojego maila, maila osoby wpisującej, wrzuca dane do bazy, a część ich wyświetla na stronie. I to działa:).

Mam jednak 2 problemy
1. chcę wymusić, aby niektóre pola były obowiązkowe do wypełnienia np. imię i nazwisko telefon kontaktowy, email.
2. Jeśli przy wprowadzaniu danych, w któreś pole wpiszę apostrof górny „'”, to dane nie wpisują się do bazy, a co za tym idzie nie pokazują się na stronie. Maile idą bez problemów.
Wyświetla się przy tym następujący komunikat: (w pole adres1 wpisałam apostrof ')

Cytat(komunikat o błędzie)
„Dziękujemy za zgłoszenie na zawody. Przypominamy, iż termin wpłaty upływa 30-09-2009 r. Prosimy o przesłanie dowodu wpłaty na adres cavano@interia.pl.
Błšd wykonania zapytania - INSERT INTO lista_zawodnikow (imienazwisko1, adres1, kodpocztowy1, miasto1, oddzial1, nrlegitymacji1, dataurodz1, imienazwisko2, adres2, kodpocztowy2, miasto2, oddzial2, nrlegitymacji2, imiedomowe, imierodowodowe, rasa, dataurodzenia, plecpsa, pkr, nrrejestracjioddzialowej, nrksiazeczkipracy, klasawzrostu, poziomzaawansowania, dniuczestnictwa, nazwadruzyny, akceptacja, telkontaktowy, email) VALUES ('test', '\'', 'test', 'test', 'test', 'test', 'test', '', '', '', '', '', '', 'test', 'test', 'test', 'test', 'pies', 'test', 'test', 'test', '(L)Large', 'A0', 'sobota + niedziela', 'test', '', 'test', 'test')
- SQL logic error or missing database”



Kod formularza wrzuciłam tutaj, bo nie mieści się w poście.

Kod formularza

Działający formularz jest tutaj:

Formularz

Mam nadzieję, że znajdzie się ktoś, kto łopatologicznie wytłumaczy blondynce, jak sobie poradzić z problemami.
uirapuru
szybko strzelam, przed wysłaniem formularza przeleć wszystkie jego pola addslashes(), a przy odczycie stripslashes(), bo jesli bedziesz chcial zapisać " to Ci moze sie wylozyc polecenie
Ludek72
Cytat(uirapuru @ 28.05.2009, 00:12:40 ) *
szybko strzelam, przed wysłaniem formularza przeleć wszystkie jego pola addslashes(), a przy odczycie stripslashes(), bo jesli bedziesz chcial zapisać " to Ci moze sie wylozyc polecenie




Czy one spowodują, że jeśli osoba, która wejdzie na stronę WWW i wypełniając formularz wpisze np. I’m dog, to dane zapiszą się w mojej bazie?
Obecnie maile idą zarówno do mnie jak i do osoby wypełniającej formularz, ale dane nie zapisują się bazie.

W którym miejscu mam umieścić addslashes i stripslashes?

Tak jak pisałam. Nie mam bladego pojęcia o PHP, więc pewnie moje pytania dla niektórych są oczywiste.
ArekJ
To podaj kod, a my postaramy się pomóc.
Ludek72
Cytat(ArekJ @ 28.05.2009, 19:01:41 ) *
To podaj kod, a my postaramy się pomóc.


Podałam w pierwszym poście smile.gif
Niestety jest za długi więc nie mieści się tutaj. Wrzuciłam do worda.

Cytat(Ludek72 @ 27.05.2009, 22:35:00 ) *
Kod formularza wrzuciłam tutaj, bo nie mieści się w poście.

Kod formularza

Działający formularz jest tutaj:

Formularz

Mam nadzieję, że znajdzie się ktoś, kto łopatologicznie wytłumaczy blondynce, jak sobie poradzić z problemami.
hondek
W javascript mozesz wymusic wpisanie niektorych pol do fomularza - onsubmit()
Poza tym przy creatowanie bazy te pola ktore nie moga byc puste okreslaj jako NOT NULL zamiast default NULL

czemu akurat word?

aha

addslashes() daj kiedy przepisujesz z $_POST do zmiennej:
  1. <?php
  2. $imienazwisko1 = addslashes($_POST['imienazwisko1']);
  3. ?>

a stripslashes() kiedy odczytujesz zmienna:
  1. <?php
  2. $wiadomosc .= "<b>Imię Nazwisko</b>: ".stripslashes($imienazwisko1);
  3. ?>
Ludek72
Dziękuje bardzo za pomoc.smile.gif

Cytat(hondek @ 28.05.2009, 21:05:57 ) *
W javascript mozesz wymusic wpisanie niektorych pol do fomularza - onsubmit()


Czy to ten fragment odpowiada za wymuszenie? Jeśłi tak, to coś jest źle wpisane, bo nie działa.

  1. <?php
  2. <script language="JavaScript">
  3. <!--
  4.  
  5. function formCheck(formobj){
  6.    // Enter name of mandatory fields
  7.    var fieldRequired = Array("imienazwisko1", "adres1", "kodpocztowy1", "miasto1", "oddzial1", "nrlegitymacji1", "dataurodz1", "imienazwisko2", "adres2", "kodpocztowy2", "miasto2", "oddzial2", "nrlegitymacji2", "imiedomowe", "imierodowodowe", "rasa", "dataurodzenia", "plecpsa", "pkr", "nrrejestracjioddzialowej", "nrksiazeczkipracy", "klasawzrostu", "poziomzaawansowania", "dniuczestnictwa", "nazwadruzyny", "akceptacja", "telkontaktowy","email");
  8.    // Enter field description to appear in the dialog box
  9.    var fieldDescription = Array("Imię i Nazwisko", "Adres", "Kod pocztowy", "Miasto", "Oddział ZKwP", "Nr legitymacji", "Data urodzenia"
  10.        "Imię i Nazwisko", "Adres",  "Kod pocztowy", "Miasto", "Oddział ZKwP", "Nr legitymacji",
  11.        "Imię domowe", "Imię rodowodowe", "Rasa", "Data urodzenia", "Płeć psa", "PKR", "Nr rejestracji oddziałowej", "Nr książeczki pracy",
  12.        "Klasa wzrostu", "Poziom zaawansowania", "Dni uczestnictwa", "Nazwa drużyny", "akceptacja", "Tel. kontaktowy", "email");
  13.    // dialog message
  14.    var alertMsg = "Proszę uzupełnić dane:\n";
  15.    
  16.    var l_Msg = alertMsg.length;
  17.    
  18.    for (var i = 0; i < fieldRequired.length; i++){
  19.        var obj = formobj.elements[fieldRequired[i]];
  20.        if (obj){
  21.            switch(obj.type){
  22.            case "select-one":
  23.                if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
  24.                    alertMsg += " - " + fieldDescription[i] + "\n";
  25.                }
  26.                break;
  27.            case "select-multiple":
  28.                if (obj.selectedIndex == -1){
  29.                    alertMsg += " - " + fieldDescription[i] + "\n";
  30.                }
  31.                break;
  32.            case "text":
  33.            case "textarea":
  34.                if (obj.value == "" || obj.value == null){
  35.                    alertMsg += " - " + fieldDescription[i] + "\n";
  36.                }
  37.                break;
  38.            default:
  39.            }
  40.            if (obj.type == undefined){
  41.                var blnchecked = false;
  42.                for (var j = 0; j < obj.length; j++){
  43.                    if (obj[j].checked){
  44.                        blnchecked = true;
  45.                    }
  46.                }
  47.                if (!blnchecked){
  48.                    alertMsg += " - " + fieldDescription[i] + "\n";
  49.                }
  50.            }
  51.        }
  52.    }
  53.  
  54.    if (alertMsg.length == l_Msg){
  55.        return true;
  56.    }else{
  57.        alert(alertMsg);
  58.        return false;
  59.    }
  60. }
  61. // -->
  62. </script>
  63. ?>



Resztę wypróbuję wieczorkiem i dam znać jak poszło.
Jeszcze raz dzięki.



********************************************************************************


Niestety porażka na całej linii sad.gif

pola addslashes(), stripslashes()

Nadal nie zapisuje się do bazy. Natomiast zmieniło się, że przy wysyłaniu maili zamiast wpisanego I'm dog, wysyła się I\'m dog.

wstawiłam następująco przy polu imierodowodowe

  1. <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
  2. <body bgcolor="#DEFBC4" link="#000000" vlink="Green" alink="#000000">
  3. <?php
  4. if (isset($_POST['imienazwisko1']))
  5. {
  6. $imienazwisko1 = $_POST['imienazwisko1'];
  7. $adres1 = $_POST['adres1'];
  8. $kodpocztowy1 = $_POST['kodpocztowy1'];
  9. $miasto1 = $_POST['miasto1'];
  10. $oddzial1 = $_POST['oddzial1'];
  11. $nrlegitymacji1 = $_POST['nrlegitymacji1'];
  12. $dataurodz1 = $_POST['dataurodz1'];
  13. $imienazwisko2 = $_POST['imienazwisko2'];
  14. $adres2 = $_POST['adres2'];
  15. $kodpocztowy2 = $_POST['kodpocztowy2'];
  16. $miasto2 = $_POST['miasto2'];
  17. $oddzial2 = $_POST['oddzial2'];
  18. $nrlegitymacji2 = $_POST['nrlegitymacji2'];
  19. $imiedomowe = $_POST['imiedomowe'];
  20. $imierodowodowe = addslashes($_POST['imierodowodowe']);
  21. $rasa = $_POST['rasa'];
  22. $dataurodzenia = $_POST['dataurodzenia'];
  23. $plecpsa = $_POST['plecpsa'];
  24. $pkr = $_POST['pkr'];
  25. $nrrejestracjioddzialowej = $_POST['nrrejestracjioddzialowej'];
  26. $nrksiazeczkipracy = $_POST['nrksiazeczkipracy'];
  27. $klasawzrostu = $_POST['klasawzrostu'];
  28. $poziomzaawansowania = $_POST['poziomzaawansowania'];
  29. $dniuczestnictwa = $_POST['dniuczestnictwa'];
  30. $nazwadruzyny = $_POST['nazwadruzyny'];
  31. $akceptacja = $_POST['akceptacja'];
  32. $telkontaktowy = $_POST['telkontaktowy'];
  33. $email = nl2br($_POST['email']);
  34. $date = date('Y-m-d');
  35. $wiadomosc = "
  36. <html>
  37. <head>
  38. <meta http-equiv='Content-type' content='text/html; charset=ISO-8859-2' />
  39. <title>Formularz zgłoszeniowy FPP</title>
  40.  
  41. <style>
  42. #color1 {background:#D5D6E0;}
  43. #color2 {background:#E4E6F8;}
  44. #color3 {background:#EEEFF8;}
  45. #odstep1 {padding : 3px;}
  46. #odstep {padding : 6px;}
  47. table {
  48.    font-family : verdana, helvetica, sans-serif;
  49.    font-style  : normal;
  50.    font-weight : normal;
  51.    font-size   : 7.5pt;
  52.  
  53.    color : 3F4041;        
  54. }
  55. a.link {color: #2844A5; text-decoration: none; FONT-WEIGHT: bold; font-size: 12px;}
  56. a.link:visited {color: #2844A5; text-decoration: none; FONT-WEIGHT: bold; font-size: 12px;}
  57. a.link:active {color: #2844A5; text-decoration: none; FONT-WEIGHT: bold; font-size: 12px;}
  58. a.link:hover {text-decoration: underline; color: #A3A3A3; FONT-WEIGHT: bold; font-size: 12px;}
  59. a.link:visited:hover {text-decoration: underline; color: #A3A3A3; FONT-WEIGHT: bold; font-size: 12px;}
  60.  
  61. a.link1 {color: #000000; text-decoration: none; FONT-WEIGHT: bold; font-size: 12px;}
  62. a.link1:visited {color: #000000; text-decoration: none; FONT-WEIGHT: bold; font-size: 12px;}
  63. a.link1:active {color: #000000; text-decoration: none; FONT-WEIGHT: bold; font-size: 12px;}
  64. a.link1:hover {text-decoration: underline; color: #FF3300; FONT-WEIGHT: bold; font-size: 12px;}
  65. a.link1:visited:hover {text-decoration: underline; color: #FF3300; FONT-WEIGHT: bold; font-size: 12px;}
  66.  
  67. </style>
  68. </head>
  69. <body>
  70.  
  71. Dziękujemy za zgłoszenie na zawody.
  72. Przypominamy, iż termin wpłaty upływa 30-09-2009 r. Prosimy o przesłanie dowodu wpłaty na adres cavano@interia.pl.
  73. <p />
  74.  
  75. <br /><br /><br />Informacje wpisane w formularzu:<br /><br />
  76. ";
  77. $wiadomosc .= "<b>Imię Nazwisko</b>: ".$imienazwisko1;
  78. $wiadomosc .= "<div id='odstep'></div>";
  79. $wiadomosc .= "<b>Adres (ulica z numerem)</b>: ".$adres1;
  80. $wiadomosc .= "<div id='odstep'></div>";
  81. $wiadomosc .= "<b>Kod pocztowy</b>: ".$kodpocztowy1;
  82. $wiadomosc .= "<div id='odstep'></div>";
  83. $wiadomosc .= "<b>Miasto</b>: ".$miasto1;
  84. $wiadomosc .= "<div id='odstep'></div>";
  85. $wiadomosc .= "<b>Oddział ZKwP</b>: ".$oddzial1;
  86. $wiadomosc .= "<div id='odstep'></div>";
  87. $wiadomosc .= "<b>Nr legitymacji</b>: ".$nrlegitymacji1;
  88. $wiadomosc .= "<div id='odstep'></div>";
  89. $wiadomosc .= "<b>Data urodzenia</b>: ".$dataurodz1;
  90. $wiadomosc .= "<div id='odstep'></div>";
  91. $wiadomosc .= "<b>Imię Nazwisko</b>: ".$imienazwisko2;
  92. $wiadomosc .= "<div id='odstep'></div>";
  93. $wiadomosc .= "<b>Adres (ulica z numerem)</b>: ".$adres2;
  94. $wiadomosc .= "<div id='odstep'></div>";
  95. $wiadomosc .= "<b>Kod pocztowy</b>: ".$kodpocztowy2;
  96. $wiadomosc .= "<div id='odstep'></div>";
  97. $wiadomosc .= "<b>Miasto</b>: ".$miasto2;
  98. $wiadomosc .= "<div id='odstep'></div>";
  99. $wiadomosc .= "<b>Oddział ZKwP</b>: ".$oddzial2;
  100. $wiadomosc .= "<div id='odstep'></div>";
  101. $wiadomosc .= "<b>Nr legitymacji</b>: ".$nrlegitymacji2;
  102. $wiadomosc .= "<div id='odstep'></div>";
  103. $wiadomosc .= "<b>Imię domowe</b>: ".$imiedomowe;
  104. $wiadomosc .= "<div id='odstep'></div>";
  105. $wiadomosc .= "<b>Imię rodowodowe</b>: ".stripslashes($imierodowodowe);
  106. $wiadomosc .= "<div id='odstep'></div>";
  107. $wiadomosc .= "<b>Rasa</b>: ".$rasa;
  108. $wiadomosc .= "<div id='odstep'></div>";
  109. $wiadomosc .= "<b>Data urodzenia</b>: ".$dataurodzenia;
  110. $wiadomosc .= "<div id='odstep'></div>";
  111. $wiadomosc .= "<b>Płeć psa</b>: ".$plecpsa;
  112. $wiadomosc .= "<div id='odstep'></div>";
  113. $wiadomosc .= "<b>PKR</b>: ".$pkr;
  114. $wiadomosc .= "<div id='odstep'></div>";
  115. $wiadomosc .= "<b>Nr rejestracji oddziałowej</b>: ".$nrrejestracjioddzialowej;
  116. $wiadomosc .= "<div id='odstep'></div>";
  117. $wiadomosc .= "<b>Nr książeczki pracy</b>: ".$nrksiazeczkipracy;
  118. $wiadomosc .= "<div id='odstep'></div>";
  119. $wiadomosc .= "<b>Klasa wzrostu</b>: ".$klasawzrostu;
  120. $wiadomosc .= "<div id='odstep'></div>";
  121. $wiadomosc .= "<b>Poziom zaawansowania</b>: ".$poziomzaawansowania;
  122. $wiadomosc .= "<div id='odstep'></div>";
  123. $wiadomosc .= "<b>Dni uczestnictwa</b>: ".$dniuczestnictwa;
  124. $wiadomosc .= "<div id='odstep'></div>";
  125. $wiadomosc .= "<b>Nazwa drużyny</b>: ".$nazwadruzyny;
  126. $wiadomosc .= "<b>akceptacja</b>: ".$akceptacja;
  127. $wiadomosc .= "<b>telkontaktowy</b>: ".$telkontaktowy;
  128. $wiadomosc .= "<div id='odstep'></div>";
  129. $wiadomosc .= "<b>e-mail</b>: <a href='mailto:".$email."' class='link'>".$email."</a>";
  130. $wiadomosc .= "
  131. </body>
  132. </html>
  133. ";
  134. ?>


Przy zamianie default NULL na NOT NULL nic się nie zmieniło.
Mogę wysłać formularz z pustym polem.

Robiłam to następująco.
Usunęłam całą bazę. Zmodyfikowałam skrypt przy jednym w pól (imienazwisko1) wpisując NOT NULL. Uruchomiłam skrypt. Utworzyła się baza i tabela. Bez problemu mogę opuścić pole określone jako NOT NULL

  1. <?php
  2. $sqlite->query("CREATE TABLE lista_zawodnikow ( id INTEGER NOT NULL , imienazwisko1 varchar(255) NOT NULL, adres1 varchar(255) default NULL, kodpocztowy1 varchar(255) default NULL, miasto1 varchar(255) default NULL, oddzial1 varchar(255) default NULL, nrlegitymacji1 varchar(255) default NULL, dataurodz1 varchar(255) default NULL, imienazwisko2 varchar(255) default NULL, adres2 varchar(255) default NULL, kodpocztowy2 varchar(6) default NULL, miasto2 varchar(255) default NULL, oddzial2 varchar(255) default NULL, nrlegitymacji2 varchar(255) default NULL, imiedomowe varchar(255) default NULL, imierodowodowe varchar(255) default NULL, rasa varchar(255) default NULL, dataurodzenia varchar(255) default NULL, plecpsa varchar(255) default NULL, pkr varchar(255) default NULL, nrrejestracjioddzialowej varchar(255) default NULL, nrksiazeczkipracy varchar(255) default NULL, klasawzrostu varchar(255) default NULL, poziomzaawansowania varchar(255) default NULL, dniuczestnictwa varchar(255) default NULL, nazwadruzyny varchar(255) default NULL, akceptacja varchar(255) default NULL, telkontaktowy varchar(255) default NULL,email varchar(255) default NULL, PRIMARY KEY (id))");
  3. ?>
erix
magic_quotes ;]
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.