passaggio di array tra due pagine php

Ciao a tutti. vi posto il codice che mi dovrebbe permettere di passare un array da una pagina all'altra per poi fare un istogramma:

<?PHP include("membersonly.inc.php");

$url1 = $HTTP_GET_VARS["url"];

$orario = $HTTP_GET_VARS["orario"];

$query = "Select * from ping where url='$url1'";

$result = mysql_query($query);

$muero=mysql_num_rows ($result);

$pacchettipersi=0;

$pacchettiricevuti=0;

$maxt=0;

$mint=100000;

$sommatot=0;?>

$minimograf=array();

for ($i=0;$i<$muero;$i++)

 {$sommatot+=$somma;

   $pacchettipersi+=$persi;

  $pacchettirivecuti+=$ric;

   if($row = mysql_fetch_array($result)){

    echo "$row[primo]";

   echo"$row[secondo]";

    echo"$row[terzo]";

   echo"$row[quarto]";

   $max=0;$min=100000;   $somma=0;$elemento=0;$cento=0;$duecento=0;$trecento=0;$cinquecento=0;

   for ($j=1;$j<5;$j++)

   {if ($row[$j]<99999)                              {$somma+=$row[$j];

          $elemento+=1;

          $media=$somma/$elemento;                         if ($row[$j]>$max)   {$max=$row[$j];}

          if ($row[$j]<$min)   {$min=$row[$j];}                     }

      if ($min>99999) {$min=0;echo $min;} else {echo $min;}

      if ($max>$maxt){$maxt=$max;}

      if ($min<$mint){$mint=$min;}

      if ($min<>0) {array_push($minimograf,$min);}

   echo $max;

   if ($elemento==0){echo 0;}   else {echo $media;}}

           else{echo "<title>Errore!</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"></head><body>Errore, non riesco a vedere informazioni per il sito.<br><a href=\"user.php?action=more&username=$url1\">Torna indietro</a>";}}

   <?php echo $stringa =serialize($minimograf);

   echo $mass=max($minimograf);echo $minimo=min($minimograf);

   echo "<a href='Untitled-1.php?m=$minimo&s=$mass&action=$stringa' title='Grafico' target='_blank'>Grafico</a>";  ?>

UNTITLED-1.php

<?php

$post=$_POST["action"];

echo $max=$_GET["s"];

echo $min=$_GET["m"];

$valori = unserialize($post);

print_r($valori);

$ampiezza = $max - $min;

$maxX = 1000;

$maxY = 500;

$img = imagecreatetruecolor($maxX, $maxY);

$background = imagecolorallocate($img,1,1,1);

imagefill($img, 0, 0, $background);

$pencolor = imagecolorallocate($img, 200,100,150);

$ascissecolor = imagecolorallocate($img, 123,32,43);

$bordocolor = imagecolorallocate($img, 234,45,44);

$passoy = ($ampiezza / ($maxY - 80)) ;

$larghezzabarra = round(($maxX-10)/sizeof($valori));

$mezzo = $maxY-10;

imageline($img, 0, $mezzo, $maxX, $mezzo, $ascissecolor);

for ($i = 0; $i < count($valori); $i++){

    $x1 = $i*$larghezzabarra+5;//echo "\n";

    $y1 = round($mezzo - $valori[$i]/$passoy);//echo "\n";

    $x2 = $i*$larghezzabarra + $larghezzabarra;//echo "\n";

    $y2 = $mezzo;//echo "<br>";

    imagefilledrectangle($img, $x1, $y1, $x2, $y2, $pencolor);

    imagerectangle($img, $x1, $y1, $x2, $y2, $bordocolor);

}

$messaggio = "istogramma";

$textcolor = imagecolorallocate($img, 30,40, 50);

imagestring($img, 3, 5, 5, $messaggio, $textcolor);

imagejpeg($img, "istogramma.jpeg");

imagedestroy($img);

?>

<html>

<head>

<title> GD - istogramma </title>

<meta name="Generator" content="EditPlus">

<meta name="Author" content="">

<meta name="Keywords" content="">

<meta name="Description" content="">

</head>

<body>

<img src="istogramma.jpeg" border=0 alt="istogramma">

</body>

</html>

Quando vado a fare l'"echo" di $valori nel secondo script ho un risultato vuoto. Cosa può essere? ki mi può dare delle dritte sugli script?

Aspetto una risposta al + presto...  :bye:   

inviato 10 anni fa
peppebrioscia
X 0 X

in untittled-1.php:

$post=$_POST["action"];

ma non invii nulla con il metodo post, devi usare get come per il minimo e massimo.

risposto 10 anni fa
LonelyWolf
X 0 X

ok, l'ha passato! ma il problema è ke quando vado a "unserializzarlo", nn mi ritorna niente e mi da sizeof($valore)=1. come faccio realmente a recuperare i 3 valori che si trovano nella variabile $post?

risposto 10 anni fa
peppebrioscia
X 0 X

usa count invece di sizeof (anche se si equivalgono).

print_r($valori)

Ti visualizza tutti i valori corretti?

risposto 10 anni fa
LonelyWolf
X 0 X

la risp è sempre quella... il valore dell'array è 1. E come se vedesse l'array come un unico valore (ecco il perkè dice ke è 1). Non so se il problema è l'unserialize... ke ne dici?

risposto 10 anni fa
peppebrioscia
X 0 X

A questo punto penso proprio che sia lì il problema, prova a mettere direttamente:

$valori = unserialize($_GET["stringa"]);

risposto 10 anni fa
LonelyWolf
X 0 X

niente...  :'(.

Ho provato di tutto ma niente!

risposto 10 anni fa
peppebrioscia
X 0 X

nel primo script con "$stringa=serialize($minimograf) ottengo: a:3:{i:0;s:2:"76";i:1;s:4:"75.3";i:2;s:4:"72.1";}.

nel secondo script facendo "echo $_GET[$stringa]" ottengo lo stesso a:3:{i:0;s:2:"76";i:1;s:4:"75.3";i:2;s:4:"72.1";}. dopo questa istruzione faccio unserialize($_GET[$stringa]); ma nn ottengo niente. Ecco perkè secondo me il problema è unserialize. con cosa lo potrei sostituire? :-\ :(

risposto 10 anni fa
peppebrioscia
X 0 X

prova a mettere questo per avere la certezza:

if (!($valori=unserialize($_GET[$stringa]))) { echo "Fallito!";}
else (echo "OK!";}
risposto 10 anni fa
LonelyWolf
X 0 X

LA RISPOSTA E'  :( fallito!!!  :'( Ma cosa può essere?

risposto 10 anni fa
peppebrioscia
X 0 X

Potrebbe essere un problema con i caratteri nell'url. prova così.

Nella prima pagina:

$stringa=urlencode(serialize($minimograf));

E nella seconda:

$valori=unserialize(urldecode($_GET[$stringa]));
risposto 10 anni fa
LonelyWolf
X 0 X

avevo già provato... nn è questo! :-\

Secondo me sarà una cosa da niente alla fine... ma cosa????

risposto 10 anni fa
peppebrioscia
X 0 X

perchè siamo passati da $_GET["stringa"] a  $_GET[$stringa]?

risposto 10 anni fa
LonelyWolf
X 0 X

nel mio caso il passaggio viene con ppp=$stringa, quindi $_GET["ppp"]. Cmq nn è questo il problema... o no?  nn è ke l'unserialize ha problemi con la versione del php? se è si, dove si vede la ver usata? :police: :bye:

risposto 10 anni fa
peppebrioscia
X 0 X

unserialize è disponibile da php4 in poi, se fosse quello il problema avresti ricevuto l'errore di funzione non definita.

per vedere la ver4sione basta fare una pagina con phpinfo().

il fatto che ha restituito fallito vuol dire che unserialize non riesce a fare l'operazione inversa per qualche motivo, potrebbe esser l'aggiunta di qualche carattere strano che non permette il riconoscimento del formato originale.

Puoi provare a salvare il valore dell'array serializzato nella sessione invece di passarlo attraverso get?

risposto 10 anni fa
LonelyWolf
X 0 X

HO PROVATO CON TUTTE LE $_ ... MA NIENTE. LA VERSIONE è LA 5.2.1... NN SO, PER FARE DEI GRAFICI PASSANDO DEI VALORI IN DEGLI ARRAY CI SONO ALTRE SOLUZIONI? IL PROBLEMA NASCE DA QUESTO, CIOE': DAL MIO PRIMO SCRIPT IN CUI FACCIO LE STATISTICHE, PRENDO TUTTI I TEMPI MINIMI VOLENDO FARE UN COLLEGAMENTO IPERT AD UNA PAGINE CHE RICEVE TT QUESTI VALORI FACENDO UN GRAFICO. LO SCRIPT DEL GRAFICO XO' DEVE POTER ESSERE UTILIZZATO ANKE DAI TEMPI MEDI E DAI TEMPI MASSIMI... ECCO DA DOVE NASCE L'ESIGENZA DI POTER PASSARE L'ARRAY. SE SAI QUALKE MODO PIù FACILE DIMMELO E PROVO A RISOLVERE...CIAO :coolsmiley:

risposto 10 anni fa
peppebrioscia
X 0 X

HO PROVATO CON TUTTE LE $_ ...

Che vuol dire? Hai salvato nella sessione il valore dell'array e poi nella seconda pagina recuperato?

risposto 10 anni fa
LonelyWolf
X 0 X

Ho fatto quello ke hai detto tu... niente!!! potrei fare in questo modo:

faccio l'array nel 1°pag, la passo in una pagina txt... nella 2°pagina acquisisco il contenuto del txt lasciando il file bianco e acquisendo l'array per i grafici. a mali estremi...

risposto 10 anni fa
peppebrioscia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda