Τιμή σε session από onchange

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
argate7
Δημοσιεύσεις: 233
Εγγραφή: 30 Σεπ 2009 02:38

Τιμή σε session από onchange

Δημοσίευση από argate7 » 08 Αύγ 2014 15:47

Θέλω από ένα select να παίρνω τη selected value και να τη δίνω σε ένα session. Το select δεν είναι μέσα σε φόρμα. Είναι ξεκάρφωτο. Μπορεί κανείς να βοηθήσει να βρω λύση?

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Τιμή σε session από onchange

Δημοσίευση από alou » 08 Αύγ 2014 17:53

ajax, αλλιώς κανονικό post

Κώδικας: Επιλογή όλων

<select name="maria">
<opion value="koutsi">koutsi</option>
<option value="pentagiotisa">pentagiotisa</option>
</select>
jquery

Κώδικας: Επιλογή όλων

$&#40;'select&#91;name="maria"&#93;'&#41;.on&#40;'change', function&#40;&#41;&#123;
       var poiamaria = $&#40;this&#41;.find&#40;"&#58;selected"&#41;.text&#40;&#41;; // ή val&#40;&#41; ότι χρειάζεσαι
  	$.ajax&#40;&#123;
        type&#58; "POST",
        url&#58; "some/path",
        data&#58; &#123;'maria'&#58; poiamaria&#125; ,//kai an 8es kapoia alla values, px token
        dataType&#58; "json",
        success&#58; function&#40;data&#41;&#123;
            //whatever
        &#125;, error&#58; function&#40;data&#41;&#123;
        //an xreiazetai kaneis kati sto error
        &#125;
    &#125;&#41;;
&#125;&#41;;
και στην php κάνεις κάτι του στυλ setSession('poiamaria', $_POST['maria'])

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Τιμή σε session από onchange

Δημοσίευση από korgr » 08 Αύγ 2014 18:25

var poiamaria
:lol: :lol: :lol: :lol: :lol: :lol: :lol:

argate7
Δημοσιεύσεις: 233
Εγγραφή: 30 Σεπ 2009 02:38

Τιμή σε session από onchange

Δημοσίευση από argate7 » 11 Αύγ 2014 15:15

Τελικά το έκανα με ajax..

Παρακάτω ο κώδικας του ajax μέσα στο βασικό php αρχείο.

Κώδικας: Επιλογή όλων

function changeProject&#40;newProject&#41;
    &#123;
    document.getElementById&#40;'project'&#41;.value = newProject;
    &#125;
	
	
	function getProject&#40;str&#41; &#123;
  if &#40;window.XMLHttpRequest&#41; &#123;
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest&#40;&#41;;
  &#125; else &#123; // code for IE6, IE5
    xmlhttp=new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
  &#125;
  xmlhttp.onreadystatechange=function&#40;&#41; &#123;
    if &#40;xmlhttp.readyState==4 && xmlhttp.status==200&#41; &#123;
      //document.getElementById&#40;"txtHint"&#41;.innerHTML=xmlhttp.responseText;
    &#125;
  &#125;
  xmlhttp.open&#40;"GET","pass_project.php?project="+str,true&#41;;
  xmlhttp.send&#40;&#41;;
&#125;
και από εκεί καλώ το pass_project.php για να μου setάρει το session που θέλω.

Ο Κώδικας του pass_project.php

Κώδικας: Επιλογή όλων

<?php session_start&#40;&#41;;

$_SESSION&#91;'description'&#93; = $_GET&#91;'project'&#93;;
?>
Βασικά φίλε alou, έχω ένα άλλο θεματάκι τώρα.

Θέλω να έχω 2 comboboxes και το δεύτερο να κάνει populate βάσει της επιλογής του πρώτου.

Ως τώρα ο κώδικας μου είναι ο εξής:

Κώδικας: Επιλογή όλων

