Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

PHP

Hai problemi con i file Zip, vuoi formattare l'HD, non sai come funziona FireFox? O magari ti serve proprio quel programmino di cui non ricordi il nome! Ecco il forum dove poter risolvere i tuoi problemi.

Moderatori: Dylan666, hydra, gahan

PHP

Postdi feno » 06/03/03 18:08

Premessa ne so poco di html e ancora meno di php!!!!!

Sto cercando di imparare a programmare le pagine web con php e soci (apache, mysql...).
Per il momento mi sono installato tutto in locale e ho iniziato a partorire le prime paginette.
Il mio obiettivo è quello di avere una pagina che legge un file .txt e in output (sul web) mi dà il contenuto del file stesso ordinato per benino in una tabella (tabella grafica, non tabella di database).

Il codice che ho usato è:
<?
$fp = fopen("fen.txt", "r");
while(!feof($fp))
{
$riga = fgets($fp, 100);
$rutto = nl2br($riga);
echo $rutto;
}
fclose($fp);
?>


ed effettivamente ottengo quello che voglio, il problema è che mi perdo tutte le tabulazioni che c'erano nel file txt


questo è quello che esce

10004 CAPOCORDA OCCHIELLOROSSO SEZ.CAVO 0,3-1, 10 NR


tra 10004 e capocorda c'era una tabulazione, lo stesso dalle altre parti.
Il file contiene delle info sui materiali presenti a magazzino (codice materiale, descrizione, quantità presente...) ma non riesco a metterle in output in una tabella.
Io vorrei una tabella con i bordi, i margini e tutto quanto nella pagina web che appare (non in un db).
Come posso fare?

Conoscete un buon sito da cui io possa imparare bene a fare tutte queste cose? Uso google ma c'è un eccesso di info e mi perdo...

Grazie
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Sponsor
 

Postdi pjfry » 06/03/03 18:27

conoscerai già il sito http://www.php.net , immagino... sennò guardalo, ci sono i manuali anche in italiano
hai provato a fare l'echo di $riga invece che di $rutto :lol: ?
forse è nl2br che oltre a fare quello che dovrebe converte i tab in spazi...
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi KID.A » 06/03/03 18:30

ma, anchio sono 1 neofita in materia (sto imparando)

mi sembra che alcuni siti che ti possono tornare utili siano:

http://freephp.html.it
http://www.lato-server.it (ci trovi pure manuale php, mysql...etc)
http://www.mysql.com
http://www.phpcenter.it/project/index.php

questo software, non so se c'entra con le tue specifiche esigenze:
http://www.cinic.it/software/php-dbtext/

ciao

cmq fammi sapere, perché anch'io sono qui x imparare....ogni sugggerimento e indicazione è preziosa!
KID.A
Utente Senior
 
Post: 662
Iscritto il: 27/05/02 17:35

Postdi feno » 06/03/03 18:32

sì l'ho visto ma di sfuggita se mi dici che è un buon sito me lo guardo con più attenzione. Vorrei una guida, corso, manuale che mi guidi passo passo. Ho iniziato con html.it ma adesso mi va un po' strettino...

se non metto nl2br non va neanche a capo e mi mette tutto affiancato, e comunque senza tabulazioni.
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Postdi feno » 06/03/03 18:37

Kid, il problema è che il file che ho è un txt. Mi sembrerebbe esagerato prendere tutte le righe e metterle in un db per poi estrarle ma se mi dite che così funziona lo faccio.

Il sw che mi hai segnalato se ho capito serve per la gestione dei db se non hai mysql o simili, non è questo il mio caso: posso usare benissimo mysql se questo risolve il problema.

Grazie
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Postdi pjfry » 06/03/03 19:19

potresti fare così:
ti crei un db in mysql che rispecchia il formato del file txt, da quello che ho visto potrebbe bastare una sola tabella con vari campi (il numero di campi deve essere uguale al numero di elementi che trovi in una riga) nello stesso ordine che hai nel txt
puoi importare i dati dal txt al db con un semplice comando di mysql che non mi ricordo, ma dovresti trovarlo nel manuale, a cui devi dire che il divisore tra i vari campi è tab e il divisore tra le righe è \n (newline)
una volta che hai i dati in mysql è facile farci qualunque cosa tramite php, basta che impari un minimo di sql ;)
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi Triumph Of Steel » 06/03/03 19:43

io se vuoi ho un codice PHP che legge un file TXT creato da

netstat -a > nome_file.txt

praticamente lancia il comando netstat, creando un file.. e successivamente legge il file.
il file creato da netstat è un file in tabulazioni...

ho usato il comando PHP "strtok" ...
però okkio.. questo comando separa ogni parola usando come separatore lo spazio.. quindi se hai un nome che ha degli spazi.. credo che non funzioni più.. del tipo

Codice: Seleziona tutto
Nome           Cognome           Indirizzo
ThoR            The Mighty          Midgard


già il cognome viene diviso credo...
se vuoi dargli un occhio... fammi sapere...

al max, cerca su php.net il comando "strtok", e vedi se ci sono degli alias che fanno al caso tuo!
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi Frengo78 » 07/03/03 00:24

Non conosco il php ma la soluzione mi sembra semplice.

