Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ HTML \ XHTML _ [HTML] Jak połączyć dwie wartości w jedną zmienną?

Napisany przez: Mieeetek 1.06.2022, 12:26:35

Przepraszam, szukałem ale nawet na angielskich stronach niczego nie ma, a podejrzewam że to jakaś bardzo prosta sprawa

Chcę zrobić formularz na stronie z jedną zmienną ale dwoma wartościami

czyli żeby formularz przechodził do adresu - index.php?value=aaabbb

ale żeby w formularzu do wprowadzenia były dwa osobne okienka dla aaa i bbb

Czyli żeby formularz połączył wartości z dwóch okienek do jednej zmiennej.

Mogę prosić o pomoc? Próbowałem już łączenia w skrypcie JS i też nie wychodzi. A może da się to zrobić jakąś metodą w nazwie zmiennej - coś jak value= ... +value= ?

Napisany przez: zdun 1.06.2022, 12:56:13

A moze napisz co chcesz osiagnac bo byc moze źle kombinujesz i da sie to inaczej zrobić

Napisany przez: Mieeetek 1.06.2022, 13:08:51

Potrzebuję mieć 2 okienka do wprowadzenia dwóch wartości "aaa" i "bbb"

a w efekcie po kliknięciu przejść do strony o adresie

index.php?value=aaabbb

Niestety nie mam wpływu na ten adres - musi być taki. (nie może być np. index.php?valueA=aaa&valueB=bbb )
Tak dokładnie to potrzebuję żeby adres był nieco dłuższy ale miał trzy wartości ukryte - jak będę mieć metodę to już to ogarnę.

coś jak
index.php?value=UKRYTE1aaaUKRYTE2bbbUKRYTE3

wartości aaa i bbb mogą być różne - wartości ukryte są stałe.

Napisany przez: zdun 1.06.2022, 16:41:32

Ale mnie bardziej chodzi po co ci taki adres.

Napisany przez: Mieeetek 1.06.2022, 18:34:34

A jakie to ma znaczenie?

Adres jest zewnętrzny. Niezależny od mnie. Wyszukiwarka.

Problem polega na tym że aby dojść do adresu ?value=aaabbbcccdddeeefffggg trzeba przejść kilka niepotrzebnych kroków - podczas gdy można to zrobić od razu wklejając adres. (niczego się tu nie omija - po prostu tak kiepsko zrobiona wyszukiwarka). części aaa ccc eee ggg - są stałe, części bbb ddd fff są zmienne.

Dla ułatwienia chciałem zrobić sobie stronkę gdzie sobie wpisuję zmienne i łączę w adres

problem w tym że adres nie ma 5 zmiennych, tylko jedną składaną. Więc nie mogę wysłać formularza z 5 inputami

oczywiście mogę zrobić okienko gdzie sobie podmieniam ciągi bbb ddd fff ręcznie - ale elegancko byłoby aby były odpowiednie okienka do zmiennych fraz.

Zresztą jakie to ma znaczenie. Ciąg adresu jest zadany - nie mogę go zmienić, nie mam na to wpływu.

Chcę rozwiązać problem, bo może się też przydać w innych przypadkach.

Napisany przez: trueblue 1.06.2022, 18:40:01

Wartości tekstowe sklejasz w JS dokładnie tak jak podałeś na początku.
Pokaż jaki masz stworzony kod do sklejania.

Napisany przez: Mieeetek 1.06.2022, 20:51:39

Próbowałem paru metod.
Jeśli chodzi o JS to robiłem tak:

w form dawałem

<input type="hidden" name="va" value="aaa">
<input type="text" name="vb" value="">
<input type="submit" value="Submit" onClick="combine(this.form);">



i HEAD

function combine(form) {
form.v.value = form.va.value + " " + form.ab.value;
}

Trochę skróciłem ten kod, bo tych zmiennych jest kilka, a ja pokazuje w skrócie 2.

============
Próbowałem też konstrukcji typu
<input type="hidden" name="v[]" value="aaa">
<input type="text" name="v[]" value="">

ta powodowało, że w adresie były obie wartości - tzn pojawiało się v[]=aaa&v[]=bbbb


============
próbowałem też najpierw składać jedną zmienną $v w php a następnie tę zmienną wkleić do
window.open($v);

