Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]dodawanie pustego rekordu po odświeżeniu, dodawanie pustego rekordu po odświeżeniu
-Gość-
post 17.07.2012, 18:59:27
Post #1





Goście







Witam i proszę pomoc, piszę właśnie formularz w php i mam problem gdyż po odświeżeniu strony dodaje mi pusty rekord do bazy, próbowałem wyłapać ten problem poprzez blokowanie dodawania podwójnej nazwy ale nie działa i też nie działa sprawdzanie pustych pól, nie wiem jak to rozwiązać pomocy

  1. $productName=isset($_POST['prodactname']) ? $_POST["prodactname"] : "";
  2. $cena=isset($_POST['cena']) ? $_POST["cena"] : "";
  3. $opis=isset($_POST['opis']) ? $_POST["opis"] : "";
  4. $producent=isset($_POST['producent']) ? $_POST["producent"] : "";
  5. $numer_katalogowy=isset($_POST['numer_katalogowy']) ? $_POST["numer_katalogowy"] : "";
  6.  
  7. $productName= addslashes($productName);
  8. $cena= addslashes($cena);
  9. $opis= addslashes($opis);
  10. $producent= addslashes($producent);
  11. $numer_katalogowy= addslashes($numer_katalogowy);
  12. }
  13. if(!$productName && !$cena && !$opis && !$producent && !$numer_katalogowy) {
  14. echo "nie podano wszystkich danych <a href=inventry_list.php>wróć</a>";
  15.  
  16. }
  17. $sql= mysql_query("SELELCT id FROM products WHERE prodactname='$productName' LIMIT 1");
  18. $productMatch=mysql_num_rows($sql);
  19. if ($productMatch >0) {
  20. echo 'Podwójne Nazwa'; exit;}
  21.  
  22. $sql=mysql_query("INSERT INTO products (productname,cena,opis,producent,numer_katalogowy) VALUES( '$productName', '$cena', '$opis', '$producent', '$numer_katalogowy')") or die(mysql_error());
  23. if($sql) {
  24. echo "zostało dodane";
  25. } else {
  26. echo "produkt nie został dodany";
  27. }
Go to the top of the page
+Quote Post
CTRL
post 17.07.2012, 19:16:01
Post #2





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

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


Pokaż formularz. Blokowanie pustych pól nie zadziała bo wszędzie masz &&. Warunek się spełni jeśli nie podasz żadnych danych.


--------------------
Go to the top of the page
+Quote Post
rossecki
post 17.07.2012, 19:18:36
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 3
Dołączył: 3.12.2011

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


formularz => przycisk wyślij => (ewentualna obsługa błędó w załadowanym pliku.php) => dodanie rekordu => zakończenie => powrót do formularza (nie ładuje się drugi raz skrypt dodający)
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 19:32:41
Post #4





Goście







mała literówka i już działa tylko jest problem z linkeim , jeżeli nie wpiszę danej to wyświetli mi napis i link powracający ale nie działa
  1. if(!$productName) {
  2. echo "nie podano wszystkich danych <a href='../inventry_list.php'>wróć</a>"; exit;
  3.  
  4. }
Go to the top of the page
+Quote Post
CTRL
post 17.07.2012, 19:35:56
Post #5





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

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


Patrz co napisałem wyżej.
  1. if(!$productName && !$cena && !$opis && !$producent && !$numer_katalogowy)

Warunek się spełni jeśli nie podasz ŻADNYCH danych. jeśli więc podasz wszystko oprócz $cena warunek się nie spełni czyli błędu nie będzie. Spróbuj z OR


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 19:42:25
Post #6





Goście







Cytat(CTRL @ 17.07.2012, 19:35:56 ) *
Patrz co napisałem wyżej.
  1. if(!$productName && !$cena && !$opis && !$producent && !$numer_katalogowy)

