Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Scrivere un Array su TXT con valori da Flash

    Ciao a tutti,

    Ho inserito questo Post anche nella sezione Flash ActionScript... ma penso proprio che l'errore dipenda dal codice PHP che ho scritto...


    Devo inviare un array bidimensionale ad un file PHP che salva questi valori in un file TXT.

    Si tratta di una mappa 250x250 che devo salvare su un file TXT

    Con Flash ho scritto:

    codice:
    	var invia = new LoadVars();
    		invia.m = new Array();
    	for (var x = 1; x<=griglia.spacings; ++x) {
    		invia.m[x-1] = new Array();
    		for (var y = 1; y<=griglia.spacings; ++y) {
    			invia.m[x-1][y-1] = matrice[x-1][y-1];
    		}
    	}
    		invia.nCelle = griglia.spacings;
    		_root.numeroCelle = invia.nCelle;
    		_root.matrice2 = invia.m[0][0];
    	// mi creo anche la variabile di ritorno eventuale di codice
    	var ricevuto = new LoadVars();
    	//gestione della risposta inviata dal file scrivi.php
    	ricevuto.onLoad = function(success) {
    		_root.ok = ricevuto.toString();
    	}
    	// ora invio e ricevo le variabili
    	invia.sendAndLoad(url, ricevuto);
    Nel file PHP il codice è:

    $m è l'array da flash e $nCelle il numero di righe e colonne

    codice:
    <? 
    $matrice = array();
    $matrice = $m;
    $n = $nCelle;
    $riga = "";
    $nomeFile = "lab1.txt";
    for ($i=0; $i < $n; $i++) {
    	for ($j=0; $j < $n; $j++) {
    		//scrive il file ma nn inserisce i valore della variabile $val!!!
    		$val = $matrice[$i][$j];
    		$riga .= "cella_".$i."_".$j."=".$val."&";
    	}
    	$fp = @fopen("$nomeFile","a");
    	if (!($fp)) {
    		exit;
        }
        fputs($fp, "$riga\n");
    	fclose($fp);
    	$riga = "";
    	$riga = "&";
    }
    ?>
    Il risultato è un file di testo che effettivamente ha 250 x 250 elementi; gli a capo li inserisce quando voglio... ma nn mi scrive il valore che è contenuto nell'array

    risultato TXT:

    cella_0_0=&cella_0_1=&cella_0_2=&cella_0_3=&.....

    Dopo l'uguale dovrebbe esserci il valore
    Non essendo un esperto di PHP penso di avere sbagliato qualcosa nel trattare l'array in arrivo da Flash, oppure che Flash nn invia così automaticamente un array di quelle dimensioni

    Grazie

  2. #2
    scusa.. tralasciando il passaggio da flash a php.. che non è di mia competenza [anche se ricordo essere cosa d apoco]...

    per memorizzare l'array su un file non fai prima a serializzarlo?

    http://it.php.net/manual/it/function.serialize.php



  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma sei sicuro che i dati che ti arrivano siano corretti?

    prova a scrivere questo dopo $matrice= $m :
    codice:
    echo "<pre>";
    print_r($matrice);
    echo "</pre>";
    e vedi se quello che leggi è quello che ti aspetti.

    poi per ciclare gli array c'è foreach()

    ciao

  4. #4
    L'array a quanto pare arriva...!

    Ho inserito

    codice:
    $nomeFile2 = "lab2.txt";
    $fp2 = @fopen("$nomeFile2","a");
    	if (!($fp2)) {
    		exit;
        }
        fputs($fp2, "$m\n");
    	fclose($fp2);
    e il risultato è un file con tutti i valori dell'array separato da virgola.

    Il mio problema è che i valori li devo salvare nel formato
    cella_0_0=VALROE&cella_0_1=VALORE... per poterli leggere nuovamente in Flash

  5. #5

    ?? cume se fa?

    Originariamente inviato da }gu|do[z]{®©
    scusa.. tralasciando il passaggio da flash a php.. che non è di mia competenza [anche se ricordo essere cosa d apoco]...

    per memorizzare l'array su un file non fai prima a serializzarlo?

    http://it.php.net/manual/it/function.serialize.php


    Come devo fare per serializzarlo? nn ho capito molto bene...

    Per inserire poi nel file di testo la stringa cella_0_0 cella_0_1 ecc... come devo procedere?

  6. #6
    $serializzato = serialize($m);
    $fp = fopen('tuofile.txt','w');
    fwrite ($fp,$serializzato);
    fclose($fp);


    per leggerlo:

    $fp = fopen('tuofile.txt','w');
    $serializzato = fread($fp, filesize('tuofile.txt'));
    fclose($fp);
    $m = unserialize($serializzato);


    questo ovviamente se sul file scrivi n valore per volta... se ne scrivi più di uno devi accodare.. la cosa migliore secondo me sarebbe di scrivere un record per riga a quel punto.. e leggere con file() che restituisce le righe separatamente come elementi di un array...

    vedi tu... ma mi sembra che serializzare sia il modo + veloce di salvare su file il valore di una qualsiasi variabile "non banale" (in particolare di un array)


  7. #7

    ...ho provato...

    Grazie... ho pravato e funziona, mi inserisce i valori!
    Resta il problema di come devono essere salvati sul file!

    Ho pravato a mettere i dati in questo modo, uno per volta:

    codice:
    fputs($fp, "cella_");
    fputs($fp, "$i");
    fputs($fp, "_");
    fputs($fp, "$j");
    fputs($fp, "=");
    fputs($fp, "$m[$i][$j]");
    fputs($fp, "&");
    però il risultato nn è proprio come me l'aspettavo... ci siamo quasi...

    cella_0_0=X[0]&cella_0_1=X[1]&cella_0_2=X[2]&cella_0_3=X[3]&cella_0_4=X[4]&

    lo zero tra parentesi nn ci deve essere: lui nn legge il dato in $m[$i][$j] ma legge il dato in $m[$i] e aggiunge il valore di $j... tra parentesi quadre...

    Grazie ancora!
    Scusate per l'insistenza... ma ne approfitto, visto che siete così rapidi nel rispondermi!!!

  8. #8
    non riesco a capire cosa vuoi fare... hai l'array e vuoi rileggerlo tale e quale in un secndo momento?

    seruializzi e unserializzi... punto.

    non devi trattare i dati singolarmente per memorizzarli..

  9. #9
    Originariamente inviato da }gu|do[z]{®©
    non riesco a capire cosa vuoi fare... hai l'array e vuoi rileggerlo tale e quale in un secndo momento?
    In flash creo in modo casuale una mappa di punti che poi io completo a mano (l'obbiettivo è quello di fare un labirinto)... poi questo labirinto per poterlo riutilizzare in un secondo momento lo devo salvare in un file di testo... e la sintassi dovrà essere grosso modo quella che ho più volte riportato.
    Non riesco in Flash a leggere un file di testo composto da valori
    X,O,X,X,X,
    variabili e valori devono essere separti da "&" e deve essere nella forma nomeVariabile=valore&nomeVariabile2=valore&nomeVar iabile3=valore ...



    Particamente come dicevo nel messaggio prima, ci sono quasi... però nn capisco per nn legge il valore esatto... o nn legge proprio, quello che cè nell'array bidimensionale...


    Grazie ancora!

  10. #10
    sì.. ma se la mappa sta nell'array... non capisco perchè vuoi salvare valore per valore...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.