<?php
session_start&#40;&#41;;
include&#40;'connectDB.php'&#41;;
$sql="select a.user_code as user_code, a.username as username, c.description as description, e.description as language
from users a
inner join app_lang d on
d.user_code = a.user_code
inner join applications c on
c.code = d.app_code
inner join language e on
e.code = d.lang_code
where a.user_code = ".$_GET&#91;'user_code'&#93;."";
$result=mysql_query&#40;$sql&#41; or die&#40;$sql."<br/><br/>".mysql_error&#40;&#41;&#41;;
$sqluser = "select * from users where user_code = ".$_GET&#91;'user_code'&#93;."";
$resultuser=mysql_query&#40;$sqluser&#41; or die&#40;$sqluser."<br/><br/>".mysql_error&#40;&#41;&#41;;
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="css/bootstrap.css" rel="stylesheet">
<style type="text/css">
      /* Override some defaults */
      html, body &#123;
        background-color&#58; #eee;
		font-family&#58;"Times New Roman",Georgia,Serif;
      &#125;
      body &#123;
        padding-top&#58; 40px; 
      &#125;
      .container &#123;
        width&#58; 600px;
      &#125;

      /* The white background content wrapper */
      .container > .content &#123;
        background-color&#58; #fff;
        padding&#58; 20px;
        margin&#58; 0 -20px; 
        -webkit-border-radius&#58; 10px 10px 10px 10px;
           -moz-border-radius&#58; 10px 10px 10px 10px;
                border-radius&#58; 10px 10px 10px 10px;
        -webkit-box-shadow&#58; 0 1px 2px rgba&#40;0,0,0,.15&#41;;
           -moz-box-shadow&#58; 0 1px 2px rgba&#40;0,0,0,.15&#41;;
                box-shadow&#58; 0 1px 2px rgba&#40;0,0,0,.15&#41;;
      &#125;

      .login-form &#123;
        margin-left&#58; 25px;
      &#125;

      legend &#123;
        margin-right&#58; -50px;
        font-weight&#58; bold;
          color&#58; #404040;
      &#125;
	  
	  td, th&#123;
	  padding-right&#58;10px;
	  &#125;

</style>
<script type="text/javascript">

    function changeProject&#40;newProject&#41;
    &#123;
    document.getElementById&#40;'project'&#41;.value = newProject;
    &#125;
	
	
	function getProject&#40;str&#41; &#123;
  if &#40;window.XMLHttpRequest&#41; &#123;
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest&#40;&#41;;
  &#125; else &#123; // code for IE6, IE5
    xmlhttp=new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
  &#125;
  xmlhttp.onreadystatechange=function&#40;&#41; &#123;
    if &#40;xmlhttp.readyState==4 && xmlhttp.status==200&#41; &#123;
      //document.getElementById&#40;"txtHint"&#41;.innerHTML=xmlhttp.responseText;
    &#125;
  &#125;
  xmlhttp.open&#40;"GET","pass_project.php?project="+str,true&#41;;
  xmlhttp.send&#40;&#41;;
&#125;
function getLanguage&#40;str&#41; &#123;
  if &#40;window.XMLHttpRequest&#41; &#123;
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest&#40;&#41;;
  &#125; else &#123; // code for IE6, IE5
    xmlhttp=new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
  &#125;
  xmlhttp.onreadystatechange=function&#40;&#41; &#123;
    if &#40;xmlhttp.readyState==4 && xmlhttp.status==200&#41; &#123;
      //document.getElementById&#40;"txtHint"&#41;.innerHTML=xmlhttp.responseText;
    &#125;
  &#125;
  xmlhttp.open&#40;"GET","pass_language.php?language="+str,true&#41;;
  xmlhttp.send&#40;&#41;;
&#125;
</script>
</head>
<body>
<div class="container">
    <div class="content">
      <div class="row">
        <div class="login-form">
<?php
$rowuser = mysql_fetch_array&#40;$resultuser&#41;;
echo "Χρήστης &#58; ".$rowuser&#91;'username'&#93;;
echo "<table>";
		echo "<tr>";
			echo "<th>"."Εφαρμογές"."</th>";
			echo "<th>"."Γλώσσα"."</th>";
		echo "</tr>";
while&#40;$row = mysql_fetch_array&#40;$result&#41;&#41; &#123;
	
		echo "<tr style='line-height&#58;50px;'>";
			//echo "<td>".$row&#91;'description'&#93;."</td>";
			//
			echo "<td>";?>
			<select name='project' id='project' onChange='getProject&#40;this.value&#41;;'>
			<?php
			//echo "<select name='proj' id='proj' onChange=''>";
			echo "<option value=".$row&#91;'description'&#93;.">".$row&#91;'description'&#93;."</option>";
			$sql1="select * from applications";
			$result1=mysql_query&#40;$sql1&#41;;
			while&#40;$row1=mysql_fetch_assoc&#40;$result1&#41;&#41;
			  &#123;
			   echo "<option value=".$row1&#91;'code'&#93;.">".$row1&#91;'description'&#93;."</option>";
			&#125;
			echo "</td>";
			//
			//echo "<td>".$row&#91;'language'&#93;."</td>";
			//
			echo "<td>";?>
			<select name='language' id='language' onChange="getLanguage&#40;this.value&#41;;">
			<?php
			//echo "<select name='lang' id='lang' onChange=''>";
			echo "<option value=".$row&#91;'language'&#93;.">".$row&#91;'language'&#93;."</option>";
			$sql2="select * from language";
			$result2=mysql_query&#40;$sql2&#41;;
			while&#40;$row2=mysql_fetch_assoc&#40;$result2&#41;&#41;
			  &#123;
			   echo "<option value=".$row2&#91;'code'&#93;.">".$row2&#91;'description'&#93;."</option>";
			&#125;
			echo "</td>";
			//
			
			echo "<td><input type='hidden' name='user_code' value='".$row&#91;'user_code'&#93;."'/></td>";
			echo "<td style = 'padding-left&#58;10px;'><input type=submit class='btn btn-danger' onclick=window.location='updateUserProject.php?user_code=".$row&#91;'user_code'&#93;."&previous_app=".$row&#91;'description'&#93;."&previous_lang=".$row&#91;'language'&#93;."' value=Αλλαγή></td>";
			echo "<td style = 'padding-left&#58;10px;'><input type=submit class='btn btn-danger' onclick=window.location='deleteUserProject.php?user_code=".$row&#91;'user_code'&#93;."&app=".$row&#91;'description'&#93;."&lang=".$row&#91;'language'&#93;."' value=Διαγραφή></td>";
		echo "</tr>";
	
  echo "<br>";