Napisany przez: trueblue 1.06.2022, 21:31:32

https://jsfiddle.net/7x84wrmd/

Napisany przez: Mieeetek 1.06.2022, 22:34:23

Dzięki - ale nie wiem dlaczego to u mnie nie działa.
Dla uproszczenia cały potrzebny adres podzieliłem na inputy - va ... vb ... vc....
gdzie va to jest https://innastrona.pl/?v=
vb - bbb
vc - cccc
....

strona która się otwiera ma mniej więcej adres

mojastrona.pl/va=https%3A%2F%2Finnastrona.pl%2F?v=&vb=bbb&vc=ccc&vd=ddd .... itd.

a powinno być

innastrona.pl/v=aaabbbccc....

Napisany przez: trueblue 2.06.2022, 08:38:14

Pokaż swój obecny kod. W ten sposób możemy dyskutować w nieskończoność.

Napisany przez: Mieeetek 2.06.2022, 12:02:36

proszę - obecnie jest tak - przy czym to jest jedna z wielu różnych prób

  1.  
  2. <http://december.com/html/4/element/script.html type="text/javascript">
  3. <!--
  4.  
  5. var form = document.getElementById('form');
  6. form.addEventListener('submit', function(e) {
  7. e.preventDefault();
  8.  
  9. var href = document.getElementById("va").value + document.getElementById("vb").value + document.getElementById("vc").value + document.getElementById("vd").value + document.getElementById("ve").value + document.getElementById("vf").value + document.getElementById("vg").value
  10.  
  11. alert(href);
  12. window.open(href,"_blank");
  13. });
  14.  
  15. //-->
  16. </http://december.com/html/4/element/script.html>
  17.  
  18.  
  19. </http://december.com/html/4/element/head.html>
  20. <http://december.com/html/4/element/body.html>
  21.  
  22. <http://december.com/html/4/element/form.html id="form">
  23. <http://december.com/html/4/element/input.html name="va" type="hidden" value="https://polona.pl/search/?query=">
  24. Nazwisko:
  25. <http://december.com/html/4/element/input.html name="vb" type="text" size="80" value=""><http://december.com/html/4/element/br.html>
  26. Zakres dat:
  27. <http://december.com/html/4/element/input.html name="vc" type="hidden" value="&filters=dateRange:">
  28. <http://december.com/html/4/element/input.html name="vd" type="text" size="35" value="">
  29. do
  30. <http://december.com/html/4/element/input.html name="ve" type="hidden" value=".01.01--">
  31. <http://december.com/html/4/element/input.html name="vf" type="text" size="35" value="">
  32. <http://december.com/html/4/element/input.html name="vg" type="hidden" value=".01.01,public:1,hasTextContent:0date%20asc&highlight=1">
  33.  
  34.  
  35. <http://december.com/html/4/element/br.html> <http://december.com/html/4/element/button.html type="submit"> szukaj </http://december.com/html/4/element/button.html>
  36. </http://december.com/html/4/element/form.html>
  37.  



Napisany przez: viking 2.06.2022, 12:23:55

Skrypt jest przed kodem html kiedy jeszcze nie wie nic o elementach. Oraz elementy forma do których się odwołujesz nie mają żadnych id.
https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event

Napisany przez: Mieeetek 2.06.2022, 13:41:46

skrypt jest HEAD
niezależnie zresztą od umieszczenia na stronie efekt jest taki sam
- inputy mają "name", gdy zamienia się to na id - wtedy wogóle nie działa

ten skrypt POBIERA dane - ale ich nie łączy

Napisany przez: trueblue 2.06.2022, 13:49:15

Jest w <head>, ale w momencie uruchamiania zawartość <body> nie jest załadowania (czyli nie ma dostępu do formularza).

  1. var href = form.va.value + form.vb.value + form.vc.value + form.vc.value + form.vd.value + form.ve.value + form.vf.value + form.vg.value;

P.S. Nie wiem dlaczego na siłę znów pchasz stałe ciągi do pól hidden.

Napisany przez: Mieeetek 2.06.2022, 13:50:51

a mogę prosić po prostu o pomoc jak to poprawić?

EDIT: sorry - już zajarzyłem - prosty błąd - brak odwołania do funkcji
Działa!
Dzięki

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)