将变量从 Jquery 传递给 PHP(_POST美元)

Passing a variable from Jquery to PHP ($_POST)

本文关键字:POST 美元 PHP 变量 Jquery      更新时间:2023-09-26

我正在做一个管理学校中心的网站,我有一个疑问,我希望你能解决它。

我有这个代码:

登录.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&ntilde;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&iacute;</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&eacute;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&oacuten 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&oacuten 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和框架关键字)