Array da php a javascrip

giuseppeI

Utente Attivo
25 Giu 2012
41
0
0
Ciao,
Non sono un esperto ne di php ne di javascript.
A fatica, quindi, sto cerco di mettere in piedi un programmino, ma le difficoltà sono tante e non sempre riesco a venirne fuori come in questo caso:

$cerì è un array php recuperato dalla stringa $tempo. L'array lo devo utilizzare però in javascript e ciò lo dovrebbe fare il codice sottostante, dovrebbe cioè trasferire l'array $cerì nell'array var tempi in javascript.
Non sono convinto che il codice funzioni bene, fatto sta che se cerco di richiamare il risultato con con "alert" o con "document.Write", come mostra l'ultimo pezzo di codice, non ottengo nessuna risposta, non soltanto richiamando un valore di "var tempi[]", ma anche quando si cerca di visualizzare un stringa qualsiasi: alert ("no,no"), per cui ritengo l'array "tempi" non è utilizzabile;.
Sono nelle vostre mani. Qualsiasi altra soluzione è ben accetta. Ringrazio tutti dell'attenzione prestata
Giuseppe.

HTML:
....
.....
$cerì=explode ( "\r", $tempo );
?>
<script type="text/javascript">
var tempi = new Array();
<?php
   $conta = 0;
   foreach($cerì as $rigo){
    echo "tempi[{$conta}] = \"{$rigo}\";\n";
    $conta++;
}
?>
alert (tempi[2])
Alert (tempi[3]);
document.Write(tempi[4]);
alert ("no,no");
</script>[HTML]
 
Correggi queste 2 funzioni e ti dovrebbe funzionare
PHP:
alert(tempi[3]);
document.write(tempi[4]);
Non mettere le iniziali in maiuscolo, il js le interpreta come funzioni differenti e in questo caso inesistenti
 
Non funziona ugualmente. Alert funziona solo se deve mostrare del testo, document.write non funziona per niente. Non so proprio come procede. Avrebbe qualche soluzione alternativa?
Grazie
 
ciao
prova così (non sapendo come è $tempo ho costruito l'array a caso)
PHP:
<?php
//$cerì=explode ( "\r", $tempo );
$ceri['a']="pinco";
$ceri['b']="pallo";
$ceri['c']="pallino";

?>
<script type="text/javascript">
var tempi = new Array();
<?php
$conta = 0;
foreach($ceri as $rigo => $val){
echo "tempi[$conta] = \"$val\"; ";
$conta++;
}
?>
alert (tempi[0]);
alert (tempi[1]);
document.write(tempi[2]);
alert ("no,no");
</script>

p.s.
cerca di non usare caratteri accentati nei nomi delle variabili
 
Non funziona ancora, ma non per colpa del codice bensì, credo, della stringa $tempo da cui è ricavato l'array "$cerì".
Se si visualizza la sorgente html del codice si osserva questo:
HTML:
tempi[0] = "1537";
 tempi[1] = "
3710";
 tempi[2] = "
7424";
 tempi[3] = "
9800";
 tempi[4] = "
.....
....
Ho provato a correggere l'html in questo modo:
HTML:
<script type="text/javascript">
var tempi = new Array();
tempi[0] = "1537";
tempi[1] = "3710";
tempi[2] = "7424";
tempi[3] = "9800";
tempi[4] = "12634";
tempi[5] = "14860";
.....

e tutto funziona correttamente.

I "tempi" in origine sono incolonnati in una casella di testo; con un copia e incolla sono stati inseriti nel database, quindi estratti nella stringa $tempo e con un "esplode" inseriti nell'array $cerì (cerì significa tempi in una lingua parlata dalle mie parti).

Ora, approfittando ancora della vostra disponibilità, chiedo: come si può intervenire sul codice in modo che l'output sia quello corretto? e ancora, visto che l'array il più delle volte superano il centinaio di elementi c'e modo di nascondere la loro costruzione?
Grazie ancora
Giuseppe
 
ciao
1) dovresti postare come è fatta la stringa $tempo
2) js non si puù nascondere
3) in italiano si dice città ma è meglio scrivere $citta
 
