所以,我正在使用一个掩码,在单击<input type="button" />
时过滤数据。
我有:
这个掩码与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
答案 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';