Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> nietypowa zamiana + z URL na spacje lub
multiqlti
post 1.10.2019, 09:03:19
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


Przesyłając dane z formularza przed zapisem do bazy danych , php raz zamienia mi "+" na "_" a raz na "spacje"

url jaki otrzymuje przed zapisem do bazy :
company=q+w+e+r+t+y&country=q&code=q&city=q&street=q+2+w+3+4+&email=q%40q.pl&phone=123&person=qwert+qwerty&distributor=q&ArCADia+BIM+11+EN=1&ArCADia-EXTERNAL+GAS+INSTALLATIONS+1+EN=1&ArCADia-LANDSCAPE+%0D%0AARCHITECTURE+Library+1+EN=1

i tak np. "company=q+w+e+r+t+y" w bazie zapisze się jako : q w e r t y (ze spacjami miedzy znakami , bo tak zostało dosłownie zapisane w formularzu)
a np. nazwa programu : "ArCADia-EXTERNAL+GAS+INSTALLATIONS+1+EN=1" zapisze sie w bazie jako : ArCADia-EXTERNAL_GAS_INSTALLATIONS_1_EN (php zamienił spacje z _ )

?! jak to ogarnąć ?
Od czego to może zależeć ?
Go to the top of the page
+Quote Post
nospor
post 1.10.2019, 09:19:50
Post #2





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




W pierwszym przypadku masz wartosc, w drugim masz nazwe. Co to w ogole za pomysl by nazwy pol formularza dawac ze spacja?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.10.2019, 09:48:12
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


czemu to jest różnica wartość czy nazwa ? Przecież docelowo powinienem móc z tym zrobic co zechce i formatowanie powinno być takie samo.

nazwa pola formularza generowana jest automatycznie z pętli i wrzucana do <SELECT>

  1. $result = ProgramListForDealer($conn, $username);
  2.  
  3. foreach ($result as $row)
  4. {
  5. $program_name = $row['EN'];
  6. $program_version = $row['version'];
  7. $program_language_name = $row['language_name'];
  8.  
  9. $progam = $program_name." ".$program_version." ".$program_language_name;
  10.  
  11. echo "<option value='1'>".$progam."</option>";
  12. }


Ponieważ lista produktów jest długa i można zamówić dowolną ilość dowolnego produktu to w javascripcie zrobiłem dynamiczne dodawanie <input> po każdym wyborze produktu i ilości danego produktu. (dodatkowo mam przyciski ADD/DEL dla kazdego produktu - inputu)
Docelowo do bazy zapisuje w kolumnie PRODUCT nazwę pola formularza czyli $program (z powyżej) i ilość z osobnego input
nie rozumiem tylko czemu raz robi spacje a raz "_"
jak nad tym zapanować ?

Ten post edytował multiqlti 1.10.2019, 09:49:42
Go to the top of the page
+Quote Post
nospor
post 1.10.2019, 09:58:08
Post #4





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Nazwa to nazwa. To jest specjalny mechanizm i tyle. PRzyjmij to do wiadomosci a bedziesz mial lzejsze zycie programisty.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.10.2019, 10:02:22
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


to co teraz z tym zrobić ?
zostaje mi tylko str_replace przed dodaniem do bazy ?
Go to the top of the page
+Quote Post
nospor
post 1.10.2019, 10:05:48
Post #6





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Albo poprawic caly mechanizm. Bo teraz co widze to nazwe skladasz z wielu elementow co juz samo w sobie prosi sie o poprawe


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.10.2019, 10:14:42
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


składam z wielu elementów bo źródło tych "składek" jest z wielu tabel bazy danych

jaką drogę poprawki być mógłbyś zasugerować ?
Go to the top of the page
+Quote Post
nospor
post 1.10.2019, 10:19:53
Post #8





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Opisz dokladnie co robisz oraz do jakiej struktury bazy to wkladasz. Ciezko strzelac nie znajac sytuacji


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.10.2019, 10:56:20
Post #9





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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



po wybraniu produku i ilosci mozna dodac <input> z tymi wartosciami , gdzie name="$product" a drugi <input> jest dla ilosci/quantity

Tutaj jest mechanizm zapełniania <select>

  1. $result = ProgramListForDealer($conn, $username);
  2.  
  3. foreach ($result as $row)
  4. {
  5. $program_name = $row['EN'];
  6. $program_version = $row['version'];
  7. $program_language_name = $row['language_name'];
  8.  
  9. $progam = $program_name." ".$program_version." ".$program_language_name;
  10.  
  11. echo "<option value='1'>".$progam."</option>";
  12. }


a zapis do bazy o takiej strukturze :
dane usera ida do osobnej tabeli , a lista produktów do takiej ponizej :



Ten post edytował multiqlti 1.10.2019, 10:57:00
Go to the top of the page
+Quote Post
trueblue
post 2.10.2019, 08:34:36
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Tabela gdzie zapisujesz nazwę programu oraz ilość licencji powinna być rozbita na dwie. W niej zamiast nazwy programu powinien pozostać klucz obcy nawiązujący do drugiej tabeli gdzie przechowujesz tylko i wyłącznie dostępne programy. Czyli powiązanie poprzez id_program.
W <select> zamiast value="1" powinno być właśnie id_program (tą listę tworzysz z drugiej, wyżej wspomnianej tabeli).
Kiedy wybierasz opcję z <select> powinien być tworzony jeden <input> z nazwą np.: quantity[tu_id_program]. Nazwę programu można przechować w <label> dla tegoż <input>.
Zatwierdzając taki formularz otrzymasz w PHP tablicę o nazwie quantity z indeksami nawiązującymi do id_program, a pod indeksem ilość licencji wpisaną przez użytkownika.


--------------------
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: 20.04.2024 - 01:52