Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

MYSQL

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

MYSQL

Postdi feno » 13/03/03 10:39

Ed eccomi di nuovo a voi von un nuovo quesito.
Nel primo topicavevo bisogno che php leggesse un file di testo e me lo sputasse fuori tutto bello ordinato.
Nel secondo topicphp doveva leggere il file di testo e inserirlo nella tabella del db mysql e poi leggere i dati dalla tabella e sputarlo fuori tutto ordinato. Questa procedura fa così:
-cancella i valori nella tabella
- legge il file
- carica le varie righe nella tabella
- legge i dati dalla tabella e la sputa fuori nell'html.
Il problema è che a leggere il file ci vuole parecchio tempo (circa 20.000 record da inserire) quindi ogni volta che apro la pagina passano circa due minuti con la scritta in basso su ie "apertura pagina..."

TERZO EPISODIO:
Siccome il mio file di testo si aggiorna automaticamente 2 volte al giorno è possibile in mysql far si che il la tabella si aggiorni automaticamente ogni qual volta la data del file cambia? senza che lo faccia il codice php della pagina iniziale?
Cià

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

Sponsor
 

Postdi Frengo78 » 13/03/03 11:14

Non so se è possibile verificare la data del documento ma potresti aggirare il problema scrivendo all'inizio del file di testo un numero di "versione" da confrontare con un valore che immagino tu metterai nel db. se versione del db e versione del file sono identici non proseguire la lettura del file

Ah, se ci fosse un quarto un quinto e un sesto problema continua di seguito in questo topic non aprirne altri
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi pjfry » 13/03/03 11:41

secondo me dovresti separare la visualizzazione dall'immissione dei dati...
cioè quando apri la finestra per la visualizzazione dovresti far vedere solo i dati presenti nella tabella, e magari schedulare l'aggiornamento della tabella a intervalli regolari ( mi pare di aver capito che il file non cambia a caso, ma in momenti prestabiliti)
cmq in php credo che ci sia un comando per sapere la data dell'ultima modifica ad un file, e probabilmente anche mysql sà dirti a che ora è stata modificata l'ultima volta una tabella
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi Nicola » 13/03/03 14:42

con una breve ricerca su php.net non ho trovato la funziona della data del file putroppo ... quindi credo che si debba schedulizzare e creare una stringa sul DB con la versione... ;)
Nicola
Nicola
Utente Senior
 
Post: 7381
Iscritto il: 08/02/02 01:00

Postdi pjfry » 13/03/03 15:26

http://www.php.net/manual/it/function.filemtime.php per esempio c'è questa, se il file è sul server può andare... cmq non dovrebbe essere difficile da fare a mano come dice nicola
IMHO l'importante è che quando apri la pagina php capisca se la tabella è aggiornata o no così da non ricrearla da capo ogni volta... è a questo che serve avere i dati in mysql, sennò potevi lavorare da subito con il file di testo,no?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi piercing » 14/03/03 00:56

fai uno script VBS o JS e schedulalo nello schedulatore dei processi... eventualmente il file VBS o JS può essere scritto anche dallo stesso script in php (se ad esempio devi impostare delle variabili che cambiano ogni giorno).

Ovviamente se il server è microsoft e puoi averci accesso...
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi Triumph Of Steel » 14/03/03 08:51

... se invece il sistema è linux, puoi provare ad usare dei CronJob (ma per questo ti rimando al forum Linux xchè io non ci capisco molto heheh)
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi feno » 14/03/03 09:03

il server è nella stanza accanto a quella in cui sono adesso quindi non c'è problema ad accedervi, il sistema è W2000server con IIS. Speravo di riuscire ad evitare una schedulazione ma se è inevitabile...

