Javascript变量值\ textarea内容为PHP变量

时间:2015-12-14 12:47:03

标签: javascript php html mysql

所以,我正在使用一个掩码,在单击<input type="button" />时过滤数据。

我有:

  • 学校班级(1,2,3,4,5)
  • 部分(A,B,C ...... Z)
  • 和性别复选框(男性,女性)。

这个掩码与mysql数据库交互,因此如果选中的唯一一个复选框是&#34; male&#34;,它应该让我回到我数据库中的所有男性。问题是我使用javascript过滤性别并制作我的性别串,我不知道如何将它传递给php变量以在我的查询中使用它。

我已经在网上看了3-4天,所有人都建议使用$ _POST。如果我使用$ _POST,它表示该变量未定义。我在互联网上搜索了这个错误,并说它用isset添加一个控件。我已经做到了这一点,但似乎没有任何效果,因为它给了我一个新的错误&#34;未定义的索引&#34;。

所以我需要帮助将javascript变量的值传递给php变量(我知道它很难,因为javascript是客户端而php是服务器端)或直接传递我的textarea文本(我可以显示我的javascript导致textarea)到php变量。

是的,有人能帮帮我吗?

这是我的index.php:

<?php
require 'connection.php'
?>

<html>
<script src="scripts.js"></script>

<form name="code" method="post" action="query.php; <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
   <table border="0">
<!-- ROW1 -->
 <tr>


  Da codice 
  <input type="text" name="dacode">

   a codice 
  <input type="text" name="acode">


        </tr>

        </form>     

<!-- ROW2 -->   
        <form id="sexform" name="sexform">  
        <tr>
          <td></td>
          <td>

Sesso
<input type="checkbox" name="sex" value="Maschio"> M
<input type="checkbox" name="sex" value="Femmina"> F
<input type="checkbox" name="sex" value="Azienda"> G
<input type="hidden"  id="xxx">
        </form>
<!-- ROW3 -->
<br>
  Da data nascita
  <input type="date" name="dadata" min="1980-01-01">


  a data nascita
  <input type="date" name="adata" min="1980-01-01">

<!-- ROW4 -->
<form id="sezform" name="sezform">
<br>
Sezioni
<input type="checkbox" name="sez" value="A"> A
<input type="checkbox" name="sez" value="B"> B
<input type="checkbox" name="sez" value="C"> C
<input type="checkbox" name="sez" value="D"> D
<input type="checkbox" name="sez" value="E"> E
<input type="checkbox" name="sez" value="F"> F
<input type="checkbox" name="sez" value="G"> G
<input type="checkbox" name="sez" value="H"> H
<input type="checkbox" name="sez" value="I"> I
<input type="checkbox" name="sez" value="J"> J
<input type="checkbox" name="sez" value="K"> K
<input type="checkbox" name="sez" value="L"> L
<input type="checkbox" name="sez" value="M"> M
<input type="checkbox" name="sez" value="N"> N
<input type="checkbox" name="sez" value="O"> O
<input type="checkbox" name="sez" value="P"> P
<input type="checkbox" name="sez" value="Q"> Q
<input type="checkbox" name="sez" value="R"> R
<input type="checkbox" name="sez" value="S"> S
<input type="checkbox" name="sez" value="T"> T
<input type="checkbox" name="sez" value="U"> U
<input type="checkbox" name="sez" value="V"> V
<input type="checkbox" name="sez" value="W"> W
<input type="checkbox" name="sez" value="X"> X
<input type="checkbox" name="sez" value="Y"> Y
<input type="checkbox" name="sez" value="Z"> Z
<br>
<input type="checkbox" name="sez" value="Ai"> Ai
<input type="checkbox" name="sez" value="Am"> Am
<input type="checkbox" name="sez" value="Ae"> Ae
<input type="checkbox" name="sez" value="Bi"> Bi
<input type="checkbox" name="sez" value="Be"> Be
<input type="checkbox" name="sez" value="Bm"> Bm

        </form>
<!-- ROW5 -->
<form id="claform" name="claform">
<br>
Sezioni
<input type="checkbox" name="cla" value="1"> 1
<input type="checkbox" name="cla" value="2"> 2
<input type="checkbox" name="cla" value="3"> 3
<input type="checkbox" name="cla" value="4"> 4
<input type="checkbox" name="cla" value="5"> 5

 <br>
 <br>
 RESULT STRING

  <textarea type="text"  name="outputfield" id="outputfield"> </textarea>
 <input type="button" onclick="myFunction(); selectValues(); query();" value="Invia">
          </td>
        </tr>
        </form>

<br>
<br>

</html>

这是我的query.php文件:

<?php
require 'connection.php';
// Inizio selezione

$usedatabase = "use " . $dbname;
if (isset($_POST['xxx'])) {
   $queryfinale = "select * from sergiodellera.mskselez where sesso='" . $_POST['xxx'] . "'" ;

}

//$final1 = mysql_query($usedatabase) or die(mysql_error());
//$final2 = mysql_query($queryfinale) or die(mysql_error());


