使用会话变量PHP时,数组为空

使用会话变量PHP时,数组为空,php,session-variables,jpgraph,Php,Session Variables,Jpgraph,我在传递带有浮点值的数组时遇到问题。它在另一个文件中是空的。这是密码。请帮忙 //file 1 session_start(); //... while ($row = pg_fetch_assoc($sql)) { $notas[$i] = ($row['grade'] - 57.3)/12; $i++; } print("<FORM method=post action='../indicadores/distr_n

我在传递带有浮点值的数组时遇到问题。它在另一个文件中是空的。这是密码。请帮忙

 //file 1 
session_start();
//...
while ($row = pg_fetch_assoc($sql))
{       
    $notas[$i] = ($row['grade'] - 57.3)/12;                 
    $i++;
}

print("<FORM method=post action='../indicadores/distr_notas.php'>");
print("<input type=hidden name=notas value='$notas'>");
print("<INPUT type=submit>");
print("</FORM>");

//file 2
session_start();

$_SESSION['notas'] = $_POST['notas'];
$notas = $_SESSION['notas'];


$cant = count($notas);
echo $cant; 
//文件1
会话_start();
//...
而($row=pg_fetch_assoc($sql))
{       
$notas[$i]=($row['grade']-57.3)/12;
$i++;
}
打印(“”);
打印(“”);
打印(“”);
打印(“”);
//文件2
会话_start();
$_SESSION['notas']=$_POST['notas'];
$notas=$_会话['notas'];
$cant=计数($notas);
回声$cant;
我仍然有问题。我想我用错邮局了。我有3个脚本。第一个获取条目,第二个获取数组,第三个使用jpgraph显示带有数组的图

file 1 // get the array
<?php  
    print("<FORM method=post action='proc_notas.php'>");
    print("Codigo de Carrera.<p>");
    print("<INPUT type=text name='cod_depto'><p>");
    print("<INPUT type=submit>");
    print("</FORM>");
 ?>


//file 2. 

