Pretvaranje js varijable u PHP SESSION varjablu

1

Pretvaranje js varijable u PHP SESSION varjablu

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Pozdrav.

Imam više select option boksova u jednoj formi ali kad selektujem npr., treći, on mi poništi selektovanu vrednost drugog . Svaki select je bio onchange="this.form.submit();" pa sam za treči stavio onchange="myFunction()" , za njega dobijem vrednost ali u JS. Treba mi value JS variable u PHP session.

Kada napišem <script> <![CDATA[   var x = '<?php $selected3;  ?>'; ]]> </script> ne dobijem ništa

Evo forme i JS koda, hvala unapred
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">   <select name="vrsta_vozila" onchange="this.form.submit();">   <option value="0">Vrsta vozila</option>   <?php echo get_options($selected); ?>   </select><br/><br/>  <select name="godiste" onchange="this.form.submit();">  <option value="0">Godiste</option>   <?php echo get_options2($selected2); ?>   </select> <br/><br/>  <select name="stepen" id="mySelect" onchange="myFunction()"> >  <option value="0">STEPEN</option>     <?php echo get_stepen($selected3); ?>   </select>  </form>

<script> function myFunction() {     //var x = '<?php //echo $selected3; ?>';     var x = document.getElementById("mySelect").value;     document.getElementById("demo").innerHTML = "You selected: " + x; } </script>

Kako da ovaj var x pretvorim u PHP varijablu?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Ajmo redom - to sto prvo parce koda ne radi nista je sasvim razumljivo, jer mu nisi rekao da uradi bilo sta. Jedan echo ispred $selected3 bi sasvim promenio situaciju.

Dalje - ova "papazjanija" sa izmesanim HTML-om i JS-om radi upravo ono sto si mu "rekao" - svaki put kad se promeni vrednost select box-a - posalji formu na server. Ona polja koja nemaju nista selektovano - ne salju nista.

Sto se tice "pretvaranja" - ne moras da ga "pretvaras", imas ih vec u $_POST superglobal promenljivoj.

Kad submitujes formu, svi elementi gde korisnik moze da unese nesto (input, select, textarea) se salju na server, a u PHP-u se nalaze u $_POST[imePolja] (odnosno ono sto je navedeno u okviru atributa name) - konkretno u tvom slucaju $_POST['vrsta_vozila'], $_POST['godiste'] i $_POST['stepen'].

Deo koji prilicno utice na funkcionalnost svega ovoga - a koji nedostaje - su get_options() metode.



offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Već sam probao sa echo da pozovem, a naravno da neće slati ništa ako nije selektovano. Tu imam sledeći problem, selektujem 2 dropdown-a, dobijem vrednosti, a onda kad selektujem treći, drugi se poništi.

Nije mi jasno gde već imam u superglobalnoj vrednost koju dobijam koroj JS , konkretno var x

Evo koda pa ako može pomoć

$selected = ''; function get_options($select)  {        $vrsta_vozila = array('Putnicko' => '1', 'Motocikli' => '2', 'Teretna' => '3');    $options = '';    while(list($k,$v)=each($vrsta_vozila))  {           if($select==$v)   {    $options.='<option value = "'.$v.'" selected> '.$k.'</option>';          }    else    {       $options.='<option value = "'.$v.'"> '.$k.'</option>';       }    }    return $options; } if(isset($_POST['vrsta_vozila'])) {    $_SESSION['vrsta_vozila'] = $_POST['vrsta_vozila'];  $selected =  $_POST['vrsta_vozila'];  //echo $selected; } $selected2 = ''; function get_options2($select2)  {        $godiste = array('1995' => '1245', '1996' => '1285', '1997' => '1295');    $options2 = '';    while(list($k,$v)=each($godiste))  {           if($select2==$v)   {    $options2.='<option value = "'.$v.'" selected2> '.$k.'</option>';          }    else    {       $options2.='<option value = "'.$v.'"> '.$k.'</option>';       }    }    return $options2; } if(isset($_POST['godiste'])) {    $_SESSION['godiste'] = $_POST['godiste'];  $selected2 =  $_POST['godiste'];  //echo $selected2; } $selected3 = ''; function get_stepen($select3)  {        $stepen = array('1' => '0.85', '2' => '0.85', '3' => '0.9');    $options3 = '';    while(list($k,$v)=each($stepen))  {           if($select3==$v)   {    $options3.='<option value = "'.$v.'" selected2> '.$k.'</option>';          }    else    {       $options3.='<option value = "'.$v.'"> '.$k.'</option>';       }    }    return $options3; } if(isset($_POST['stepen'])) {    $_SESSION['stepen'] = $_POST['stepen'];  $selected3 =  $_SESSION['stepen'];  //echo $selected3; }

offline
  • Pridružio: 15 Jan 2015
  • Poruke: 14

Citat:$options2.='<option value = "'.$v.'" selected2> '.$k.'</option>';
Citat:$options3.='<option value = "'.$v.'" selected2> '.$k.'</option>';
!?

edit:
Pogledaj i ovo:
phpro.org/tutorials/PHP-Security.html#2

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

@ShadowOTN ,

mislio sam da je greška u selected2 , pa sam to već ispravio , nije problem u tome nego negde drugde.

A php self je samo u lokalu , dok pravim formu Smile Hvala.

offline
  • Pridružio: 15 Jan 2015
  • Poruke: 14

Postavi nov, izmenjen kod.

gfactory ::A php self je samo u lokalu , dok pravim formu Smile Hvala.
Tako često završi i na serveru Smile.

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

btw, formu submitujem na drugu stranu tako da nema propusta Smile već sam postavio kod al evo opet.

Znači , ako stavim sva 3 selekta onchange submit, treći deselektuje drugi , a treći je sad onchange myFunction i očitava value kroz JS , samo što ne mogu taj value da očitam kroz PHP varijablu , što se vidi iz priloženog, varijabla je $selected3

$selected = ''; function get_options($select)  {        $vrsta_vozila = array('Putnicko' => '1', 'Motocikli' => '2', 'Teretna' => '3');    $options = '';    while(list($k,$v)=each($vrsta_vozila))  {           if($select==$v)   {    $options.='<option value = "'.$v.'" selected> '.$k.'</option>';          }    else    {       $options.='<option value = "'.$v.'"> '.$k.'</option>';       }    }    return $options; } if(isset($_POST['vrsta_vozila'])) {    $_SESSION['vrsta_vozila'] = $_POST['vrsta_vozila'];  $selected =  $_POST['vrsta_vozila'];  //echo $selected; } $selected2 = ''; function get_options2($select2)  {        $godiste = array('1995' => '1245', '1996' => '1285', '1997' => '1295');    $options2 = '';    while(list($k,$v)=each($godiste))  {           if($select2==$v)   {    $options2.='<option value = "'.$v.'" selected2> '.$k.'</option>';          }    else    {       $options2.='<option value = "'.$v.'"> '.$k.'</option>';       }    }    return $options2; } if(isset($_POST['godiste'])) {    $_SESSION['godiste'] = $_POST['godiste'];  $selected2 =  $_POST['godiste'];  //echo $selected2; } $selected3 = ''; function get_options3($select3)  {        $stepen = array('1' => '0.85', '2' => '0.85', '3' => '0.9');    $options3 = '';    while(list($k,$v)=each($stepen))  {           if($select3==$v)   {    $options3.='<option value = "'.$v.'" selected3> '.$k.'</option>';          }    else    {       $options3.='<option value = "'.$v.'"> '.$k.'</option>';       }    }    return $options3; } if(isset($_POST['stepen'])) {    $_SESSION['stepen'] = $_POST['stepen'];  $selected3 =  $_SESSION['stepen'];  echo $selected3; //echo  $_SESSION['stepen']; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> </head> <body" > <form action="" method="POST">   <select name="vrsta_vozila" onchange="this.form.submit();">   <option value="0">Vrsta vozila</option>   <?php echo get_options($selected); ?>   </select><br/><br/>  <select name="godiste" onchange="this.form.submit();">  <option value="0">Godiste</option>   <?php echo get_options2($selected2); ?>   </select> <br/><br/>  <select name="stepen" id="mySelect" onchange="myFunction();">  <option value="0">STEPEN</option>     <?php echo get_options3($selected3); ?>   </select>  </form>  <br/><br/>   <p id="stepen"></p> <script> function myFunction() {     var x = '<?php echo $selected3; ?>';     var x = document.getElementById("mySelect").value;     document.getElementById("stepen").innerHTML = "You selected: " + x; } </script> <script> <![CDATA[   var x = '<?php  echo $selected3;  ?>'; ]]> </script> <?php if($selected == '3') {        echo 'Nosivost: <input type="text" name="nosivost"/>';     } ?>    <form action="data.php" method="POST"> Vrsta vozila<input type="text" name="vrsta_vozila" value="<?php echo $selected; ?>" /><br/><br/> Godiste CENA<input type="text" name="godiste" value="<?php echo $selected2; ?>" /><br/><br/> STEPEN<input type="text" name="stepen" value="<?php echo $selected3; ?>" /><br/><br/> <input type="submit" name="submit" />  </form>  

offline
  • Pridružio: 15 Jan 2015
  • Poruke: 14

ShadowOTN ::Citat:$options2.='<option value = "'.$v.'" selected2> '.$k.'</option>';
Citat:$options3.='<option value = "'.$v.'" selected2> '.$k.'</option>';
!?

Mislio sam da ćeš razumeti ovo. U ukviru option html elementa ne postoje atributi selected2 i selected3 već samo selected:
developer.mozilla.org/en-US/docs/Web/HTML/Element/option#attr-selected

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Ok, hvala , primio k znanju za select Smile ... rešio sam multiple dropdown na drugi način, ostao je samo jedan problem,

na istoj stranici selektovanjem više dropdown-a dobijem vrednosti koje sabiram, množim kao neki total i to je ok ali ne znam kako taj total poslati kroz sesiju posle submita, jer se sabiranje ne dešava pre submita , primer

$total = $cena_polise * $stepen;    $total2 = $total * $porez; $_SESSION['total3'] = $total + $total2;  echo "Ukupna cena polise: ".$_SESSION['total3'];

Znači , treba mi TOTAL3 da pošaljem kroz submit, ako me razumeš Smile

offline
  • Pridružio: 15 Jan 2015
  • Poruke: 14

Da li si startovao sesiju na početku dokumenta?
php.net/manual/en/function.session-start.php

Za prenos podataka između stranica možeš koristiti i input hidden elemenat.
developer.mozilla.org/en-US/docs/Web/HTML/Element/input
Citat:hidden: A control that is not displayed, but whose value is submitted to the server.

Ko je trenutno na forumu
 

Ukupno su 1111 korisnika na forumu :: 28 registrovanih, 7 sakrivenih i 1076 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: AleksSE, Arahne, babaroga, bozo13, Brana01, cikadeda, djuradj, DPera, draganl, kalens021, krkalon, kunktator, KUZMAR, mercedesamg, Mercury, Metanoja, misa1xx, nenad81, pein, Povratak1912, procesor, raptorsi, ruma, Sirius, theNedjeljko, vathra, vladaa012, Žoržo