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

    Filtro per un file txt stampato tramite codice php

    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

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    in pratica stai creando un file csv, quindi puoi usare la funzione:
    http://fr.php.net/manual/en/function.fgetcsv.php

    Puoi anche fare a meno di mettere il \r ti basta \n come separatore di riga.

    ciao

  3. #3
    Ciao grazie della risposta quindi nel mio caso devo fare cosi?

    <?

    $lenght = "0";
    $delimiter = "|";
    $enclosure = "."<endrecord>";
    $escape = "\n";
    $handle = fopen("http://miosito.it/file.php", "r");
    fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure [, string $escape ]]]] )

    ?>

    Cosi è corretto?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma ti serve chiudere il record con "<endrecord>\r\n"?

    io lo chiuderei semplicemente con "\n".

  5. #5
    OK,

    ma l'impostazione per fare prendere le variabili è giusta?
    perche poi ad ogni |valore|valore ecc io devo fare corrispondere una variabile che poi andro' a scrivere nel mysql

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Lenght deve essere maggiore del numero di caratteri della riga più lunga, metti un valore abbastanza alto da essere sicuro.

    enclosure è il carattere che usi per racchiudere il campo, ad esempio se crei i csv con openoffice o excel vengono creati + o - in questa forma:

    codice:
    "valore1","valore2","valore con ""apici""";
    "valore1","valore2","valore con ""apici""";
    Se non lo metti puoi ometterlo.

    escape non dovrebbe servirti.



  7. #7
    Allora io delimitatori come nel tuo esempio non ne uso. uso solamente | per delimitare un record da un'altro e alla fine /r/n
    Quindi riepilogando per fare si che lo scripts prenda i seguenti valoro esempio:

    valore1|valore2 (fine primo record) valore1|valore2 cosi sino al completamento della tabella...devo creare lo scripts in questo modo?

    $lenght = "10000";
    $delimiter = "|";
    // $enclosure = "";
    //$escape = "\n";
    $handle = fopen("http://miosito.it/file.php", "r");
    fgetcsv ( resource $handle [, int $length [, string $delimiter ]] )

    cioe quello che non capisco e come dara l'ordine alle varibili, nel senso che la struttura e di due varibili

    variabile1 = ID
    variabile2 = nome

    cosi sino alla fine dei record della tabella...ora come faccio a dire ad fgetcsv che il primo valore e ID il secondo è il nome e che tra i due ce | come delimitatore e cosi sino all'infinito quindi primo valore ID secondo valore nome e ricomincia...come faccio?

    Perche poi assengnado le variabili a questi valori io li scrivo sul mysql....quindi in poche parole come faccio tramite la funziona a dire che esempio

    $id=valore1
    $nome=valore2

    cosiche io prendo queste due variabili create $id e $nome e li scrivo nel mysql dell'altro sito

    Grazie cmq della pasienza che stai avendo con me

  8. #8
    Oppure per fare questo che voglio devo almeno delimitare i campi come nel tuo esempio?

    "valore 1"|"valore 2" /r/n "valore1"|"valore2" e cosi via?

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    guarda, secondo me per capire meglio come funziona fatti un file d'esempio con excel con 2 colonne e qualche riga.

    Esportalo in csv e leggilo con il codice d'esempio che trovi a questa pagina (http://fr.php.net/manual/en/function.fgetcsv.php), vedrai che tutto sarà più chiaro, a quel punto adatterai la cosa alle tue esigenze.

  10. #10
    ciao io il file cvs lo creo tramite uno scripts ma non è un file cvs vero e proprio praticamente quando eseguo lo scripts mi esce questo risultato:

    221|LEX 24 24|http://www.MIOSITOeu/images/duo2.bmp|http://www.MIOSITO.eu/product_info.php?products_id=221|CLIMATIZZAZIONE;ELECTRA;Gamma ON/OFF;DUO|3124.8| Climatizzatore dual Btu 24000 + 24000Condizionatore per l'estate, pompa di calore per l'invernoDuo 9-9/9-12/12-12 compatibili con unità interne OM e LX 9-12Duo 18-18/24-24 compatibili con unità interne LEX 18|ELECTRA|disponibile|-1|LEX24-24

    in ordine i file sono prodotti con questo codice:

    $filestring.=$row["products_id"]."|".$row["products_name"]."|".$site_url."/images/".$row["products_image"]."|".$site_url."/product_info.php?products_id=".$row["products_id"]."|".$cat_list."|".$final_price."|".$descrizione1. "|".$row["marca"]."|" . $row["availability"] ."|" . $shippingprice ."|" . $row["codprod"] ."<endrecord>\r\n";
    $rescount += 1;// $rescount++;

    sino a qui è semplicissimo in quanto i dati basta estrapolarli da un mysql presente sullo stesso server...ma per fare il procedimento inverso? per avere un file cvs ed estrapolare i dati nello stesso ordine di cui sono creati?

    Ho letto gli esempi che mi hai postato tu...ma purtroppo non c'ho capito un gran che' in tal caso è possibile parlare tramite un msn messenger o qualcosa del genere?

    Ti ringrazio tantissimo

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.