-> Crei un file separando con dei pipe ogni elemento della tua tabella
-> in asp c'è una comodissima funzione (split) che restituisce un array da una variabile di tipo stringa dato un carattere. Per cui splittando in base al pipe una stringa del tipo:
Codice: Seleziona tutto
Nome|cognome|indirizzo|Thor|the myghty|Midgard|Frengo78||Torino

Otterresti un array fatto in questo modo:
Codice: Seleziona tutto
Nome
cognome
indirizzo
Thor
the myghty
Midgard
Frengo78

Torino


Ottenuto l'array non rimane che tirar fuori la tabella per cui dovrai inserire i tag <table><tr> e a questo punto ciclare ogni elemento dell'array sputandolo fuori insieme ad un <td> all'inizio e un </td> da piedi. Ogni 3 elementi dopo il td ci aggiungi un </tr><tr> e azzeri il contatore.
E il gioco è fatto!
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi Triumph Of Steel » 07/03/03 01:01

Frengo, bisogna vedere se il file di testo è creato a mano, o autmaticamente da un programma...

altrimenti certo che è più semplice...
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi pjfry » 07/03/03 01:27

beh se invece del pipe c'è un tab si potra fare comunque,no? al limite prendi il txt e cambi tutti i tab in |
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi Frengo78 » 07/03/03 02:03

Ovviamente TOS però non è mai stato detto che il file non viene generato a mano. Prima di arrovellarci proviamo con le cose semplici
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi feno » 07/03/03 09:08

Il file nasce da SAP ma non credo che ci siano problemi a farlo uscire con dei pipe (cosa sono ? questi?||)
Sinceramente Frengo non ho capito molto di questo

Ottenuto l'array non rimane che tirar fuori la tabella per cui dovrai inserire i tag <table><tr> e a questo punto ciclare ogni elemento dell'array sputandolo fuori insieme ad un <td> all'inizio e un </td> da piedi. Ogni 3 elementi dopo il td ci aggiungi un </tr><tr> e azzeri il contatore.


I tag vanno messi nel codice php o in quello html?

TOS grazie provo ad usare strtok.
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Postdi Frengo78 » 07/03/03 09:20

Codice: Seleziona tutto
' l'intero contenuto del tuo file è contenuto è stato messo in una variabile di tipo stringa chiamata MyValues

<%Myvalues = split(myvalues, "|")

 response.write("<table><td>")
n=1
for each item in myvalues

      response.write("<td> + item + </td>
     
      if n=3
           response.write("</tr><tr>")
           n=0
      end if

      n = n + 1

next

response.write("</tr></table")%>



Questo, eventuali errori a parte è cio che io farei in asp

il doppio pipe sta ad indicare un elemento con nessun contenuto. Difatti nell'esempio che ho fatto non ho inserito nessun cognome per me stesso quindi l'elemento ci sarà comunque altrimenti si perderebbe l'allineamento nella tabella
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi Frengo78 » 07/03/03 09:24

i tag puoi infilarli sia nel codice php che nel codice html. io per il mio codice asp ho scelto di infilarli direttamente nello script asp per evitare di aprire e chiudere continuamente i tag asp. Credo che questa scelta renda anche la pagina piu veloce.
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi Triumph Of Steel » 07/03/03 19:44

In PHP è + o meno lo stesso..

Codice: Seleziona tutto
$content = split("|",$contenuto_file);

// $content diventa un array, del tipo
$content[0] = primo valore
$content[1] = secondo valore

// codice di esempio da file
// source: www.php.net

$fname="relatedlinks.csv";
 $fp=fopen($fname,"r") or die("Error found.");
 $line = fgets( $fp, 1024 );
while(!feof($fp))
 {
   list($desc,$url,$dummy) = split( ",", $line, 3 );
   print "<li>";
  print "<a href='$url'>$desc</a>";
   print "</li>\n";
   $line = fgets( $fp, 1024 );
 }
fclose($fp);


ciuz!
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi feno » 10/03/03 09:10

Io l'ho risolta così:

Codice: Seleziona tutto
<html>
<?
// creo la tabella in html e la riga di intestazione
echo '<table border="3" cellpadding="0" width="100%" cellspacing="0">';
echo "<tr align=\"center\" bgcolor=\"#B6F3BD\"><td><b>CODICE</b></td><td><b>DESCRIZIONE</b></td><td><b>QUANTITA'</b></td><td><b>UDM</b></td></tr>";
//apro il file
$fp = fopen("fen2.txt", "r");
$i = 1;
while(!feof($fp)) // Finchè il file non è finito
{
$riga = fgets($fp, 100); // Legge ogni riga
// esplodi la riga in corrispondenza delle tabulazioni comando explode
list ($codice, $descrizione, $quantita, $udm) = explode ("\t", $riga);
// metto le variabili nella tabella che ho creato if serve per dare colori diversi alle righe
if ($i == 1) {
echo "<tr bgcolor=\"#FFFFAE\">";
$i = 2;
} else {echo "<tr bgcolor=\"#E6E6FF\">";
$i = 1;
}
echo "<td>$codice</td><td>$descrizione</td><td>$quantita</td><td>$udm</td></tr>" ; // E la visualizza
}
fclose($fp);
echo '</table>';
?>
</html>


e funziona.
La funzione fondamentale è Explode!

Sono pronto ad altre sfide adesso....
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy


Torna a Software Windows

Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti

cron