2013-06-28 201 views
0

我想发送一个数组,其复选框为ON to upload.php。每个复选框都必须有一对从mysql列中提取的数据:CodigoCursoHorarioid。我无法将这些信息发送到upload.php。我该如何执行此操作?从复选框中选择多个值

<?php 
session_start(); 
$connection = mysql_connect("localhost", "root", ""); 
mysql_select_db("mydb", $connection); 
$query = "SELECT Curso.CursoId, Hora.Horarioid,Persona.Cedula,Curso.CodigoCurso,Curso.NombreCurso,Curso.Creditos,Hora.Hora,Horario.PersonasMatriculadas FROM Persona INNER JOIN PreMatriculaEstudiante,Prematricula,Curso,Horario,Hora WHERE Persona.PersonaId = PreMatriculaEstudiante.PersonaId AND PreMatriculaEstudiante.PrematriculaID = Prematricula.PrematriculaId AND Prematricula.CursoId = Curso.CursoId AND Curso.CursoId = Horario.CursoId AND Horario.HorarioId = Hora.HorarioId AND Persona.Cedula = '" . $_SESSION["cedula"] . "'"; 
$result = mysql_query($query); 

if ($row = mysql_fetch_array($result)) { 
    echo "<form action='upload.php' method='POST'>"; 
    echo "<table border = '1'> \n"; 
    echo "<tr><td><b>Código Curso</b></td><td><b>Nombre Curso</b></td><td><b>Horario</b></td><td><b>Personas matriculadas</b></td></tr>"; 
    $k = 0; 
    $t = 0; 
    while ($array = mysql_fetch_array($result)) { 
     echo "<tr> 
         <td>" . $array['CodigoCurso'] . "</td>" . 
     "<td align='left'>" . 
     "<input type='checkbox' name='info[$k][$k]' value='" . $array['CursoId'] . $array['Horarioid'] . "'.nonchecked>" . utf8_encode($array['NombreCurso']) . "</td>" . 
     "<td>" . $array['Hora'] . 
     "<td>" . $array['PersonasMatriculadas'] . "</td>" . 
     "</tr>"; 

     $k++; 
     $t++; 
    } 

    echo "</table> \n"; 
    echo "<p>"; 
    echo "<input type='submit' value='Ingresar datos'/>"; 
    echo "</p>"; 
    echo "</form>"; 
} else { 
    echo "¡ No se ha encontrado ningún registro !"; 
} 

回答

0

变化

<input type='checkbox' name='info[$k][$k]' value= 

<input type='checkbox' name='**{info[$k][$k]}[]**' value= 

但要注意,如果该复选框未在HTML页面上打勾,然后没有价值被发送到服务器。您需要测试是否设置了复选框名称,如果不是,则为其应用值。或者更好的是,数据库字段应该有一个默认值。

0

你有复选框字段名称后加括号[]

"<input type='checkbox' name='info[$k][$k][]' value='" . $array['CursoId'] . $array['Horarioid'] . "'.nonchecked>" . utf8_encode($array['NombreCurso']) . "</td>" . 

请记住,如果没有选择复选框场就不贴了,所以如果通过isset()功能设置必须检查。

重要:不要使用mysql_*功能,使用PDO /库MySQLi代替。看看这里:Why shouldn't I use mysql_* functions in PHP?

+0

我得到连击CursoId与Horarioid,而不是他们在不同的“行”的阵列 – Chu

+0

只是一个评论...在你为什么有相同的指数? ('info [$ k] [$ k] []'中有两个'$ k',而不是'info [$ k] [$ t] []'或'info [$ t] [$ k] []'' ? – jan267

+0

呵呵,首先,我是一个php新手。其次,我不明白数据如何分配在数组中。我的目标是:一个checkbutton有两个数据:CodigoCurso和Horarioid。当选择一些复选框时,我想这些复选框与他们的CodigoCurso和Horarioid。我想我必须分配在阵列上的同一行,因为是从同一复选框的数据 – Chu