View Full Version : [PHP] Progetto ambizioso (almeno per me :D)
stefanoxjx
06-04-2010, 20:00
Ciao a tutti, vorrei fare una cosa che per le mie conoscenze di php (prossime allo zero) è molto ambiziosa :D
Vorrei farlo perchè mi serve/servirà e per imparare un po' di php.
Ho letto già qualcosa ma non ho mai messo in pratica.
Quello che dovrebbe fare lo script è:
1. Scaricare un listino in formato html da un link
2. Fare un controllo dei contenuti
3. In base a quello che trova andare ad inserire o modificare i dati in un database mysql.
Secondo voi è fattibile?
Grazie.
lupoxxx87
06-04-2010, 21:00
come fa un listino ad essere in formato html ?
vuoi dire una tabella con tag html ?
stefanoxjx
06-04-2010, 21:20
come fa un listino ad essere in formato html ?
vuoi dire una tabella con tag html ?
Io so che mi devono dare un link da dove escono delle pagine html che visualizzano il listino, quindi io dovrei scaricarlo e controllare riga per riga tirando fuori le info che mi servono.
bobbytre
07-04-2010, 00:49
Ciao a tutti, vorrei fare una cosa che per le mie conoscenze di php (prossime allo zero) è molto ambiziosa :D
Vorrei farlo perchè mi serve/servirà e per imparare un po' di php.
Ho letto già qualcosa ma non ho mai messo in pratica.
Quello che dovrebbe fare lo script è:
1. Scaricare un listino in formato html da un link
2. Fare un controllo dei contenuti
3. In base a quello che trova andare ad inserire o modificare i dati in un database mysql.
Secondo voi è fattibile?
Grazie.
Si, direi che è fattibile , ma è necessario un po di lavoro,
per prima cosa devi analizzare il file html , devi capire quale informazioni ti interessa estrapolare e come si trovano dentro il file,
ad esempio se il listino è strutturato con delle tabelle , si potrebbe trovare nella prima colonna di ogni riga la marca, nella seconda il prodotto e nella 3^ il prezzo,
quindi dovrai scrivere in php il tuo parser personale , che vada a prendere all'interno di tutto il file solo la tabella interessata (<table>...</table>) dalla tabella prendere ogni riga ( <tr>...</tr> ) e che poi dalla riga estragga i valori che ti interessano ( <td>marca</td><td>prodotto</td><td>prezzo</td>)
una volta che hai tutti i valori puoi fare quello che piu ti aggrada , metterli in un database , crearti una nuova pagina web , ecc... ecc... ,
questo se i dati si trovano dentro delle tabelle , se invece è realizzata con altri metodi , dovrai analizzarli e cercare di capire lo schema ( potrebbero essere dei <div> dentro altri <div> o <span> )
^TiGeRShArK^
07-04-2010, 00:52
:Puke:
piuttosto che farlo in php lo farei a mano. :Puke:
Se è davvero quello che devi fare con ruby + mechanize lo fai in max un paio d'ore se sai già programmare. :p
stefanoxjx
07-04-2010, 08:19
Si, direi che è fattibile , ma è necessario un po di lavoro,
per prima cosa devi analizzare il file html , devi capire quale informazioni ti interessa estrapolare e come si trovano dentro il file,
ad esempio se il listino è strutturato con delle tabelle , si potrebbe trovare nella prima colonna di ogni riga la marca, nella seconda il prodotto e nella 3^ il prezzo,
quindi dovrai scrivere in php il tuo parser personale , che vada a prendere all'interno di tutto il file solo la tabella interessata (<table>...</table>) dalla tabella prendere ogni riga ( <tr>...</tr> ) e che poi dalla riga estragga i valori che ti interessano ( <td>marca</td><td>prodotto</td><td>prezzo</td>)
una volta che hai tutti i valori puoi fare quello che piu ti aggrada , metterli in un database , crearti una nuova pagina web , ecc... ecc... ,
questo se i dati si trovano dentro delle tabelle , se invece è realizzata con altri metodi , dovrai analizzarli e cercare di capire lo schema ( potrebbero essere dei <div> dentro altri <div> o <span> )
Questo l'ho già fatto, nel senso che ho visto che la riga di descrizione inizia sempre con un modPL, quella della quantità con un sohPL e quella del prezzo con un prcPL.
Quello che non so fare è come dire allo script php di scaricare il listino tramite il link e poi come leggerlo, o meglio, per leggerlo ho visto che esiste la funzione fopen però (devo ancora approfondire) ma non ho visto nessuna istruzione tipo readline che legge una riga intera alla volta.
Direi che la parte del parser sia la più semplice (almeno per me), mi mancano gli input per fare il resto :(
stefanoxjx
07-04-2010, 08:22
:Puke:
piuttosto che farlo in php lo farei a mano. :Puke:
Se è davvero quello che devi fare con ruby + mechanize lo fai in max un paio d'ore se sai già programmare. :p
Il problema è che sto lavorando con dei siti scritti in PHP e quindi mi fa anche comodo imparare un po' questo linguaggio di scripting.
Inoltre lo script va lanciato da remoto in un webserver e non so se ruby è supportato o no ma a parte questo, se non avessi avuto l'esigenza di farlo in php l'avrei fatto in C, Visual Basic o Gambas che già conosco discretamente bene.
RagingBull
07-04-2010, 11:18
Domanda:
ma non era meglio farsi mandare questi listini in formato XML? c'avresti messo la metà del tempo per fare tutto.
stefanoxjx
07-04-2010, 13:35
Domanda:
ma non era meglio farsi mandare questi listini in formato XML? c'avresti messo la metà del tempo per fare tutto.
Non è una cosa che posso decidere io, inoltre i listini sono online perchè aggiornati con prezzi e quantità in tempo reale, quindi non si può parlare di farseli mandare ma bisogna più volte al giorno scaricare il listino e aggiornare prezzi e quantità disponibili sul mio database.
stefanoxjx
21-04-2010, 15:48
Eccomo ancora qui......
Ho per il momento deviato verso un altro progetto che farebbe la cosa opposta :D
Devo leggere un database ed esportare alcuni campi in formato cvs.
Questo al momento non è un problema, nel senso che ho già fatto la parte di codice che si connette al database e (momentaneamente) mi fa vedere a video la lista dei record.
Il prossimo passo sarà quello di scrivere questa lista in un file nel formato corretto per un cvs.
Siccome (come sempre) le informazioni sono suddivise in più tabelle e i vari campi fanno riferimento ad numero indentificativo, prima di fare tanto lavoro per niente volevo sapere se con mysql la relazione tra tabelle si può fare in automatico oppure se devo gestire il tutto manualmente tramite if di quà e if di la :D
Grazie.
lupoxxx87
21-04-2010, 16:50
cosa intendi con "relazione tra tabelle" ?
stefanoxjx
21-04-2010, 18:41
cosa intendi con "relazione tra tabelle" ?
Nel senso che se nella tabella prodotti c'è un campo che si chiama id_categoria che è uguale a 5 e nella tabella categorie io devo tirare fuori la descrizione del record che ha l'id=5, devo farlo tutto manualmente (quindi tramite if/switch o quello che può essere) o esiste un modo di farglielo fare in automatico?
bobbytre
21-04-2010, 18:48
le relazioni tra le tabelle si realizzano per lo piu con JOIN
khelidan1980
21-04-2010, 18:59
Nel senso che se nella tabella prodotti c'è un campo che si chiama id_categoria che è uguale a 5 e nella tabella categorie io devo tirare fuori la descrizione del record che ha l'id=5, devo farlo tutto manualmente (quindi tramite if/switch o quello che può essere) o esiste un modo di farglielo fare in automatico?
certo che lo fa, o meglio credo che con le ultime versioni abbiano finalmente implementato l'integrità referenziale, il punto è, se il db non è tuo se i creatori hanno implementato sta cosa oppure no a livello di db
stefanoxjx
21-04-2010, 19:45
certo che lo fa, o meglio credo che con le ultime versioni abbiano finalmente implementato l'integrità referenziale, il punto è, se il db non è tuo se i creatori hanno implementato sta cosa oppure no a livello di db
Il database è quello di zencart, però non so dirti se l'integrità referenziale è stata implementata oppure no :(
Per vedere se è implementata l'integrità referenziale basta fare una prova: se ti fa inserire nel campo id_categoria un valore non presente nella tabella delle categorie, allora non è implementata, altrimenti se ti dà errore vuol dire che ci sono dei controlli.
stefanoxjx
22-04-2010, 13:40
Per vedere se è implementata l'integrità referenziale basta fare una prova: se ti fa inserire nel campo id_categoria un valore non presente nella tabella delle categorie, allora non è implementata, altrimenti se ti dà errore vuol dire che ci sono dei controlli.
Ti ringrazio della dritta, ma ho deciso che per non incasinarmi troppo mi gestisco la cosa manualmente.
Ho troppe cose nuove in ballo ed un lavoro da finire, quindi questa volta devo prendere una scorciatoia :)
stefanoxjx
06-05-2010, 19:32
Sempre io :)
Avrei bisogno di una dritta :(
Devo stampare (per il momento a video ma poi sarà in un file) la stringa <endrecord>.
Il problema è che con php il fatto di racchiudere endrecord tra <> fa in modo che venga interpretato come tag html e quindi non mi stampa nulla.
La riga incriminata sarebbe questa echo ("<endrecord>"); che ho provato a scrivere anche così echo ("\<endrecord\>"); ma senza risultati incoraggianti :(
Come posso risolvere questo problema?
Grazie.
Ciao.
stefanoxjx
07-05-2010, 08:40
htmlentities
Grazie :)
stefanoxjx
07-05-2010, 18:46
E rieccomi ancora :D
Scusatemi ma dove non riesco a trovare soluzioni googlando, devo per forza di cose chiedere aiuto :(
Mi servirebbero un paio di info ierenti a questo codice:
echo "<select size=\"20\" multiple>";
while($record=mysql_fetch_array($result)){
printf ("%-50.40s | %-.15s", desc_nomeprodotto($dbname, $id_ita, $record[0]), desc_categoria($dbname, $id_ita, $record[28]));
echo "<option>" . $a;
}
echo "</select>";
Allora, prima domanda:
Dovrei fare in modo di riuscire a mettere 3 o 4 campi nella listbox che però vorrei mettere ben incolonnati per poterla rendere più leggibile, però come potete vedere ho provato a smanettare anche un po' con le formattazioni di printf ma i risultati non ci sono stati :(
Seconda domanda:
Questa mi è venuta per caso ma non ho capito il perchè :eek:
Guardando la riga echo "<option>" . $a; volevo chiedere da dove $a prende il valore della stringa generato dalla riga prima printf ("%-50.40s | %-.15s", desc_nomeprodotto($dbname, $id_ita, $record[0]), desc_categoria($dbname, $id_ita, $record[28]));
All'inizio avevo messo $a=printf..... ma mi scriveva una serie di numeri nella listbox, poi sbadatamente ho tolto lo $a da quella riga ma l'ho lasciato su quella seguente e miracolosamente funziona lo stesso ma non riesco a capire.
Se mi poteste aiutarmi possibilmente senza mandarmi a quel paese vi sarei molto grato :stordita:
Grazie.
Ciao.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.