icon
Avatar
zod
Post: 217
Ciao ragazzi, è da un po' che non bazzico nel forum, ho un sacco di lavoro arretrato :blush: .
Oggi mi sono scontrato con un problemino... anzi problemone, ho dovuto importare 163 annunci immobiliari dentro al mio Catalog preparato appositamente.

Tutto bene, il CSV si importa con tutti i campi semplici, che sono ID della Taxonomy, campi testo, campi testo esteso... quindi al 90% sono a posto, ma il guaio ce l'ho con il campo "immagini", il quale è un tipo file multipli, che Contao salva in un unico record, come array, e cioè se fossero 4 immagini così:

iconCodice:
a:4:{i:0;s:23:"tl_files/immobili/2.jpg";i:1;s:23:"tl_files/immobili/3.jpg";i:2;s:23:"tl_files/immobili/4.jpg";i:3;s:23:"tl_files/immobili/8.jpg";}


Ho copiato pari pari questo format da un Export dello stesso Catalog, senza capire in effetti il significato del numero 23 ad esempio... cmq per il resto è intelligibile, quindi mi sono concatenato le colonne nel foglio di calcolo manipolando appositamente per ottenere quel tipo di risultato per le 4 immagini (in colonne diverse) che avevo. Ovviamente poi ho copiato la colonna risultante come solo testo (non come formula).

Purtroppo il CSV si importa, ma senza questo campo. Ho sospettato che fosse a causa delle doppie virgolette ed ho provato a mettere gli escape sia così \" che così "" o addirittura triplo """. Niente da fare. Ho provato singoli apici, non si importa proprio.
Come devo fare? :( ... grazie.
Marco Damian
www.zod.it
29/01/2014 22:51
Avatar
paolob
Moderatore
Post: 1550
Si tratta del comando serialize di PHP
23 ad esempio è la lunghezza della stringa "tl_files/immobili/2.jpg"

Fai una prova con i comandi serialize e unserialize
Paolo B.
paolob@contaocms.it
29/01/2014 23:42
Avatar
zod
Post: 217
Il mio problema Paolo è che non posso mandare comandi php mentre sto passando un CSV.

L'import di Catalog penso prenda il file, faccia un parsing, e inserisca i valori nella tabella MySql definita... tutto questo in modo ignorante, o interpreta anche php?

Cioè posso io mettere in CSV un codice tipo:

iconCodice:
serialize ("foto1.jpg", "foto2.jpg");
Marco Damian
www.zod.it
30/01/2014 14:48
Avatar
paolob
Moderatore
Post: 1550
era solo per indicarti come "leggere" quella stringa.
Poi il csv te lo puoi fare a mano...

Ma l'import è una tamtum oppure in modo regolare. Se è una tampum, potresti anche fare uno script php che ti popola la tabella.
Io tempo fa ho fatto uno script di import da un sito wordpress :)
Paolo B.
paolob@contaocms.it
30/01/2014 14:54
Avatar
zod
Post: 217
Si grazie per le indicazioni, sono sempre utili.

L'import è solo una tantum, però se non riesco a cacciare queste immagini dovranno smazzarle a mano editando tutti gli annunci inseriti.
Cmq ora che mi hai chiarito anche il serialize, capisco che avrei problemi anche nel conoscere la lunghezza della stringa, il famoso "23"... servirebbe un calcolo, quindi in pratica dovrei fare tipo:
- un csv con le 4 colonne.
- un php ad hoc che prende il csv, e fa un ciclo per manipolare le 4 immagini di ogni riga aggiungendo i vari pezzi per fare la stringa serializzata, infine caricare in DB.

Boh... mai fatto robe del genere, la vedo dura. :-/
Marco Damian
www.zod.it
30/01/2014 17:03
Avatar
paolob
Moderatore
Post: 1550
Ma i dati di partenza come li hai?
Paolo B.
paolob@contaocms.it
30/01/2014 22:41
Avatar
zod
Post: 217
Ho un db mysql ma i record sono diversi, quindi mi sono esportato tutto in CSV, ma devo normalizzarlo, non posso tirarlo dentro Catalog come sta, quindi devo aprirlo in Excel o Calc (come preferisci) per elaborarlo.
In pratica faccio:
  1. rinomine delle colonne
  2. spostamento di ordine delle colonne
  3. correzione certi caratteri speciali, maiuscole, minuscole eccetera...
  4. conversione di stringhe testo in numeri corrispondenti alla mia taxonomy, esempio rimpiazzo tutto ciò che nella colonna è "VENDITE" in "16", che è il mio ID
  5. path immagine elaborato affinché corrisponda al mio nuovo path in Contao
  6. immagini aggiuntive, idem, ma sono tante in un campo mentre in origine ho 5 colonne diverse, una l'ho già usata per l'immagine princpale (punto precedente), le altre 4 devo concatenarle, in una stringa serializzata, per darla in pasto a Contao/Catalog, che ha quel tipo di campi multi file.


In pratica tutto è andato bene al 99%, il resto viene importato liscio... eccetto questo campo strano delle immagini.
Marco Damian
www.zod.it
01/02/2014 16:00
Avatar
paolob
Moderatore
Post: 1550
Visto che hai di dati in un db, io mi sarei fatto uno script semplice semplice che legge i dati, li normalizza come li vuole catalog e poi li scrive nella sua tabella.
In questo modo puoi utilizzare il comando serialize di cui parlavamo
Paolo B.
paolob@contaocms.it
01/02/2014 21:32
Avatar
zod
Post: 217
Hai ragione, ho voluto usare l'importazione CSV di Catalog ma non va bene per i dati serializzati.
Purtroppo non faccio spesso PHP di questo tipo, per te è semplice ma non per me, dovrei mettermi con la calma a preparare la paginetta... non ce la farò mai... :D
Marco Damian
www.zod.it
02/02/2014 15:17
Avatar
ga.n
Post: 109
Non hai bisogno di farti una "pagina" :-) va bene anche uno script da linea di comando.

Come base per la creazione del csv puoi partire da qui:

https://gist.github.com/intco/8766469

spero ti sia utile, uso spesso questo sistema per gestire importazioni da fonti diverse che devono convergere in un unico csv.
03/02/2014 09:36
icon