2015-02-06 2 views
0

문제가 있습니다.PHP "unset()"함수가 이전 코드보다 먼저 작동합니다.

다른 페이지의 그래프 개체에서 데이터를 (세션으로) 전달한 후 세션을 설정 해제하지 않으면 두 개의 동일한 그래프가 표시되고 그래프가 표시되지 않습니다. unset, var = NULL을 사용하여 시도했지만 while 루프 외부에서 세션을 선언하는 것은 = array(); 그러나 모든 방법은 실패했습니다. 나는 미쳐 가고있다! 너의 지식으로 나에게 불을 지펴 라. 감사.

코드입니다 (죄송합니다,하지만 난이 사이트에서 코드 들여 쓰기를 할 수없는거야)

//STATISTICHE.PHP 

<?php session_start(); ?> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="../../css/stile.css"> 
</head> 
<body> 

<?php 

include_once("../../classi/utils.lib.php"); 
include_once("../../classi/license.lib.php"); 
include_once("../../classi/funzioni.php"); 
include_once("../../classi/config.php"); 
include_once("../../classi/auth.lib.php"); 

list($status, $user) = auth_get_status(); 

if($status == AUTH_LOGGED && license_has($user, "sede_centrale")) 
{ 
    menu(); 
    echo "<h1>STATISTICHE</h1>"; 

    $query="SELECT nome FROM negozi ORDER BY id ASC"; 
    $risultato=$db_magazzino->query($query); 
    while($negozio=$risultato->fetch_assoc()) 
    {  
     $rimanenze=rimanenze($negozio['nome'], NULL, NULL, NULL, NULL); 
     $query2="SELECT * FROM elenco_movimenti WHERE causale='Vendita al dettaglio' AND fornitore='".$negozio['nome']."' ORDER BY data DESC"; 
     $risultato2=$db_magazzino->query($query2); 
     while($scarico=$risultato2->fetch_assoc()) 
     { 
      $_SESSION['data'][$scarico['data']]=$scarico['quantita']; 
      //echo $_SESSION['data'][$scarico['data']]; 
     } 
     //var_dump($rimanenze); 
     if(count($rimanenze)>0) 
     { 
      echo "<h2>Grafico delle vendite di ".$negozio['nome'].":</h2>"; 
      echo "<h4>Valore magazzino ".$negozio['nome'].": ".$rimanenze[count($rimanenze)-1]['valorizzazione_magazzino']." Euro</h3>"; 
      //var_dump($_SESSION['data']); 
      if($_SESSION['data']!=NULL){ 
       echo "<br/><img src=\"grafico.php\"/>"; 
       unset($_SESSION['data']);} 
      } 
      //$risultato2->close(); 
     } 

    } else 
     non_autorizzato(); 
?> 
</body> 

GRAFICO.PHP을

<?php 
    session_start(); 
    include_once("../../classi/phpgraphlib-master/phpgraphlib.php"); 
    $graph=new PHPGraphLib(1000,500); 
    //Aggiungo i valori di cui sopra 
    $graph->addData($_SESSION['data']); 
    //Imposto il titolo 
    $graph->setTitle("Prodotti venduti"); 
    //Indichiamo alla libreria di non mostrare le barre 
    $graph->setBars(false); 
    //Di conseguenza segnaliamo che si tratta di un grafico a linee 
    $graph->setLine(true); 
    //Visualizza un bollino nel punto del valore indicato 
    $graph->setDataPoints(true); 
    //Indichiamo il colore del bollino 
    $graph->setDataPointColor("yellow"); 
    //Visualizza il valore del punto 
    $graph->setDataValues(true); 
    //Indichiamo il colore 
    $graph->setDataValueColor("blue");  
    //Creo il grafico 
    $graph->createGraph(); 
?> 
+0

반복주기마다 SESSION [데이터]를 설정하고 있습니다. – Daniel

+0

내가 세션을 설정하고, graph.php에 데이터를 전달한 다음,주기에서 설정을 해제 할 수 없습니까 ?? –

답변

0

당신은을 사용하여 시도 할 수도 있습니다 $_SESSION['data']null과 같은지 확인하는 대신 empty 또는 isset이 작동합니다.

이 함수는 변수의 존재 여부와 값이 비어 있지 않은지 확인하는 데 사용할 수 있습니다.

+0

완료되었지만 여전히 작동하지 않습니다 ... 빈 이미지가 나타납니다 ... –

+0

if ($ _ SESSION [ 'data']! = NULL) {'to'if (! empty ($ _ SESSION [ 'data' ])) {'? 그렇다면,'unset ($ _ SESSION [ 'data']);를'$ _SESSION [ 'data'] = null;'으로 수정 해 보았습니까? – BLenau

+0

예, if의 바깥 쪽, while주기 전 (parenthetis 이전) .don't work :/세션이 page statistiche.php (var 덤프로 테스트 됨)에 설정되어 있습니다. 이미지이기 때문에 나는 다른 페이지에서 모른다. –

0

SESSION 변수를 설정 해제하기 전에 grahico.php를 바로 호출하십시오. 기본적으로이 세션에 무엇이 있는지 알게됩니다. [데이터] 디버그 작업을 수행하십시오. 코드에 다음을 삽입하고 결과를 붙여 넣습니다.

if ($_SESSION['data'] != NULL) { 
    echo "<pre>"; 
    print_r($_SESSION['data']); 
    echo "</pre>"; 
    exit; 

    echo "<br/><img src=\"grafico.php\"/>"; 
    unset($_SESSION['data']); 
} 
관련 문제