Modulo di contatto con campo "invio file" e database mysql
Author: Paolo M.Salve, ho un curioso problema:
ho un modulo di contatto con diversi campi testo e un campo "invio file", il modulo invia i dati ad un database mysql (parliamo di un hosting windows è un database mysql di Aruba).
Il problema che riscontro è questo: se imposto il campo "invio file" come "non obbligatorio" e invio i primi records senza allegare nessun file la tabella viene popolata regolarmente, ma dal momento in poi che creo un nuovo record contenente anche un file, le volte successive devo sempre mettere un file, altrimenti il record in tabella non viene proprio creato.
Cliccando sul modulo "invia" sembra funzioni, ma in realtà la tabella non viene aggiornata con il nuovo inserimento.
Sono costretto a mettere il campo "invio file" come obbligatorio, altrimenti non ho la certezza che il nuovo record venga generato, anche se alla pressione del tasto "invia" i campi su svuotano come se l'operazione sia stata eseguita regolarmente.
A qualcuno di voi è successo qualcosa di simile ?
yes, e se metti più di un campo invio file (da 2 in poi...), sei obbligato a inserirli tutti, altrimenti non viene creato il record su DB... non so' perchè...
Io ho risolto questo problema creando il primo record compilando tutti i campi, quindi inviando un file anche col campo non obbligatorio. Dopo tutti gli altri vengono generati senza problemi, anche lasciando i campi vuoti.
Un tecnico di dove lavoro mi ha detto che il problema riguarda MySql in ambiente Windows dove MSSQL è la scelta più corretta. MySql è ottimale in ambiente Linux. Io ho spostato tutti i miei siti in ambiente Linux, anche dietro suggerimenti ricevuti qui sopra.
@Massimo, ma sei sicuro ?
ho fatto una prova su host linux con DB MYSQL
fa esattamente quello che dice l'autore del post, e che conferma Skeggia
anche se il db col primo record è stato compilato per bene e col file...
quelli successivi , se non allego il file (che non è obbligatorio) , faccio INVIA, sembra imviare ma NON MEMORIZZA un bel niente...
Author
Come dice Claudio, avevo già fatto tutte le prove del caso, compresa quella indicata da Massimo, ma in ogni caso continua a non creare il record se non metto anche il file allegato (anche se non è obbligatorio)..
Mi domando se potrebbe funzionare scrivendo uno script per l'inserimento dei dati in tabella, e poi scegliere sul modulo di contatto l'opzione "invia i dati ad un file" (lo script in questione).
Al momento non sono in grado di farlo da zero, ma posso documentarmi, magari in questo modo si riesce a capire dove sta l'errore e ad aggirarlo...
Buongiorno Paolo
Ti chiederei solo una ulteriore prova se possibile.
E' possibile che il form sia nato senza il campo file?
Nel senso, se provi a creare un nuovo form contatto che ha già il campo file non obbligatorio, il problema permane? O il problema si presenta solo se aggiungi il campo file ad un Form che prima non lo aveva e che ha già salvato dei record in precedenza?
Fammi sapere qui se possibile
Grazie
Stefano
Author
Ho fatto la prova poco fa, ho creato la tabella attraverso il modulo form di contatto, con tutti i campi non obbligatori ma tutti riempiti, compreso il file da allegare.
La tabella si è creata automaticamente nel database ed il record anche.
Poi ho provato ad inserire un secondo record con tutti i campi compilati, escluso il file allegato, ed in questo caso il record non viene creato.
puoi provare a questo link:
www.evolusystem.com/news.php
se vuoi provare cancello la tabella dal database.
Confermo hosting windows.
Author
Per scrupolo ho anche provato a fare un nuovo form, ora infatti se vai sulla pagina ne vedi due, il secondo è l'ultimo creato.. stessa cosa.
In genere comunque, se crei i primi record senza file allegato va tutto bene, ma dopo che hai inserito un record con un file, da quel momento non è più possibile ometterlo perchè il record non viene creato...
Buongiorno Paolo
Ho provato personalmente a fare una nuova prova, ma devo aver eseguito una procedura errata perchè la stessa situazione non si presenta. Fammi sapere se noti qualcosa di strano
1_ Ho creato un form con un campo di testo e un campo allegato, entrambi non obbligatori
2_ Ho fatto un invio con solo il campo di testo compilato. OK
3_ Ho fatto un nuovo invio con entrambi i campi compilati. OK
4_ Ho fatto un terzo invio con solo i testi compilati. Ancora OK
Ti torna?
Resto a disposizione
Stefano
ciao Stefano,
ho visto il link e caricato qualche immagine di prova. Il problema potrebbe essere che nella stessa pagina hai inserito il visualizzatore delle news, che ha come dominante la visualizzazione degli allegati, per cui se non invvi l'allegato, il visualizzatore non lo vede pertanto non ti scrive sul database.
dovrebbe funzionare comunque bene, ma per capire se il problema è quello dovresti provare a mettere il visualizzatore in una pagina diversa, e verificare sul database tramite phpMyAdmin se il record è stato creato e quindi è solo un problema di vederlo.
Faccio un test simile domani anche io e vedo cosa mi esce.
ho fatto la prova e a me funziona
https://www.works1.eu/pagina-9.html
nessun campo obbligatorio, ho generato senza problemi il database e saltato l'invio del file
Author
Hosting windows ?
Author
Scusa Massimo, ho riletto tutti i messaggi.. quindi tu consigli la migrazione a Linux ?
la migrazione a Linux è comunque opportuna, ma non credo in questo caso che il problema sia linux che non agisce nella implementazione del database, che è autonomo rispetto alla piattaforma del server del sito. Hai visto se il database aprendo da phpMyAdmin viene implementato?
prova a spostare gli oggetti come avevo scritto sopra, dovendo implemetare nella stessa pagina diverse cose che "pescano" insieme potrebbe essere un conflitto.
crea in una pagina nuova un form per l'invio e in un'altra il database da solo, giusto per vedere se funziona,
hai visto nel mio esempio? Fai pure delle prove per vedere come implementa il database
Author
Ok, scusate ma dal telefono non avevo letto tutti i vostri messaggi.. Faró di nuovo altre prove mettendo in una nuova pagina solo il form e controllando i record direttamente sul pannello di Aruba..
Il problema comunque si presentava anche in pagine dove non c'erano visualizzatori..
vi aggiorno al piu presto, grazie intanto per il supporto..
Author
Rifatte tutte le prove da capo:
risultato: stesso problema, le volte successive non crea il record se non metto anche il campo file..
se invece metto SOLO il campo file il record viene creato regolarmente..
hosting windows su aruba e database mysql di aruba, purtroppo ho tutti domini fatti così quini non posso provare su host differenti..
consigli ? pareri ?
Author
Ho risolto: bisogna mettere manualmente l'attributo "NULL" nel campo database inerente al file.. non so perchè, ho provato a caso ma funziona, se tornate all'esempio che avevo postato potete vederlo.
Non capisco però perchè sia necessario farlo solo su quel campo... booohhhh..
Suppongo ci sia qualcosa che non va nel modo in cui il modulo form crei la tabella nel mysql...
il campo null di solito viene generato di default dal database, non è che è stato modificato a mano?
Author
No no.. la tabella è generata dal modulo di contatto e di solito non ci metto le mani.. del resto questa cosa me la fa su tutti i siti che ho creato...
per ora non c'è altra soluzione che quella che hai trovato tu... NULL a manina... tra l'altro, il valore NULL si può cambiare soltanto da phpmyadmin...
Author
È gia tanto aver capito...
io indagherei un pò per evitare malfunzionamenti della tabella. Il valore NULL rende quel campo assente di definizioni per cui se deve relazionarsi con altri può diventare un problema.
la struttura non deve avere nessun attributo particolare, a meno che non intendi creare routine o trigger. Verifica dal pannello di PhpMyAdmin che versione server hai, perchè se inferiore alla 5.5 può essere un problema di generazione tramite programma.
la tabella del link mio più sopra è tutta senza attributi, se devi intervenire mettendo NULL qualcosa non va. MA se non ti serve particolarmente di relazionare quella tabella con altri database o meno tieni le cose così e via.....
Author
Grazie Massimo,
ho verificato la versione del server:
Non so come indagare per questa anomalia, per fortuna non ho bisogno di relazionare le tabelle (almeno non in questo momento)..
potrebbe dipendere dal fatto che lascio vuoto l'attributo <name> nella configurazione dei campi del form ?
Author
Comunque, per quanto ne posso capire io, secondo me l'errore sta nello script che si occupa di fare l'upload del file e di aggiungere il record in tabella..
è come se in mancanza del file lo script non completasse l'operazione..
anche perchè non si spiega perchè il problema ci sia solo con quel tipo di campo, a questo punto il problema non è la creazione della tabella o del record ma qualcosa che succede al momento dell'invio dei dati...
può essere un problema della versione di php istallata sul dominio ?
attualmente c'è la 7.4.33...
provo a fare un upgrade...
Author
Cambiando la versione di php il risultato non cambia...
Addirittura dalla 8.1 in su non funziona più neanche il viewer.........
Buongiorno Paolo
Se provi a creare ora un progetto nuovo con la stessa situazione quindi mi confermi che ti capita.
Posso provare a chiederti se riesci ad inoltrarmi qui una copia IWZIP di quel progetto di prova, e se riesci anche un dump del database?
Farò ulteriori prove per te
Resto a disposizione
Stefano
la versione del PHP non rileva, può rilevare invece la versione di PhpMyAdmn installata su server. Verifica quella,