Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nietypowa zamiana + z URL na spacje lub
Forum PHP.pl > Forum > PHP
multiqlti
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ć ?
nospor
W pierwszym przypadku masz wartosc, w drugim masz nazwe. Co to w ogole za pomysl by nazwy pol formularza dawac ze spacja?
multiqlti
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ć ?
nospor
Nazwa to nazwa. To jest specjalny mechanizm i tyle. PRzyjmij to do wiadomosci a bedziesz mial lzejsze zycie programisty.
multiqlti
to co teraz z tym zrobić ?
zostaje mi tylko str_replace przed dodaniem do bazy ?
nospor
Albo poprawic caly mechanizm. Bo teraz co widze to nazwe skladasz z wielu elementow co juz samo w sobie prosi sie o poprawe
multiqlti
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ć ?
nospor
Opisz dokladnie co robisz oraz do jakiej struktury bazy to wkladasz. Ciezko strzelac nie znajac sytuacji
multiqlti

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 :

trueblue
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.
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.