Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]dodawanie pustego rekordu po odświeżeniu
Forum PHP.pl > Forum > Przedszkole
Gość
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. }
CTRL
Pokaż formularz. Blokowanie pustych pól nie zadziała bo wszędzie masz &&. Warunek się spełni jeśli nie podasz żadnych danych.
rossecki
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ść
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. }
CTRL
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ść
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
CTRL
Wcale nie przenosi czy pokazuje errora że plik nie istnieje? Może literówka, inventry czy inventory?
Gość
wcale nie działa, nic nie robi nie jest literówka sprawdzałem i wklejałem
CTRL
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.
Gość
../ 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;
Rysh
Zastanów się nad funkcją empty zamiast if(!$cos).
Gość
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
Rysh
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ść
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
Rysh
Zatrzymać możesz przez die(); ale lepiej skorzystać z klamerek { } i posłużyć się else.
Gość
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. }
Niktoś
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. }
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.