//$query = mysql_query($queryfinale);
//$row = mysql_fetch_row($query);
//$final2 = $row[5];

echo $queryfinale;


?>

这是我的js文件:

function myFunction() {
    var sex = document.forms["sexform"];
    var sez = document.forms["sezform"];
    var cla = document.forms["claform"];
    var txt = "";
    var txtsex = "";
    var txtsez = "";
    var txtcla = "";
    var isex;
    var isez;
    var icla;
    //FOR SEX
    for (isex = 0; isex < sex.length; isex++) {
        if (sex[isex].checked) {
            txtsex = txtsex + sex[isex].value;
        }
    }

    //FOR SEZ
     for (isez = 0; isez < sez.length; isez++) {
        if (sez[isez].checked) {
            txtsez = txtsez + sez[isez].value;
        }
    }
    //FOR CLA
     for (icla = 0; icla < cla.length; icla++) {
        if (cla[icla].checked) {
            txtcla = txtcla + cla[icla].value;
        }
    }
    txtsex = txtsex;
    txtsez = txtsez + ";";
    txtcla = txtcla + ";";
    txt = txtsex + txtsez + txtcla;
    for (sexfor = 0; sexfor < txtsex.length; sexfor++) {
        if (txtsex.length = 22){
            var asex = txtsex;
            var bsex = asex.substring(0, 1);
            var csex = asex.substring(7, 8);
            var dsex = asex.substring(14, 15);

        }
        if (txtsex.length = 15){
            var asex = txtsex;
            var bsex = asex.substring(0, 1);
            var csex = asex.substring(7, 8);

        }
        if (txtsex.length = 8){
            var asex = txtsex;
            var bsex = asex.substring(0, 1);
        }
break;
    }
    sexcontainer = bsex + csex + dsex;
    document.getElementById("outputfield").value = sexcontainer;
 //myFunction()   
}

function selectValues(){
    document.getElementById('xxx').value = sexcontainer;

    return true;
}

function query() { window.open("query.php");
}

我期待如果我检查例如男性和女性复选框,我会有一个类似&#34; MF&#34;的字符串。所以,通过一个php变量,我将select * from tablename where sex=$varsex其中varsex是MF

1 个答案:

答案 0 :(得分:1)

(这是一项正在进行的基本工作,只有有限的功能,如果我有时间,我会尝试改进它 - 它可能仍有技术故障 - 它只是为了表明我的想法需要 - 你需要对结果进行排序。)

隐藏的输入将由您的php选取$_POST['all_sexes'],您可以为其他项目执行类似的操作。困难的一点可能是在“unlick”或改变主意时编辑结果。

您可以以类似的方式为文本框使用onKeyPress事件。我建议将它们全部放在一起,因为它们都是一起提交的。

这是JavaScript:

 <script language="javascript">
 var all_sexes;
 var sex;

 function make_sex(sex){
 var sexes = document.getElementById('all_sexes').value
 if(sex == "Maschio"){sex = 'M';}
 if(sex == "Femmina"){sex = 'F';}
 if(sex == "Azienda"){sex = 'G';}
 if( sexes.indexOf(sex) >-1){ sex = '';} // working on what to do if unchecked and checked here
 all_sexes = document.getElementById('all_sexes').value + sex;

 document.getElementById('all_sexes').value = all_sexes;
 document.getElementById('outputfield').value = all_sexes;
 }
 </script>

使用onClick事件调用复选框中的函数,并将复选框的值传递给它。

     Sesso
     <input type="checkbox" name="sex" value="Maschio" onclick="make_sex(this.value)"> M
     <input type="checkbox" name="sex" value="Femmina" onclick="make_sex(this.value)"> F
     <input type="checkbox" name="sex" value="Azienda" onclick="make_sex(this.value)"> G
     <input type="hidden" name="all_sexes" id="all_sexes" value="">

html调试器对跨度之外的某些文本不满意,但我现在不在此处查看。

而且,无论您做什么都不将任何POST变量内容放在数据库附近而不进行清理 - 请参阅本页底部的评论php registration form complication

不确定您是否确实需要在页面上显示点击结果 - 如果您不想,只是想要提交的值,这将是一个更好的方法 - 借鉴PHP how to loop through a post array接受的答案

 foreach( $_POST as $stuff ) {
    if( is_array( $stuff ) ) {
        foreach( $stuff as $thing ) {
           echo $thing . "<br />"; 
        } 
    } else { 
     echo $stuff ."<br />"; 
    }
  }

这是你的html,它可以让你快速演示它的作用 - 你底部显示的php脚本将在你的query.php上

有许多html错误,其中text不在调试器抱怨的表元素之外 - 这里有太多实例要修复,也许你应该看一个不同的结构,而不是使用表格作为你的框架反对div。

    <!DOCTYPE html>
    <html>
    <form name="code" method="post" action="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]);?>">
    <table border="0">
    <!-- ROW1 -->
    <tr>
    Da codice 
    <input type="text" name="dacode">
      a codice 
    <input type="text" name="acode">
    </tr>
    <!-- ROW2 -->   
    <br />          
    Sesso
    </tr>
    <tr>
    <input type="checkbox" name="Maschio" id="Maschio" value="Maschio" > M
    <input type="checkbox" name="Femmina" id="Femmina" value="Femmina" > F
    <input type="checkbox" name="Azienda" id="Azienda" value="Azienda" > G
    <!-- ROW3 -->
    <br>
    Da data nascita
    <input type="date" name="dadata" min="1980-01-01">
    a data nascita
    <input type="date" name="adata" min="1980-01-01">
    <!-- ROW4 -->
    <br>
    Sezioni
    <input type="checkbox" name="A" value="A"> A
    <input type="checkbox" name="B" value="B"> B
    <input type="checkbox" name="C" value="C"> C
    <input type="checkbox" name="D" value="D"> D
    <input type="checkbox" name="E" value="E"> E
    <input type="checkbox" name="F" value="F"> F
    <input type="checkbox" name="G" value="G"> G
    <input type="checkbox" name="H" value="H"> H
    <input type="checkbox" name="I" value="I"> I
    <input type="checkbox" name="J" value="J"> J
    <input type="checkbox" name="K" value="K"> K
    <input type="checkbox" name="L" value="L"> L
    <input type="checkbox" name="M" value="M"> M
    <input type="checkbox" name="N" value="N"> N
    <input type="checkbox" name="O" value="O"> O
    <input type="checkbox" name="P" value="P"> P
    <input type="checkbox" name="Q" value="Q"> Q
    <input type="checkbox" name="R" value="R"> R
    <input type="checkbox" name="S" value="S"> S
    <input type="checkbox" name="T" value="T"> T
    <input type="checkbox" name="U" value="U"> U
    <input type="checkbox" name="V" value="V"> V
    <input type="checkbox" name="W" value="W"> W
    <input type="checkbox" name="X" value="X"> X
    <input type="checkbox" name="Y" value="Y"> Y
    <input type="checkbox" name="Z" value="Z"> Z
    <br>
    <input type="checkbox" name="Ai" value="Ai"> Ai
    <input type="checkbox" name="Am" value="Am"> Am
    <input type="checkbox" name="Ae" value="Ae"> Ae
    <input type="checkbox" name="Bi" value="Bi"> Bi
    <input type="checkbox" name="Be" value="Be"> Be
    <input type="checkbox" name="sez" value="Bm"> Bm
    <input type="hidden" id="all_Bn" value="">
    <!-- ROW5 -->
    <br>
    Sezioni
    <input type="checkbox" name="Chk1" value="1"> 1
    <input type="checkbox" name="Chk2" value="2"> 2
    <input type="checkbox" name="Chk3" value="3"> 3
    <input type="checkbox" name="Chk4" value="4"> 4
    <input type="checkbox" name="Chk5" value="5"> 5
    </form>
    <br>
    <br>
     RESULT STRING
     <textarea type="text"  name="outputfield" id="outputfield"> </textarea>
     <input type="submit" name="submit" value="Invia">
                </td>
      </tr>
      </form>
      <br>
      <br>
      <?php
     foreach( $_POST as $stuff ) {
          if( is_array( $stuff ) ) {
              foreach( $stuff as $thing ) {
                echo $thing . "<br />"; 
             } 
          } else { 
            echo $stuff ."<br />"; 
          }
     }
     ?>
     </html>

其他一些借用且略有修改的想法可能有助于处理表单发送的数据:mysql_escape_string whole post array?

这个只显示您设置的内容及其名称和值:

    foreach(array_keys($_POST) as $key){ echo htmlspecialchars($key) . " " . htmlspecialchars($_POST[$key]) . "<br />";}

这个应该逃脱它(你需要登录你的sql会话):

    foreach(array_keys($_POST) as $key){ $_POST[$key] = mysqli_real_escape_string($_POST[$key]); echo htmlspecialchars($key) . " " . htmlspecialchars($_POST[$key]);}

要将结果从A到Z复选框收集到一个字符串中,它们已被检查,这可能会起作用,并且具有以下优点:您不会将提交的值中的任何内容放入字符串中。

     $abc = '';
     $abc_cnt = 'A';
     while( $abc_cnt1 < 26 ){
          if(isset($_POST[$abc_cnt])){
          $abc = $abc . $abc_cnt;
          }
     $abc_cnt++;
     $abc_cnt1++;
     }
     echo $abc;  // your result string for Sezzioni

这同样适用于您想要放入字符串的其他变量 - 例如,如果所有“Sesso”复选框都被点击,您将获得“MFG”,或者您可能拥有M和G或F和G. / p>

     if (isset($_POST['Maschio'])) $sesso = $sesso . 'M';
     if (isset($_POST['Femmina'])) $sesso = $sesso . 'F';
     if (isset($_POST['Azienda'])) $sesso = $sesso . 'G';