Salve a tutti.
Salve a tutti.
Salve a tutti, sto realizzando un gestionale di informazioni con interfaccia flash, caricamento dati con file php e sorgente dati con un file.txt .
In flash ci sono due campi regione, città e un pulsante cerca.
Il pulsante se premuto caricherà il file.php.
Il file.php adrà a caricare i dati dal file.txt dove per ogni riga ci sono tre informazioni
regione, città, link a un file wsf.
La formattazione dei valori nel file dati.txt deve essere in questo modo
Lazio || Roma|| http://www.miosito.com/cartella1/car...eventofile.swf
Lazio || Viterbo || http://www.miosito.com/cartella1/car...eventofile.swf
Lazio || Rieti|| http://www.miosito.com/cartella1/car...eventofile.swf
Lombardia || Milano || http://www.miosito.com/cartella1/car...eventofile.swf
Lombardia || Pavia|| http://www.miosito.com/cartella1/car...eventofile.swf
ecc
Ho trovato questo script ma non riesco ad adattarlo alle mie esigenze.
Confrinta solo due valori a me serve di recuperare anche il terzo (il link al file swf)
<?php
$confronta = 0;
$array_dati = file("dati.txt");
foreach($array_dati as $a)
if(trim($array_dati[$a])==trim($regione."||".$citta)){
$confronta = "trovato";
print("&confronta=$confronta")
exit();
}
}
print("&confronta=$confronta")
?>
Il codice php restituisce la variabile "confronta" con valore "0" se non trova una regione e una città corrispondente, separato da questa stringa ||, uguali a quelli inseriti nel campo flash.
Altrimenti restituirà "trovato" se trova regione e città separato da questa stringa ||, uguali a quelli inseriti nel campo flash.
Quello che mi interessa è realizzare un file php che oltre a resituire "0" oppure "trovato" riesca a recuperare anche la terza informazione (il percorso per caricare il file swf) abbinata al valori corrispondenti nel confronto.
Poi io in Flash la utilizzerò per caricare l'swf in un fotogramma.
Lo scopo finale è di ottenere informazioni specifiche abbinate a regione città
Come posso fare non sono molto esperto in php!
Grazie anticipatamente.
Codice PHP:
$regione = trim(regione_che_arriva_da_flash);
$citta = trim(citta_che_arriva_da_flash);
$confronta = 0;
$array_dati = file("dati.txt");
foreach($array_dati as $riga)
{
$dati = explode('||',$riga);
if (trim($dati[0]) == $regione && trim($dati[1]) == $citta)
{
$confronta = "trovato";
print("&confronta=$confronta&link=".$dati[2]);
exit();
}
}
print("&confronta=$confronta")
Grazie tanto Alhazred!
Come ho già detto non sono esperto in php e ho poca dimestichezza con gli array.
Tuttavia vorei capire una cosa.
La funzione explode restituisce una matrice di stringhe, ciascuna delle quali è una parte di string ottenuta dividendo la stringa originale utilizzando un separatore definito nell'espressione.
Da quanto posso capire i valori di ogni riga vengono impilati e numerati partendo a 0
ad esempio
I seguenti dai inseriti in questa formattzaione del file dati.txt
Lazio || Roma|| http://www.miosito.com/cartella1/car...eventofile.swf
Lazio || Viterbo || http://www.miosito.com/cartella1/car...eventofile.swf
Lazio || Rieti|| http://www.miosito.com/cartella1/car...eventofile.swf
Lombardia || Milano || http://www.miosito.com/cartella1/car...eventofile.swf
Lombardia || Pavia|| http://www.miosito.com/cartella1/car...eventofile.swf
deduco che saranno inseriti nell'array in questo modo
String Array ID
Lazio [0]
Roma [1]
http://www.miosito.com/cartella1/car...eventoRoma.swf [2]
Lazio [3]
Viterbo [4]
http://www.miosito.com/cartella1/car...ntoViterbo.swf [5]
Lazio [6]
Rieti [7]
http://www.miosito.com/cartella1/car...ventoRieti.swf [8]
Lombardia [9]
Milano [10]
http://www.miosito.com/cartella1/car...entoMilano.swf [11]
Lombardia [12]
Pavia [13]
http://www.miosito.com/cartella1/car...ventoPavia.swf [14]
Quello che non capisco come avviene il confronto!
A me serve che il confronto avvenga in senso orizzontale non in verticale
La funzione dovrà controllare se in ogni riga del file dati.txt ci sia una coppia di valori
corrispondenti a quelli dei campi di input se non la trova restituirà valore "0" a flash,
altrimenti restituirà valore "trovato".
Flash poi dovrà essere in grado di recuperare l'id corrispondente alla coppia regione citta positiva al confronto che contiene il link a quello specifico file swf associato a regione citta.
Ad es se inserisco nei campi di input Lombardia Milano il confronto sarà positivo per gli ID 9 e 10 e flash dovrà essere in grado di recuperare il valore dell' ID 11
Se i dati sono impilati non riesco a capire come rintraccia il link esatto.
Scusa la mia ignoranza e grazie per la pazienza!
No no, la numerazione non è quella che hai scritto.
Ti spiego cosa fa il codice che ho scritto commetandolo
Codice PHP:
$regione = trim(regione_che_arriva_da_flash);
$citta = trim(citta_che_arriva_da_flash);
$confronta = 0;
/*
$array_dati è un array di array, è fatto così
$dati_array[0] = array ( [0] => 'Lazio || Roma|| [url]www.miosito.com/cartella1/cartella2/eventofile.swf[/url]' );
$dati_array[1] = array ( [0] => 'Lazio || Viterbo || [url]www.miosito.com/cartella1/cartella2/eventofile.swf[/url]' );
$dati_array[2] = array ( [0] => 'Lazio || Rieti|| [url]www.miosito.com/cartella1/cartella2/eventofile.swf[/url]' );
...
e così via, una riga del file dati.txt per ogni entry dell'array
*/
$array_dati = file("dati.txt");
/*
ciclo sull'array $dati_array, ad ogni ciclo considera una entry, quindi:
1° ciclo -> $riga = array ( [0] => 'Lazio || Roma|| [url]www.miosito.com/cartella1/cartella2/eventofile.swf[/url]' );
2° ciclo -> $riga = array ( [0] => 'Lazio || Viterbo || [url]www.miosito.com/cartella1/cartella2/eventofile.swf[/url]' );
3° ciclo -> $riga = array ( [0] => 'Lazio || Rieti|| [url]www.miosito.com/cartella1/cartella2/eventofile.swf[/url]' );
... e così via
*/
foreach($array_dati as $riga)
{
/*
explode fa quello che hai capito tu, divide una stringa in base ad un separatore e mette le varie parti in un array
quindi ad ogni ciclo del foreach $dati viene sovrascritto con un nuovo array:
1° ciclo -> $dati = array([0] => 'Lazio', [1] => 'Roma', [2] => 'www.miosito.com/cartella1/cartella2/eventofile.swf');
2° ciclo -> $dati = array([0] => 'Lazio', [1] => 'Viterbo', [2] => 'www.miosito.com/cartella1/cartella2/eventofile.swf');
3° ciclo -> $dati = array([0] => 'Lazio', [1] => 'Rieti', [2] => 'www.miosito.com/cartella1/cartella2/eventofile.swf');
... e così via
*/
$dati = explode('||',$riga);
//ora si controlla che $dati[0] (ovvero la regione) sia pari a $regione E che $dati[1] (ovvero la città) sia pari a $citta
//ad ogni ciclo, come hai visto sopra, $dati[0], $dati[1] e $dati[2] hanno valori diversi secondo le varie righe del file dati.txt
if (trim($dati[0]) == $regione && trim($dati[1]) == $citta)
{
$confronta = "trovato";
print("&confronta=$confronta&link=".$dati[2]);
exit();
}
}
print("&confronta=$confronta")
Grazie Alhazred sei stato molto esaustivo!
Tieni presente che sono un profano in php tuttavia mi affascina molto questo tipo di programmazione. Poi gli array.... mi hai aperto un mondo!
Mettendo in pratica ciò che gentilmente mi hai scritto ho provato a realizzare il file php e txt e poi ho testato se funziona il confronto su server.
Ho creato un file in wordpad l'ho chiamato trovamedia.php ed ho inserito il tuo codice tra i tag php in questo modo.
<?php
$regione = trim(regione_che_arriva_da_flash);
$citta = trim(citta_che_arriva_da_flash);
$confronta = 0;
$array_dati = file("dati.txt");
foreach($array_dati as $riga)
{
$dati = explode('||',$riga);
if (trim($dati[0]) == $regione && trim($dati[1]) == $citta)
{
$confronta = "trovato";
print("&confronta=$confronta&link=".$dati[2]);
exit();
}
}
print("&confronta=$confronta")
?>
Ho creato sempre con wordpad il file dati.txt inserendo:
Lazio || Roma|| http://www.miosito.com/cartella1/car...eventoroma.swf
Lazio || Viterbo || http://www.miosito.com/cartella1/car...ntoviterbo.swf
Lazio || Rieti|| http://www.miosito.com/cartella1/car...ventorieti.swf
Lombardia || Milano || http://www.miosito.com/cartella1/car...entomilano.swf
Lombardia || Pavia|| http://www.miosito.com/cartella1/car...ventopavia.swf
Ho provato ad avviare trovamedia.php sul browser e per mia meraviglia mi ha risposto:
&confronta=0![]()
Immagino che il risultato sia dipeso dl fatto che non c'è stato alcun confronto pur avendo le variabili $regione e $citta valore "null" il confronto è stato fatto ugualmente.
Ho provato quindi a fare un test inserendo delle variabili manualmente in questo modo:
trovamedia.php?regione=Lazio&citta=Roma
tuttavia mi restituisce sempre
&confronta=0
dove ho sbagliato?![]()
Grazie anticipatamente per la pazienza![]()
![]()
anche se sarebbe più corretto verificare che i parametri passati in querystring siano valorizzati e del tipo che ti aspetti (isset(), empty(), ecc).Codice PHP:
$regione = trim($_GET['regione']);
$citta = trim($_GET['citta']);
Ho aggiornato il file php con i gentili suggerimenti di clasku che ringrazio.
Tuttavia il risultato è sempre lo stesso
se inserisco le variabili manualmente
trovamedia.php?regione=Lazio&citta=Roma
il risultato è sempre
&confronta=0
A flash devono arrivare una variabile confronta con valore "0" o "trovato"
e il valore della variabile link che contiene il percorso di ricerca del file swf da caricare.
Immagino che se manualmente gli do i valori giusti regione=Lazio e citta=Roma in base al codice
print("&confronta=$confronta&link=".$dati[2]);
mi sarei aspettato un risultato del genere
&confronta=trovato,http://www.miosito.com/cartella1/car...eventoroma.swf
mentre invece mi da sempre
&confronta=0
Sbaglio qualcosa?![]()
![]()
Scusate la mia poca dimestichezza in php![]()
Ho appena provato il codice e funziona, ho solo aggiunto un trim su un print perché mi sono accorto che altrimenti stampa uno spazio che non ci vuole.
lo script lo richiamo in questo modoCodice PHP:
$regione = trim($_GET['regione']);
$citta = trim($_GET['citta']);
$confronta = 0;
$array_dati = file("dati.txt");
foreach($array_dati as $riga)
{
$dati = explode('||',$riga);
if (trim($dati[0]) == $regione && trim($dati[1]) == $citta)
{
$confronta = "trovato";
print("&confronta=$confronta&link=".trim($dati[2]));
exit();
}
}
print("&confronta=$confronta");
trovamedia.php?regione=Lazio&citta=Roma
e restituisce
&confronta=trovato&link=www.miosito.com/cartella1/cartella2/eventoroma.swf
Il file dati.txt si deve trovare nella stessa cartella dello script.