- Home
- Categorie
- Coding e Sistemistica
- Coding
- Recupero di variabili prima di inserirle nel db
-
Recupero di variabili prima di inserirle nel db
Ciao a tutti, spero sia il posto giusto per postare il mio problema.
Ho un file xml da cui leggo i vari punti:
foreach($xml->trk as $part) { foreach ($part->trkseg->trkpt as $point) { $point ['lat']; $point ['lon']; $point ['time']; $point->ele; //Qua ci sarebbe la query per inserire i dati nel db } }
Dovrei selezionare i 2 punti che hanno il time minore e maggiore, posso farlo a priori prima di inserirli nel database?
Se così fosse non avrei bisogno di popolare il db con una miriade di dati...
Grazie in anticipo!
-
Ciao allora vuoi leggere dei dati da questo file xml ed inserire solo i 2 record col time minore, ho capito giusto?
Se è cosi basta che crei due variabili a cui assegni i primi 2 record xml, poi basta che li confronti nl ciclo foreach e aggiornandoli se è il caso
Spero che ti sono stato d'aiuto
-
Ciao e grazie, i record però sono quello che hanno il campo time più piccolo e più grande.
Con il database facevo così: li inserivo tutti e poi con una query tiravo fuori il più grande facendo:
SELECT time FROM
database
.TRK
ORDER BY TIME ASC LIMIT 1per il più piccolo e poi
SELECT time FROM
database
.TRK
ORDER BY TIME DESC LIMIT 1per il più grande.
-
Prova in questo modo:
[php]
$t_min = $t_max = null;foreach(...)
{
foreach(...)
{
$t_min = (is_null($t_min) || ($point['time'] < $t_min)) ? $point['time'] : $t_min;
$t_max = (is_null($t_max) || ($point['time'] > $t_max)) ? $point['time'] : $t_max;
}// Invio $t_min $t_max al DB
}
[/php]Le variabili $t_min e $t_max contengono rispettivamente, i valori minimi e massimi dei tempi.
Ciao!
-
ti ringrazio, ho provato ma i valori non vengono presi, ho provato anche con echo ma niente..
-
Puoi postare il codice che comprende le query al db?
-
$xml = simplexml_load_file('prova.gpx'); $date = $xml->trk->trkseg->trkpt->time; foreach($xml->trk as $part) { foreach ($part->trkseg->trkpt as $point) { $point ['lat']; $point ['lon']; $point ['time']; $point->ele; mysql_unbuffered_query("INSERT INTO TRK (latitude, longitude, time, altitude, date) VALUES ('$point[lat]', '$point[lon]', '$point->time', '$point->ele', '$date')", $conn); } }
-
Se nell'inserimento dei dati nella query usi $point->time per il campo time, allora nel codice che ti ho postato metti $point->time al posto di $point['time'].
-
Ti ringrazio ma non va lo stesso...