&#125;
echo "</table>";
?>
<input type="submit" name="submit" class="btn btn-primary" value="Προσθήκη Νέας Εφαρμογής" onclick="window.location='newUser.php'"></input>
</br></br>
<input type='submit' class='btn btn-primary' onclick="window.location='controlpanel.php'" value='Αρχική'>
</div>
      </div>
    </div>
  </div> <!-- /container -->
</body>
Και σε αυτό το σημείο περνιούνται κομπλέ οι παράμετροι για να γίνουν κάποια updates που θέλω και κάποια deletes. Το θέμα είναι ότι θέλω να παίζει αυτό που είπα και νωρίτερα χωρίς όμως να χάσω το κομμάτι που δουλεύει τώρα.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Τιμή σε session από onchange

Δημοσίευση από alou » 12 Αύγ 2014 00:11

sorry den katalaba akrivos ti 8es... kai i ali8eia einai oti ginetai ligo xamos ekei panw gia na katalabw. An 8es 2 select pou na pairnei to deutero times analoga me tin epilogi tou prwtou, 8a ftiakseis ena javascript array pou 8a exei osa items einai oi epiloges tou prwtou kai values tis epiloges tou deuterou, wste na kaneis meta tin epilogi apo ekei.


Px, estw exeis markes kai montela autokinitwn

Κώδικας: Επιλογή όλων

var myvalues = &#91;&#93;;
myvalues&#91;'bmw'&#93; = &#91;'a','b',...&#93;;
myvalues&#91;'zastava'&#93; = &#91;'a', 'b...&#93;;
Vasika xrisimopoiise jQuery, min kaneis ti zoi sou diskoli... sti sigkekrimeni periptosi to xreiazesai.
Pairnes to selected value otan allaksei to prwto select

Κώδικας: Επιλογή όλων

$&#40;'select&#91;name="whatever"&#93;'&#41;.change&#40;function&#40;&#41;&#123;
  var currentsel = $&#40;'option&#58;selected', this&#41;.val&#40;&#41;;//edw pires tin timi tou selected option
  $&#40;'select&#91;name="deuteroselectr"&#93; option'&#41;.remove&#40;&#41;;//afaireis oti palio option iparxei sto deutero select
  $.each&#40;myvalues&#91;currentsel&#93;, function&#40;index, value&#41;&#123; //edw pairneis apo to array tis times pou 8es kai kaneis iterate sto array gia na gemiseis me ta option 
    $&#40;'select&#91;name="deuteroselectr"&#93;'&#41;.append&#40;'<option value="' + value + '">' + value + '</option'&#41;;
  &#125;&#41;
eimai se fasi ksanastisimatos ipologisti opote den mporw na tsekarw auta pou sou grafw kai den eimai kai ka8olou sigouros oti 8es auto pou lew :/

argate7
Δημοσιεύσεις: 233
Εγγραφή: 30 Σεπ 2009 02:38

Τιμή σε session από onchange

Δημοσίευση από argate7 » 12 Αύγ 2014 10:09

Αυτό που θέλω είναι να εμφανίζω 2 dropdown lists που το δεύτερο θα εξαρτάται από την επιλογή του πρώτου και μετά θα αποθηκεύω στη βάση τις τιμές και των 2 ανάλογα τα selected values.

Θα δοκιμάσω αυτό που λες με το jquery και αν είναι ενημερώνω. Αν βρω τη λύση, θα την postάρω για να υπάρχει σαν "αρχείο" και βοήθημα για τους υπόλοιπους.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες