Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]Jak przypisać liczbę do select
Forum PHP.pl > Forum > Przedszkole
cusek
Panowie kolejny z seri prostych i prostszych jednak nie dla mnie

Jak do czegoś takiego jak poniżej przypisać wartość liczbową, niezmienną, różną dla każdego modelu?
Aby potem można by było ją przypisać do stałej?
Kod
<tr>
                  <td>marka i model: </td>
                  <td>
  <script type='text/javascript'>
  var opcje = new Array();
  opcje[0] = new Array();
  opcje[0][0] = '';
  
  opcje[1] = new Array();
  opcje[1][0] = 'Volkswagen';
  opcje[1][1] = 'Golf';
  opcje[1][2] = 'Passat'
  
  opcje[2] = new Array();
  opcje[2][0] = 'Nissan';
  opcje[2][1] = 'Primera';
  opcje[2][2] = 'Almera';
  
  opcje[3] = new Array();
  opcje[3][0] = 'Porsche';
  opcje[3][1] = '911';
  opcje[3][2] = 'Carrera';
  opcje[3][3] = 'Cayenne';
  
  opcje[4] = new Array();
  opcje[4][0] = 'Moskiewicz';
  opcje[4][1] = '---';
  
  opcje[5] = new Array();
  opcje[5][0] = 'Toyota';
  opcje[5][1] = 'Celica';
  opcje[5][2] = 'Avensis';
  opcje[5][3] = 'Corolla';
  
  
  // i tak dalej
  
  function change(i) {
  s2 = document.getElementById('s2');
  len = s2.childNodes.length;
  for(j=0; j<len; j++) {
  s2.removeChild(s2.childNodes.item(0));
  }
  
  if(i==0) {
  return true;
  }
  
  for(j=1; j<opcje[i].length; j++) {
  opt = document.createElement('option');
  opt.value = j;
  opt.appendChild( document.createTextNode( opcje[i][j] ) );
  s2.appendChild(opt);
  }
  }
  
  function start() {
  s1 = document.getElementById('s1');
  for(i=0; i<opcje.length; i++) {
  opt = document.createElement('option');
  opt.value = i;
  opt.appendChild( document.createTextNode( opcje[i][0] ) );
  s1.appendChild(opt);
  }
  }
  
  </script>
  
  <body onload='start();'>
  <select id='s1' onchange='change(this.value);' name='marka'>
  </select>
  
  <select id='s2' name='model'>
  </select>
                  </td>
              </tr>
Gacek89
popraw tag w temacie bo ja tu php niewidze
cusek
Czepiasz się i to bardzo, to będzie wykorzystane w php do kalkulatora dlatego taki taq
erix
Od tego macie PW, żeby sobie pogadać; to nie ma nic do problemu.

Cytat
Jak do czegoś takiego jak poniżej przypisać wartość liczbową, niezmienną, różną dla każdego modelu?

Nie wiem, czy o to chodziło, ale może:

Kod
opcje[1] = new Array();
opcje[1][0][0] = 'Volkswagen';
opcje[1][0][1] = 2;


itd...
cusek
erix to raczej nie pójdzie bo ja potem te dane-liczby muszę wykorzystać w kalkulatorze php,
mam jeszcze drugi problem z tym js jest możliwość pomocy na gg z twojej strony?
EarthCitizen
Opisz co chcesz robić dalej z tym polem select, jak ma działać ten kalkulator, bo chyba za bardzo kombinujesz... Sposób podany przez erix jest ok, musisz tylko zmienić kod modyfikujący listę select...
cusek
No to tak występują dwa problemy:

1. ten który jest omawiany to tak:

