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

时间:2013-10-14 20:36:02

标签: javascript php jquery variables post

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

我有这段代码:

的login.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?

非常感谢!

3 个答案:

答案 0 :(得分:1)

阅读你的评论后。看来你正试图发送一行数据。如下所示,放置元素名称和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

在使用foreach的hora数组的php端循环

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
  }
}

<强>参考: 阅读此question and answer


编辑前:

我真的无法理解你的大部分代码。请尝试使用英文标识符。但简单来说,使用隐藏的输入元素应该可以解决您的问题。在提交到procesar_horario.php的表单中添加此内容

<input type='hidden' name='cuentaInputs' id='cuentaInputs'/>

每当更新cuentaInputs时,您都可以更新其值。

$('#cuentaInputs').val(cuentaInputs);

答案 1 :(得分:0)

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'];

答案 2 :(得分:0)

你的问题中没有jQuery的迹象。
如果您正在开发应用程序,请确保了解它的工作原理或您的项目注定要失败。

jQuery是一个用于Javascript的库,一种客户端编程语言,这意味着这是用户使用的运行代码的浏览器(如HTML和CSS)。
PHP是一种在服务器端运行的编程语言,这意味着它在服务器上运行 所以你不能只用你自己的思想轻松地在它们之间进行交互,它没有任何魔力。

浏览器可以原生提交带有提交按钮的表单 如果你想用jQuery(或纯Javascript)来做,你可以手动触发提交(例如使用jQuery $("form").submit())。
您还可以使用它将数据发送到具有AJAX功能的服务器(例如,使用jQuery $.post({howifeelit:"good"})),服务器会为您提供一些结果(HTTP内部)。

其他建议:

  • 喜欢编程的国际语言。 (即使你爱你的母语,我理解)这更容易理解和重复使用。
  • 首选PDO旧的过时mysql_ *函数。
  • 如果你坚持,请使用mysql_fetch_assoc()而不是mysql_fetch_array(),这样更轻,你得到你想要的。
  • 查看网络上的百万教程之一,学习基础知识。 (查看PDO,包含,POST和框架关键字)