con
PHP:
"echo $tempo"
si ottiene questo risultato:

1537 3710 7424 9800 12634 14860 17490 18845 23538 28132 30088 32906 37556 40369 43510 47404 51480 52635 56530 60215 62500 67386 69058 70203 74433 77533 80172 83782 89777 91382 92784 94047 96978 97673 101876 104975 107504 109642 112415 114124 115691 118356 119982 121968 124789 127239 127239 1272391537

con
PHP:
foreach($ceri as $rigo){
         print $rigo;
        echo "<br/>";
       }

si ottine:
3710
7424
9800
12634
14860
17490
18845
23538
28132
30088
32906
37556
40369
43510
47404
51480
....
....
è possibile intervenire in qualche modo?
 
ciao
così funziona, però verifica cvome viene chiussa la stringa $tempo quando la prelevi
PHP:
<?php
$tempo="1537\r3710\r7424\r9800\r12634\r14860\r17490\r18845\r23538\r28132\r30088\r32906\r37556\r40369\r43510\r47404\r51480\r52635\r56530\r60215\r62500\r67386\r69058\r70203\r74433\r77533\r80172\r83782\r89777\r91382\r92784\r94047\r96978\r97673\r101876\r104975\r107504\r109642\r112415\r114124\r115691\r118356\r119982\r121968\r124789\r127239\r127239\r1272391537";
$ceri=explode( "\r", $tempo );
?>
<script type="text/javascript">
var tempi = new Array();
<?php
$conta = 0;
foreach($ceri as $rigo => $val){
echo "tempi[$conta] = \"$val\"; \n";
$conta++;
}
?>
alert (tempi[0]);
alert (tempi[1]);
document.write(tempi[2]);
alert ("no,no");
</script>
 
Ho risolto in questa maniera: ho inserito la seguente stringa nel database


HTML:
var tempi = new Array(0,0,690,1983,3004,5359,6510,10404,11764,14700,16003,17048,18940,19695,21007,22399,22698,25039,
                                27512,28172,30993,33363,34501,35608,40564,42717,49337,52525,55414,57199,58928,62976,64005,68312,
                                70000,70759,73030,75034,76541,77854,79000,83180,84811,87643,89017,92132,93982,98599,99295,103836,
                                108487,111055,112826,115075,120320,123309,125020,128621,132140,134715,137187,139004,140401,143458,
                                145375,146520,148808,150253,151460,153218,154383,154903,156000, 158715);

una volta richiamata col php nella variabile $tempo, l'ho passata tale equale a js con

PHP:
echo $tempo;
.

Senza la possibilità di analizzare e interpretare i suoi suggerimenti non sarei mai arrivato a questa soluzione, la ringrazio enormemente della sua disponibilità.
Giuseppe
 
Ora che ci penso era sufficente fare cosi senza ciclo

PHP:
<?php 
$tempo="1537\r3710\r7424\r9800\r12634\r14860\r17490\r18845\r23538\r28132\r30088\r32906\r37556\r40369\r43510\r47404\r51480\r52635\r56530\r60215\r62500\r67386\r69058\r70203\r74433\r77533\r80172\r83782\r89777\r91382\r92784\r94047\r96978\r97673\r101876\r104975\r107504\r109642\r112415\r114124\r115691\r118356\r119982\r121968\r124789\r127239\r127239\r1272391537"; 
$ceri=explode( "\r", $tempo ); 
?> 
<script type="text/javascript"> 
<?php 
//testato, è funzionante
echo "var tempi =".json_encode($ceri).";";
?> 
alert (tempi[0]); 
alert (tempi[1]); 
document.write(tempi[2]); 
alert ("no,no"); 
</script>
 

Discussioni simili