Po wybraniu w formularzu(http://74.54.249.87/cusek/kokon/index.php?strona=kalkulator)
z pola marka i model, wypełnieniu całego formularza, i kliknięciu dalej dostajemy info że

Cytat
Dane zostały wysłane do naszego agenta, który skontaktuje się z Tobą z gotową ofertą.

Jednak już teraz wiesz że twoja składka wynosić będzie:
Xzł przy 6 miesiącach,

xzł przy 12 miesiącach.


gdzie X ma to być kolejno "liczba zdefiniowana przez model / 6=" "liczba zdefiniowana przez model / 12="
inne zmienne w stylu uszkodzenia itd. są nie ważne ma to być na zaliczenie do szkoły.

Drugi problem to problem który pojawia sie po dotarciu wiadomości na skrzynkę:
Cytat
Oto dane klienta:
Rodzaj samochodu: osobowy
Rodzaj użytkowania: prywatny
Rok produkcji: RRRR
Marka i model: 1 1


jest 1 1 a powinno być Volkswagen Golf

Jak to rozwiązać?
EarthCitizen
No i trzeba było tak od razu;) Sposób podany Ci przez Erix'a była jak najbardziej poprawny... Ja trochę inaczej zapisałem elementy w tablicy, to tak, żebyś wiedział, że można inaczej...

Kod
<script type='text/javascript'>
var opcje = new Array();
opcje[0] = new Array();
opcje[0][0] = '';

opcje[1] = new Array();
opcje[1][0] = 'Volkswagen';
opcje[1][1] = ['Golf',100.00];

opcje[2] = new Array();
opcje[2][0] = 'Nissan';
opcje[2][1] = ['Primera',299.00];

function change(i) {
        s2 = document.getElementById('s2');
        len = s2.childNodes.length;
        
        for(j=0; j<len; j++) {
                s2.removeChild(s2.childNodes.item(0));
        }

        if(i==0) {
                return true;
        }

        opt       = document.createElement('option');
        opt.value = 0;
        opt.appendChild( document.createTextNode('wybierz model') );
        s2.appendChild(opt);

        for(j=1; j<opcje[i].length; j++) {
                opt = document.createElement('option');
                opt.value = j;
                opt.appendChild( document.createTextNode( opcje[i][j][0] ) );
                s2.appendChild(opt);
        }
}

function start() {
        s1 = document.getElementById('s1');
        for(i=0; i<opcje.length; i++) {
                opt = document.createElement('option');
                opt.value = i;
                opt.appendChild( document.createTextNode( opcje[i][0] ) );
                s1.appendChild(opt);
        }
}

function wstawDane(form) {
        var markaId = form.s1.options[form.s1.selectedIndex].value;
        var modelId = form.s2.options[form.s2.selectedIndex].value;
        
        if (modelId == 0) {
                form.cena.value = '';
        } else {
                form.cena.value  = opcje[markaId][modelId][1];  // cena
                form.marka.value = opcje[markaId][0];           // marka
                form.model.value = opcje[markaId][modelId][0];  // model
        }
}

</script>

<body onload='start();'>

<form action="skrypt.php" method="post" id="form1">
        <input type="text" name="cena" id="cena" value="" />
        <input type="text" name="marka" id="marka" value="" />
        <input type="text" name="model" id="model" value="" />

        <select id="s1" onchange="change(this.value);" name='marka_id'><!-- zmieniłem nazwy atrybutów name (uważaj przy odczycie w PHP) -->
        </select>
  
        <select id='s2' name='model_id' onchange='wstawDane(this.form);'><!-- zmieniłem nazwy atrybutów name (uważaj przy odczycie w PHP) -->
        </select>
</form>
cusek
Usunąłem z kodu
Kod
<form action="skrypt.php" method="post" id="form1">
        <input type="text" name="cena" id="cena" value="" />
        <input type="text" name="marka" id="marka" value="" />
        <input type="text" name="model" id="model" value="" />

Wydało mi się zbędne poprawcie jeśli nie, ale jeśli miałem to zostawić to do czego służy skrypt.php? ten JS mam już w jednym form.

Maile przychodzą dobrze ale dalej przy MARKA i MODEL mam 2 1 przykladowo

Jak teraz z tego metodą $_POST[NAME] wyciągnąć dobrą cenę?
Dobrą czyli przypisaną do dobrego samochodu?
EarthCitizen
Te elementy formularza były potrzebne! "skrypt.php" to tylko przykład, wpisz jako wartość atrybutu action nazwę pliku, w którym masz skrypt PHP odbierający dane z formularza. Po prostu musisz połączyć sobie mój formularz ze swoim... cenę odbierasz $_POST['cena'], nazwę modelu $_POST['model'] a markę $_POST['marka'] - czyli pola, które usunąłeś.
cusek
Dzięki połaczyłem te formularze, i dziala
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.