PDA

View Full Version : [PHP] Filtro dati


ilbiondo1900
29-10-2008, 01:15
Ciao a tutti,
ho creato un file per mie esigenze che prende dei dati da un mysqle li formatta tramite un file php in del testo che come delimitatore ha il simbolo "|". Mi spiego meglio facendo un esempio.

Ho creato un file eseguibile es: www.miosito.it/generatoretxt.php

questo file contiene il seguente codice (la parte interessata)

$filestring.=$row["tabella1"]."|".$row["tabella2"] ."<endrecord>\r\n";

Quando io eseguo questo scripts su internet explorer mi viene stampato il contenuto del mysql sotto questa forma:

contenuto tabella numero 1|contenuto tabella numero 2| poi questo file ricomincia da capo in quanto sono presenti piu dati di una stessa tabella quindi si avrebbe come risultato finale una cosa del genere:

contenuto tabella numero 1|contenuto tabella numero 2| contenuto tabella numero 1|contenuto tabella numero 2| contenuto tabella numero 1|contenuto tabella numero 2|

ecc ... sino al completamento dei dati di questa tabella.
Adesso il mio dilemma che mi sta facendo passare nottate intere senza trovare una soluzione è il seguente.
Come faccio tramite un'altro file php presente su un sito secondario esempio www.miosito2.it a far si che:
- Eseguo un file php sul www.miosito2.it
- QUesto file php va a leggere il contenuto del file tabulato del sito www.miosito.it tramite il file generatoretxt.php
- Il file eseguito sul sito www.miosito2.it filtra i file in modo tale che per ogni | indentifica una variabile X che verra' scritta nel database sql del sito www.miosito2.it

Quindi in poche parole...come faccio a far si che un file php legga un file che come tabulazione ha | e come fine della tabulazione abbia uno spazio prodotto dal codice \r\n in modo tale che per ogni | corrisponda una variabile X che poi possa essere scritta nel mysql.

Spero di essermi spiegato correttamente....ringrazio tutti coloro che mi aiuteranno perche sto veramente uscendo fuori di testa.

Vi ringrazio

kk3z
29-10-2008, 12:36
Ma non fai prima a creare direttamente le query per inserire i dati nell'altro database?
$tabelle = array("tabella1", "tabella2");
foreach($tabelle as $tabella)
{
$columns = array();
$res = mysql_query("SHOW COLUMNS FROM $tabella");
while ($row = mysql_fetch_assoc($res))
$columns[] = $row['Field'];

$res = mysql_query("SELECT * FROM $tabella");
while ($row = mysql_fetch_assoc($res))
{
$row = array_map("mysql_real_escape_string", $row);
printf("INSERT INTO $tabella %s VALUES('%s')",
implode(",", $columns), implode("','", $row));
}
}

o anche meglio, potresti chiamare mysqldump:
mysqldump -u[username] -p[password] --database=[nome_database]

Il tuo metodo poi ha qualche problema:
1) che succede se il "contenuto" di una tabella contiene uno |?
2) se una tabella ha meno record dell'altra?

ilbiondo1900
29-10-2008, 13:03
Ciao,
ovviamente in nessun modo ci sara' inserito il carattere | nelle tabelle, ma a me serve senza usare il mysql di accesso esterno..perche dove prendo il webhosting ha mysql solo in locale e non ti permettono di farlo accedere all'esterno..quindi è possibile creando un file delimitato da | o altro carattere fare in modo che i dati vengano estrapolati e scritti nel ysql dove viene fatta la richiesta?

malocchio
29-10-2008, 22:40
Se hai qualche modo per accedere a robe del tipo phpMyAdmin oppure dump del database fai con quello.

Altrimenti, sul sito 2 devi usare le librerie cURL (http://it2.php.net/manual/it/book.curl.php) e la funzione explode() (http://it2.php.net/manual/it/function.explode.php)

Non ho ben capito se il tuo dubbio era veramente questo

ilbiondo1900
29-10-2008, 23:13
ho risolto con fgetcsv grazie a tutti