if($_SERVER['REQUEST_METHOD'] != "POST")
{
print("<FORM method=post action='normal.php'>");
print("Desviación estándar.<p>");
print("<INPUT type=text name='desviacion'><p>");
print("<INPUT type=submit>");
print("</FORM>");
}
else
{
    $depto = $_REQUEST['cod_depto'];
    $ordenada = array();
    $z = array();
        $i = 0;
        $suma = 0;
    $conectar = new Conector();
    $cadena =  "select distinct a.grade FROM evaluation_student_evals a inner join td_estudiantes b on a.party_id = b.id_estudiante where b.cod_depto = '$depto' and a.grade >= 0 and a.grade <= 100 order by a.grade ";
    $sql = $conectar-> consultas($cadena);      
    //calcular sigma y miu      
    $total = pg_num_rows($sql);
    $sumanotas = new distribucion();
    $totalnotas = $sumanotas -> suma_notas($sql);
    $media = $totalnotas/$total;

//Normalizar datos de notas Z = (X-miu)/sigma
    while ($row = pg_fetch_assoc($sql))
    {       

        $ordenada[$i] = (1/(12*sqrt(pi())))*(exp(-0.5*(($row['grade']-$media)*($row['grade'] - $media))/($desviacion*$desviacion)));                                    
        $i++;   }               

    if (!isset($row))
    {
        header("Content-Type: text/html");
        print("<HTML><HEAD><TITLE>Desempeño de Aprendizaje</TITLE>");
        print("</HEAD>");
        print("<BODY>");
        print("$depto no se encuentra.");
        print("</BODY></HTML>");


//file 3 Graph the array
Here, I don´t know how to get the array $ordenada
file 1//获取数组

这将适用于按钮提交

 //file 1 
session_start();
//...
while ($row = pg_fetch_assoc($sql))
{       
    $notas[$i] = ($row['grade'] - 57.3)/12;                 
    $i++;
}

print("<FORM method=post action='../indicadores/distr_notas.php'>");
print("<input type=hidden name=notas value='".implode(',' $notas)."'>"); // use implode to convert array to string
print("<INPUT type=submit>");
print("</FORM>");

//file 2
session_start();

$notas = explode(',' $_POST['notas']);  // use explode to convert string to array

$cant = count($notas);
echo $cant;
//文件1
会话_start();
//...
而($row=pg_fetch_assoc($sql))
{       
$notas[$i]=($row['grade']-57.3)/12;
$i++;
}
打印(“”);
打印(“”;//使用内爆将数组转换为字符串
打印(“”);
打印(“”);
//文件2
会话_start();
$notas=explode(','$_POST['notas']);//使用“分解”将字符串转换为数组
$cant=计数($notas);
回声$cant;
这将与会话一起工作

//file 1 
session_start();
//...
while ($row = pg_fetch_assoc($sql))
{       
    $_SESSION['notas'][$i] = ($row['grade'] - 57.3)/12;                 
    $i++;
}

print("<FORM method=post action='../indicadores/distr_notas.php'>");
print("<input type=hidden name=notas value='$notas'>");  // no need to use
print("<INPUT type=submit>");
print("</FORM>");

//file 2
session_start();

$notas = $_SESSION['notas'];


$cant = count($notas);
echo $cant;
//文件1
会话_start();
//...
而($row=pg_fetch_assoc($sql))
{       
$_课时['notas'][$i]=($row['grade']-57.3)/12;
$i++;
}
打印(“”);
打印(“”;//不需要使用
打印(“”);
打印(“”);
//文件2
会话_start();
$notas=$_会话['notas'];
$cant=计数($notas);
回声$cant;

在第一个文件中设置
$notas
数组,但在第二个文件中使用
$\u POST['notas']
将其添加到会话变量,然后分配给
$notas
。第二个文件中的计数为
0
,因为您不计算第一个文件中生成的数组元素,而是计算
POST
请求(存储在
$\u POST
数组中)传递的一个值的元素

总之:创建一个数组,但对不同数组的元素进行计数

根据您调用第二个文件的方式(它是不同的请求吗?它是否包含在第一个文件中?),您有以下选项:

A.(如果是不同的请求)将
$notas
变量分配给会话数组元素,如下所示:

// at the end of the first file:
$_SESSION['notas'] = $notas;
在第二个文件中,从它读取,而不是从
$\u POST['notas']
,或者

B.(如果第二个文件包含在第一个文件中)使用与第一个文件中相同的变量名称(
$notas
)并分配它,而不是
$\u POST['notas']

// in the second file, instead of " $_SESSION['notas'] = $_POST['notas']; "
$_SESSION['notas'] = $notas;

我想先对文件2中的查询结果进行一些计算,然后再将其发送到文件3中的jgraph。我仍然不知道为什么这部分不起作用:

//文件2

$depto = $_REQUEST['cod_depto'];
$desviacion = $_REQUEST['desviacion'];
$ordenada = array();
$i = 0;
$suma = 0;
$conectar = new Conector();
$cadena =  "select distinct a.grade FROM evaluation_student_evals a inner join td_estudiantes b on a.party_id = b.id_estudiante where b.cod_depto = '$depto' and a.grade >= 0 and a.grade <= 100 order by a.grade ";
$sql = $conectar-> consultas($cadena);      

//calcular sigma y miu          
$total = pg_num_rows($sql);
$sumanotas = new distribucion();
$totalnotas = $sumanotas -> suma_notas($sql);
$media = $totalnotas/$total;

//Normalizar datos de notas Z = (X-miu)/sigma
while ($row = pg_fetch_assoc($sql))
    {       
        $ordenada[$i] = (1/($desviacion*sqrt(pi())))*(exp(-0.5*(($row['grade']-$media)*($row['grade'] - $media))/($desviacion*$desviacion)));                                      $i++;
    }
$tmp= serialize($ordenada);
$tmp= urlencode($tmp);
echo "<form method=post action='../indicadores/distr_notas.php'>";
echo "<input type=hidden name=ordenada value=$tmp>";
echo "<input type=submit name=enviar>";
echo "</form>";

您不会将$notas数组放在sessiontank to all中。我解决了问题,但没有找到解决办法。
$depto = $_REQUEST['cod_depto'];
$desviacion = $_REQUEST['desviacion'];
$ordenada = array();
$i = 0;
$suma = 0;
$conectar = new Conector();
$cadena =  "select distinct a.grade FROM evaluation_student_evals a inner join td_estudiantes b on a.party_id = b.id_estudiante where b.cod_depto = '$depto' and a.grade >= 0 and a.grade <= 100 order by a.grade ";
$sql = $conectar-> consultas($cadena);      

//calcular sigma y miu          
$total = pg_num_rows($sql);
$sumanotas = new distribucion();
$totalnotas = $sumanotas -> suma_notas($sql);
$media = $totalnotas/$total;

//Normalizar datos de notas Z = (X-miu)/sigma
while ($row = pg_fetch_assoc($sql))
    {       
        $ordenada[$i] = (1/($desviacion*sqrt(pi())))*(exp(-0.5*(($row['grade']-$media)*($row['grade'] - $media))/($desviacion*$desviacion)));                                      $i++;
    }
$tmp= serialize($ordenada);
$tmp= urlencode($tmp);
echo "<form method=post action='../indicadores/distr_notas.php'>";
echo "<input type=hidden name=ordenada value=$tmp>";
echo "<input type=submit name=enviar>";
echo "</form>";
function array_recibe($url_array) {
    $tmp = stripslashes($url_array);
    $tmp = urldecode($tmp);
    $tmp = unserialize($tmp);

   return $tmp;
} 

$notas =$_REQUEST['ordenada'];
$notas =array_recibe($notas);

//jpgraph code
$graph = new Graph(600,400,"auto");