将变量从 Jquery 传递给 PHP(_POST美元)
Passing a variable from Jquery to PHP ($_POST)
我正在做一个管理学校中心的网站,我有一个疑问,我希望你能解决它。
我有这个代码:
登录.php
<!doctype html>
<html lang="es">
<head>
<meta charset="iso-8859-1" />
</head>
<body>
<form action="comprobacionlogin_usuario.php" method="POST">
<table border="1">
<tr>
<th>Nombre de usuario</th>
<td><input type="text" name="usuario" autocomplete="off" required></td>
</tr>
<tr>
<th>Contraseña</th>
<td><input type="password" name="contrasena" autocomplete="off" required></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Enviar"></td>
</tr>
</table>
</form>
¿No eres usuario? Pulsa <a href="altanuevoprofesor.php">aquí</a>
</body>
</html>
nuevo_horario.php
<?php
session_start();
$curso=$_POST['curso'];
$clase=$_POST['clase'];
?>
<html lang="es">
<head>
<meta charset="iso-8859-1">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="administrar_filas.js"></script>
<link rel="stylesheet" type="text/css" href="estilo_botones_tabla.css">
Horario
</head>
<body>
<div id="elementos">
<form id="datos" action="procesar_horario.php" method="post">
<table border="1" id="tabla">
<thead>
<tr>
<td>Hora</td>
<td>Lunes</td>
<td>Martes</td>
<td>Miércoles</td>
<td>Jueves</td>
<td>Viernes</td>
</tr>
</thead>
<tbody>
<tr class="fila-base">
<td><input type="text" name="hora_0" placeholder="Hora_0"></td>
<td><input type="text" name="asignatura_lun_0" placeholder="Asignatura"><br><input type="text" name="id_usuario_lun_0"placeholder="Id_profesor"></td>
<td><input type="text" name="asignatura_mar_0" placeholder="Asignatura"><br><input type="text" name="id_usuario_mar_0"placeholder="Id_profesor"></td>
<td><input type="text" name="asignatura_mie_0" placeholder="Asignatura"><br><input type="text" name="id_usuario_mie_0"placeholder="Id_profesor"></td>
<td><input type="text" name="asignatura_jue_0" placeholder="Asignatura"><br><input type="text" name="id_usuario_jue_0"placeholder="Id_profesor"></td>
<td><input type="text" name="asignatura_vie_0" placeholder="Asignatura"><br><input type="text" name="id_usuario_vie_0"placeholder="Id_profesor"></td>
<td class="eliminar">Eliminar</td>
</tr>
<input type="hidden" name="curso" id="curso" value="<?php echo $curso ?>">
<input type="hidden" name="clase" id="clase" value="<?php echo $clase ?>">
</tbody>
</table>
<input type="button" id="agregar" value="Agregar fila" />
<input type="submit" id="enviar" value="Enviar">
</form>
</div>
<?php
$conexion = mysql_connect("localhost", "alonsosjumper", "alonsosjumper") or die('No se pudo conectar: ' . mysql_error());
echo '<br>Conexión satisfactoria<br>';
mysql_select_db("proyecto", $conexion) or die('No se pudo seleccionar la base de datos');
$consulta= "select id_usuario, nombre, apellidos from usuarios where tipo_usuario='profesor' order by id_usuario";
$resultado= mysql_query($consulta);
echo ' <p>Lista de profesores</p>
<table border="1" width="auto">
<tr><td>Id_usuario</td><td>Nombre</td><td>Apellidos</td></tr>';
while($fila = mysql_fetch_array($resultado))
{
echo "<tr><td>".$fila['id_usuario']."</td><td>".$fila['nombre']."</td><td>".$fila['apellidos']."</td></tr>";
}
?>
</body>
</html>
procesar_horario.php
<?php
session_start();
//I wanna have here the variable "cuentaInputs" to use it in the for.
$conexion = mysql_connect("localhost", "alonsosjumper", "alonsosjumper") or die('No se pudo conectar: ' . mysql_error());
echo '<br>Conexión satisfactoria<br>';
mysql_select_db("proyecto", $conexion) or die('No se pudo seleccionar la base de datos');
for($i=0; $i<$cuentaInputs; $i++) {
for($j=1; $j<6; $j++)
{
if($j==1)
{
$asignatura=$_POST["asignatura_lun_".$i];
$id_usuario=$_POST["id_usuario_lun_".$i];
$hora=$_POST["hora_".$i];
$consulta = "INSERT INTO horarios (asignatura, curso, clase, fecha, hora, id_usuario) VALUES ('$asignatura', '$curso','$clase','lunes','$hora','$id_usuario')";
echo $consulta;
}
if($j==2)
{
$asignatura=$_POST["asignatura_mar_".$i];
$id_usuario=$_POST["id_usuario_mar_".$i];
$hora=$_POST["hora_".$i];
$consulta = "INSERT INTO horarios (asignatura, curso, clase, fecha, hora, id_usuario) VALUES ('$asignatura', '$curso','$clase','lunes','$hora','$id_usuario')";
echo $consulta;
}
if($j==3)
{
$asignatura=$_POST["asignatura_mie_".$i];
$id_usuario=$_POST["id_usuario_mie_".$i];
$hora=$_POST["hora_".$i];
$consulta = "INSERT INTO horarios (asignatura, curso, clase, fecha, hora, id_usuario) VALUES ('$asignatura', '$curso','$clase','lunes','$hora','$id_usuario')";
echo $consulta;
}
if($j==4)
{
$asignatura=$_POST["asignatura_jue_".$i];
$id_usuario=$_POST["id_usuario_jue_".$i];
$hora=$_POST["hora_".$i];
$consulta = "INSERT INTO horarios (asignatura, curso, clase, fecha, hora, id_usuario) VALUES ('$asignatura', '$curso','$clase','lunes','$hora','$id_usuario')";
echo $consulta;
}
if($j==5)
{
$asignatura=$_POST["asignatura_vie_".$i];
$id_usuario=$_POST["id_usuario_vie_".$i];
$hora=$_POST["hora_".$i];
$consulta = "INSERT INTO horarios (asignatura, curso, clase, fecha, hora, id_usuario) VALUES ('$asignatura', '$curso','$clase','lunes','$hora','$id_usuario')";
echo $consulta;
}
}
}
$resultado = mysql_query($consulta);
mysql_close($conexion);
?>
administrar_filas.js
$(function(){
var cuentaInputs = ($(".fila-base").length);
$("#agregar").on('click', function(){
$('#tabla > tbody:last').after('<tr><td><input type="text" name="hora'+cuentaInputs+'" placeholder="Hora"></td><td><input type="text" name="asignatura_lun_'+cuentaInputs+'" placeholder="Asignatura"><br><input type="text" name="id_usuario_lun_'+cuentaInputs+'"placeholder="Profesor"></td><td><input type="text" name="asignatura_mar_'+cuentaInputs+'" placeholder="Asignatura"><br><input type="text" name="id_usuario_mar_'+cuentaInputs+'"placeholder="Profesor"></td><td><input type="text" name="asignatura_mie_'+cuentaInputs+'" placeholder="Asignatura"><br><input type="text" name="id_usuario_mie_'+cuentaInputs+'"placeholder="Profesor"></td><td><input type="text" name="asignatura_jue_'+cuentaInputs+'" placeholder="Asignatura"><br><input type="text" name="id_usuario_jue_'+cuentaInputs+'"placeholder="Profesor"></td><td><input type="text" name="asignatura_vie_'+cuentaInputs+'" placeholder="Asignatura"><br><input type="text" name="id_usuario_vie_'+cuentaInputs+'"placeholder="Profesor"></td><td class="eliminar">Eliminar</td></tr>');
cuentaInputs++;
});
// Evento que selecciona la fila y la elimina
$(document).on("click",".eliminar",function(){
if (cuentaInputs>1)
{
var parent = $(this).parents().get(0);
$(parent).remove();
cuentaInputs--;
}
else
alert("No se puede eliminar la ultima fila");
});
});
我想在"procesar_horario.php"中使用变量"cuentaInputs"来使用它。我需要它来制定动态时间表,可以添加或删除行。
如何将变量cuentaInputs从Jquery传递给PHP?
多谢!
阅读您的评论后。 您似乎正在尝试发送一行数据。 而不是像下面这样输入元素名称和 ID
name="asignatura_lun_'+cuentaInputs+'"
使用数组索引
name="asignatura_lun['+cuentaInputs+']"
这样,您将获得PHP中的以下数组
$_POST['hora']
$_POST['asignatura_lun']
$_POST['id_usuario_lun']
//likewise for mar, mie, jue and vie
在 PHP 侧循环中为 Hora 数组使用 foreach
foreach($_POST['hora'] as $key => $value) //use $key for referencing other arrays.
{
for($j=1; $j<6; $j++)
{
if($j==1)
{
//use $key for referencing other arrays.
$asignatura=$_POST["asignatura_lun"][$key];
$id_usuario=$_POST["id_usuario_lun"][$key];
$hora=$value; //$value is current horra
$consulta = "INSERT INTO horarios (asignatura, curso, clase, fecha, hora, id_usuario) VALUES ('$asignatura', '$curso','$clase','lunes','$hora','$id_usuario')";
echo $consulta;
}
//same for other weekdays
}
}
参考资料:阅读此问题和答案。
编辑前 :
我真的无法理解你的大部分代码。请尝试使用英文标识符。但简单看一下,使用隐藏的输入元素应该可以解决您的问题。将其添加到提交给procesar_horario.php的表单中
<input type='hidden' name='cuentaInputs' id='cuentaInputs'/>
您可以在更新 cuentaInputs 时更新其值。
$('#cuentaInputs').val(cuentaInputs);
Jquery的ajax方法会像这样向PHP发送一些值。
$.ajax({
type:'POST',
url:'procesar_horario.php',
data: {q: putVariableHere}, //put a variable you want to pass here
success: function (response) {
console.log('yey, we passed the variable');
}
});
.PHP:
<?php
session_start();
//I wanna have here the variable "cuentaInputs" to use it in the for.
$cuentaInputs = $_POST['q'];
你的问题中没有jQuery的迹象。
如果您正在开发应用程序,请确保了解它的工作原理,否则您的项目注定要失败。
jQuery是Javascript的库,Javascript是一种客户端编程语言,这意味着这是用户使用的运行代码(作为HTML和CSS)的浏览器。
PHP是一种在服务器端运行的编程语言,这意味着很明显它是在服务器上运行的。
所以你不能轻易地用你自己的头脑在他们之间互动,它没有魔力。
浏览器可以在本机提交带有提交按钮的表单。
如果你想用jQuery(或纯Javascript)来做,你可以手动触发提交(例如用jQuery $("form").submit()
)。
你也可以使用它向具有AJAX功能的服务器发送数据(例如jQuery $.post({howifeelit:"good"})
),服务器会给你一些结果(HTTP内部)。
其他建议:
- 更喜欢国际语言进行编程。(即使你爱你的母语,我也明白)这更容易理解和重用。
- 首选 PDO 而不是旧的过时的 mysql_* 函数。
- 如果你坚持,请使用mysql_fetch_assoc()而不是mysql_fetch_array(),这样更轻,你会得到你想要的。
- 查看网络上的百万教程之一以学习基础知识。(看看PDO,include,POST和框架关键字)
- 为什么 jQuery.post 最终会变成 PHP 的 _POST 美元,而我的香草 JS 帖子却没有
- 角度.js http.post 美元,Codeigniter 不工作
- 即使我在 POST 上收到 200 响应,_POST 美元的数据也是空的
- Angular JS和Ionic-http.post 美元的错误,帮助我理解
- 美元.Post和$.获取只允许更改标题,而不允许更改日志
- 美元AngularJs http.post不渲染新视图
- 美元http.Post到PHP文件,500内部服务器错误
- 美元.ajax POST问题
- 角美元http.Post then方法不起作用
- jquery美元.ajax强制POST
- 美元.ajax POST调用ServiceStack webservice,参数未到达
- jQuery美元.Post返回的数据
- JS美元.post不加载PHP文件
- 美元http.post文件大小限制?看起来确实是这样
- 美元.post不会刷新MVC视图
- 使用美元.Post加载数据
- 美元.Jquery特定场景中的post问题
- 美元.Post后跟form.Submit似乎取消了$.post
- AngularJS Rails美元/ http.Post数据字段名作为变量
- jQuery美元.Ajax post数据&fileDownload逃跑