Warunek się spełni jeśli nie podasz ŻADNYCH danych. jeśli więc podasz wszystko oprócz $cena warunek się nie spełni czyli błędu nie będzie. Spróbuj z OR



  1. if(!$productName || !$cena || !$opis || !$producent || !$numer_katalogowy) {
  2. echo "nie podano wszystkich danych <a href='inventry_list.php'>wróć</a>"; exit;


Działa tylko jak nie wpiszę wyświetla mi się echo z linkiem który powinien cofać ale tego nie robi, nie działa w ogóle
Go to the top of the page
+Quote Post
CTRL
post 17.07.2012, 19:44:35
Post #7





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

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


Wcale nie przenosi czy pokazuje errora że plik nie istnieje? Może literówka, inventry czy inventory?


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 19:54:00
Post #8





Goście







wcale nie działa, nic nie robi nie jest literówka sprawdzałem i wklejałem
Go to the top of the page
+Quote Post
CTRL
post 17.07.2012, 19:58:53
Post #9





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

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


Nie może nie działać bez powodu, pokaż nam link do tego jeśli masz. Wcześniej było też ../ a teraz nie ma.

Ten post edytował CTRL 17.07.2012, 19:59:35


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 20:10:36
Post #10





Goście







../ wywalał eror 404

nie mam linka niestety
link działa próbowałem wstawić gdy jest podwójna nazwa
  1. $sql= mysql_query("SELECT id FROM products WHERE productname='$productName' LIMIT 1");
  2. $productMatch=mysql_num_rows($sql);
  3. if ($productMatch >0) {
  4. echo 'Podwójne ID <a href='inventry_list.php'>wróć</a>'; exit;}

ale cofa mnie do
"nie podano wdzystkich danych wróć"
czyli
  1. if(!$productName || !$cena || !$opis || !$producent || !$numer_katalogowy) {
  2. echo "nie podano wszystkich danych <a href='inventry_list.php'>wróć</a>"; exit;
Go to the top of the page
+Quote Post
Rysh
post 17.07.2012, 20:42:43
Post #11





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Zastanów się nad funkcją empty zamiast if(!$cos).


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 20:55:10
Post #12





Goście







Cytat(Rysh @ 17.07.2012, 20:42:43 ) *
Zastanów się nad funkcją empty zamiast if(!$cos).



też nie działa, wygląda to tak jakby się jakaś pętla nie zamknęła nawet jak wpiszę link http://localhost/Myonlinestore/adminstore/inventry_list.php to wyskakuje mi ten komunikat a nie cofa mnie do formularza i nie wiem o co kaman
Go to the top of the page
+Quote Post
Rysh
post 17.07.2012, 21:07:06
Post #13





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Twój kod i tak jest strasznie niefunkcjonalny. Sprawdzasz dane tylko po to, aby wyświetlić komunikat.
Jak jedziesz samochodem i masz znak "koniec mostu" to i tak jedziesz dalej? Twój kod jedzie.


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 21:27:15
Post #14





Goście







Cytat(Rysh @ 17.07.2012, 21:07:06 ) *
Twój kod i tak jest strasznie niefunkcjonalny. Sprawdzasz dane tylko po to, aby wyświetlić komunikat.
Jak jedziesz samochodem i masz znak "koniec mostu" to i tak jedziesz dalej? Twój kod jedzie.


no wiesz każdy jakoś zaczyna, dopiero się uczę dlatego prosze o pomoc. Masz rację w tym co piszesz tylko że nie wiem w tedy jak zatrzymać kod jeżeli nie spełni warunku
Go to the top of the page
+Quote Post
Rysh
post 17.07.2012, 21:30:14
Post #15





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Zatrzymać możesz przez die(); ale lepiej skorzystać z klamerek { } i posłużyć się else.


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.07.2012, 21:44:38
Post #16





Goście







dodałem else dalej nie działa, po prostu po odświeżeniu lub próbie wejścia do formularza ładuje automatycznie skrypt dodający , pytanie: jak to wyłączyć php die () nie działa sad.gif


  1. $productName=isset($_POST['productname']) ? $_POST["productname"] : "";
  2. $cena=isset($_POST['cena']) ? $_POST["cena"] : "";
  3. $opis=isset($_POST['opis']) ? $_POST["opis"] : "";
  4. $producent=isset($_POST['producent']) ? $_POST["producent"] : "";
  5. $numer_katalogowy=isset($_POST['numer_katalogowy']) ? $_POST["numer_katalogowy"] : "";
  6.  
  7. $productName= addslashes($productName);
  8. $cena= addslashes($cena);
  9. $opis= addslashes($opis);
  10. $producent= addslashes($producent);
  11. $numer_katalogowy= addslashes($numer_katalogowy);
  12. }
  13. if(!$productName || !$cena || !$opis || !$producent || !$numer_katalogowy) {
  14. echo 'brak wsystkich danych. <a href="inventry_list.php">powrót</a>';
  15. }
  16. else {
  17. $sql= mysql_query("SELECT id FROM products WHERE productname='$productName' LIMIT 1");
  18. $productMatch=mysql_num_rows($sql);
  19. if ($productMatch >0) {
  20. echo 'Podwójne ID'; exit;}
  21.  
  22. $sql=mysql_query("INSERT INTO products (productname,cena,opis,producent,numer_katalogowy) VALUES( '$productName', '$cena', '$opis', '$producent', '$numer_katalogowy')") or die(mysql_error());
  23. if($sql) {
  24. echo "zostało dodane";
  25. } else {
  26. echo "produkt nie został dodany";
  27. }
  28. $newname="$pid.jpg";
  29. move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$newname");
  30. }
Go to the top of the page
+Quote Post
Niktoś
post 17.07.2012, 21:59:14
Post #17





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Może po prostu sprawdź czy w ogóle formularz został wysłany.
  1. if(isset($_POST)){
  2. //...tutaj polecenia,które się mają wykonać po wysłaniu formularza......
  3. }


Ten post edytował Niktoś 17.07.2012, 22:01:27
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: 31.07.2025 - 11:36