Altro problema. Adesso funziona abbastanza bene tranne per il fatto che quando apro una seconda pagina php (nella prima c'è un form che serve a restringere il numero di output) appare una pagina bianca con questo messaggio:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


cosa significa? ho provato a cercare un po' su php.net e ho trovato una risposta ma non l'ho capita... parlava di pws... mah...
Aiuuto....
Cià

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

Postdi pjfry » 14/03/03 10:48

la schedulazione non è inevitabile se fai creare la tabella alla pagina php a cui ti connetti, ma per non perdere tempo a rifarla anche quando non serve devi lavorare sul modo di capire se la tabella è aggiornata o no... IMHO si può fare ;)

l'errore? sembra che faccia casino il php della seconda pagina ( o forse il form della prima sbaglia a mandare i dati) cmq io non l'ho mai visto :(
hai cercato anche nella guida di iis? :-?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi feno » 14/03/03 12:10

Ho trovato questa spiegazione ma non ci capisco nulla:

Questo errore vuol dire che PHP non è riuscito ad ottenere qualcuno di tutti gli output richiesti. Per ricevere un messaggio sensato di errore, dalla linea di comando, cambia la cartella che contiene l'eseguibile di PHP (php.exe sotto Windows) ed esegui php -i. Se PHP riscontrerà dei problemi durante l'esecuzione, comparirà un opportuno messaggio d'errore contente informazioni su cosa fare successivamente. Se riceverai una schermata di codice HTML (la stessa di phpinfo()) significherà che PHP sta lavorando correttamente, e quindi il problema potrebbe essere legato alla configurazione del server, che andrebbe quindi controllata.

Dopo che PHP sta lavorando dalla linea di comando, prova ad accedere di nuovo ai tuoi script via browser. Se ancora ricevi messaggi di errore, il problema potrebbe essere dovuto ad una delle seguenti cose:


1- I permessi dei file php.exe, php4ts.dll, php.ini o di qualche altra estensione PHP che stai cercando di caricare potrebbero essere settati in modo da impedire l'accesso agli utenti anonimi di internet ISUR_<machinename>.

2- Il file dello script non esiste (o forse non è dove pensi in relazione alla tua root directory). Nota che con IIS puoi aggirare quest'ostacolo selezionando la voce relativa a 'check file exists' (controlla se il file esiste) nelle opzioni di Internet Services Manager. Se il file di uno script non esiste il server invierà un errore 404. C'è un ulteriore beneficio: IIS si preoccuperà di effettuare tutte le autenticazioni necessarie al posto tuo, in base ai permessi NTLanMan del tuo file contenente lo script.


Me lo spiegate bene? secondo me mi trovo nel primo caso mah

Vi spiego come funziona il sito velocemente:
1. aprendo la pagina iniziale lo script:
1.1 apre un file di testo contenente i materiali di un magazzino
1.2 cancella tutti i record della tabella del db mysql
1.3 inserisce le linee dei file di testo nella stessa tabella
1.4 estrae tutte le righe della tabella del db e le mette in output in una tabella html
2. ci sono due form che permettono di ricercare un materiale per codice o per descrizione
2.1 inserendo un valore in uno dei due form si apre una nuova pagina contenente l'elenco di tutti i materiali che corrispondo ai criteri di ricerca

Il punto 2.1 è quello che non funziona - (attenzione finchè ho fatto girare le pagine sul mio pc con w2000prof e apache funzionava perfettamente) adesso che ho provato a mettere il tutto sul server (w2000server IIS) mi dà l'errore cgi. mah

l'errore cgi-bin l'ho risolto così:
ho creato nella cartella principale una sottocartella denominata cgi-bin, lì ho copiato lo script che mi serve e adesso sembra avere un'altro problema: il nuovo script dovrebbe prendere una descrizione da un form della prima pagina e ricercarla nella tabella (l'indirizzo è così
http://10.74.17.90/cgi-bin/ricerca.php?desc=tuta
) ma l'elenco che appare (in cui ci dovrebbero essere solo i record che contengono la parola tute) è nuovamente quello totale. Avviso che lo script è giusto
$result = mysql_query("SELECT * from $tab WHERE descrizione LIKE \"%$desc%\" AND codice LIKE \"%$cod%\"") or die("Query non valida: " . mysql_error());
Cià

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

Postdi pjfry » 14/03/03 14:05

non mi ricordo bene ma mi pare che php si possa usare come cgi-bin o come pagine semplici (non si dice così ma non mi ricordo il termine :oops: ) , io con apache (su win95!!) lo usavo senza cgi-bin, chiaramente la diferenza dipende da iis ma forse puoi impostarlo per fare lo stesso
la variabile $cod ha un valore? non è che il problema deriva dal fatto che non esiste?
hai provato a farti dare in output il valore di $desc per controllare se il parametro passato è quello giusto? io proverei anche con ricerca.php?desc="tuta" ma non sò se cambia qcosa
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi Triumph Of Steel » 14/03/03 14:16

Io direi che le virgolette nell'URL non vanno bene...

la query per al ricerca la farei senza cercare il codice dle prodotto..
anche perchè quella stringa (che tu non passi) secondo me è vuota...

farei solo

Codice: Seleziona tutto
$result = mysql_query("SELECT * from $tab WHERE descrizione LIKE '%$desc%'") or die("Query non valida: " . mysql_error());


tra l'altro LIKE ' ' con apici singoli, e non doppi (a seconda del sistema questa cosa non funziona)
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi feno » 14/03/03 14:26

Non passa l'informazione sul valore di $desc e $cod!
rimangono vuoti!!!!


:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:

Sono disperato...
Cià

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

Postdi Triumph Of Steel » 14/03/03 14:33

nella seconda pagina, prova a fare un

Codice: Seleziona tutto
$descrizione = $_GET['desc'];


e così per tutte le variabili del form
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi feno » 14/03/03 14:44

Spiacente TOS ho provato a fare come dici tu ma non funziona comunque.
La stringa di comando a Mysql non è un problema, ripeto che con w2000 prof e apache funziona perfettamente.
come consigliava pjfry ho fatto un echo delle due variabili $desc e $cod e nessuna delle due risulta valorizzata... il problema è che non passa l'informazione.

Scusate ma mi sento ad un passo dal successo e non riuscirci mi fa veramente imbestialire.
Se potete datemi una spiegazione sulla spiegazione che ho trovato e che non ho capito... è lì il problema...
Cià

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

Postdi feno » 14/03/03 15:02

Grande TOS il problema era il GET!!!!

Per ora sono a posto ma presto vi romperò nuovamente le scatole... devo fare dei grafici... modulo GD giusto?
Cià

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

Postdi pjfry » 14/03/03 16:36

di grafici non ne sò nulla, te lo dico in anticipo :P
quel get devi farlo sempre perchè non hai impostato bene il php nel server, in quello che usavo io (cmq era su apache, forse con iis non si può?) le variabili erano pronte per essere usate all'apertura della pagina :)
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi Triumph Of Steel » 14/03/03 16:51

se non sbaglio questa cosa del get è stata inserita nelle ultime versioni del PHP.. problemi di sicurezza...

nelle vecchie non c'era bisogno...
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi feno » 14/03/03 17:15

comunque per non avere più l'errore del cgi ho dovuto creare una cartella denominata cgi-bin ed inserire la seconda pagina sempre lì.
Il problema è che ci sono diversi livelli di autorizzazione e nella cartella cgi-bin ci vanno a finire cani e porci...
Cià

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

Postdi pjfry » 14/03/03 17:23

questo dipende dal fatto che il server è impostato per 'eseguire' solo i file nella cgi-bin... secondo me se cerchi bene puoi fargli eseguire le pagine php da qualunque directory, a meno che non sia cambiato qcosa da quando l'ho usato io ( come per il fatto del GET )
sulla sicurezza del php sò poco, cmq credo che se scrivi bene il codice che te ne frega di dov'è messa la pagina?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Prossimo

Torna a Software Windows


Topic correlati a "MYSQL":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti