hai tutto per progettare in maniera corretta un DB prestante, lascia perdere i file di testo
hai tutto per progettare in maniera corretta un DB prestante, lascia perdere i file di testo
Grazie di nuovo clasku.
Ti chiedo se vale la pena a questo punto usare una tabella anche per i file oppure creare semplicemente i campi file nella tabella pratiche.
Ho letto un sacco di forum sull'upload dei file ma non capisco perché oltre a caricare i file sul database, bisogna caricarli anche all'interno di una cartella! Non è uno spreco di spazio? Eppure se quasi tutti i forum danno questa indicazione, ci sarà un motivo.
Lo so, forse la domanda è stupida, ma sto studiando php, mysql da circa un mesetto e molte cose mi sono oscure ancora
nel DB metti il percorso al file che ti salvi nella cartella
ma non si era detto che non si usano i file?
^^^
di sicuro non per conservare le annotazioni ad una pratica censita su un DB...
appunto!
immagino che i file siano qualcosa di diverso dai file txt con i quali aveva aperto il thread, che so, le scansioni di documenti...
se, invece, intendeva i file di testo, getto le armi...
il giovane dice "Le annotazioni devono essere salvate su file txt, il quale conterr� la data di inserimento dell'annotazione, un testo che pu� essere lungo 400 caratteri e al limite una variabile contenente il nome del delegato che gestisce quella pratica."
la domanda è: perché un file di testo?
ciao ragazzi, discussione calda, bene bene... allora riassumo il concetto che ho in mente e che devo tradurre in codice.
un utente apre una pratica scegliendo o meno di allegare un file a corredo, per esempio solo pdf (come dice ciasku sono scansioni di documenti). le annotazioni andranno incluse nella tabella omonima.
optime, avevo pensato a file txt perch� pensavo pesassero meno! Tutto qui! ora ciasku e gli altri mi hanno aiutato.
il mio problema ora per� � il seguente: ho un codice php col quale inserisco una nuova riga nella tabella pratiche e carico il file allegato in una cartella del sito. finch� � un file singolo � va tutto bene, ma se faccio la prova selezionando pi� file, il mio codice mi carica solo un file nel database, mentre in cartella me li carica tutti correttamente.
ora vi posto il mio codice, lo so, sar� pieno di errori e sar� pure deprecato... non vogliatene, ho iniziato col php da un mese... e in effeti scrivo sul forum proprio per imparare
tabella pratiche:
CREATE TABLE `pratiche` (
`id_prat` int(11) NOT NULL,
`tipo_richiesta` varchar(3) NOT NULL,
`caso1` varchar(20) NOT NULL,
`caso2` varchar(20) NOT NULL,
`anno_prat` int(11) NOT NULL,
`num_prat` int(4) NOT NULL,
`data_aper` date NOT NULL,
`data_scad` date NOT NULL,
`priorita` varchar(5) NOT NULL,
`name` varchar(30) NOT NULL,
`type` varchar(30) NOT NULL,
`size` int(11) NOT NULL,
`content` mediumblob NOT NULL,
`id_utente` int(11) NOT NULL,
`nome_utente` varchar(35) NOT NULL,
`assegnata_a` varchar(30) NOT NULL,
`tipo_ric` varchar(10) NOT NULL,
`stadio_prat` varchar(10) NOT NULL,
`stato_prat` varchar(10) NOT NULL,
`data_chius` date NOT NULL,
`descrizione_prat` varchar(300) NOT NULL,
`note_prat` varchar(150) NOT NULL,
`note_delegato` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
file apri_pratica.php
<?php
// Includo la connessione al database
require('config.php');
// Se il modulo viene inviato...
if(isset($_POST['invia_pratica']) && isset($_FILES['file_caricati']))
{
// Dati Inviati dal modulo
$tipo_richiesta = (isset($_POST['tipo_richiesta'])) ? trim($_POST['tipo_richiesta']) : '';
$caso1 = (isset($_POST['caso1'])) ? trim($_POST['caso1']) : '';
$caso2 = (isset($_POST['caso2'])) ? trim($_POST['caso2']) : '';
$anno_prat = (isset($_POST['anno_prat'])) ? trim($_POST['anno_prat']) : '';
$num_prat = (isset($_POST['num_prat'])) ? trim($_POST['num_prat']) : '';
$data_aper = (isset($_POST['data_aper'])) ? trim($_POST['data_aper']) : '';
$data_scad = (isset($_POST['data_scad'])) ? trim($_POST['data_scad']) : '';
$priorita = (isset($_POST['priorita'])) ? trim($_POST['priorita']) : '';
foreach($_FILES['file_caricati']['tmp_name'] as $key => $tmp_name ){
$fileName = $key.$_FILES['file_caricati']['name'][$key];
$fileSize =$_FILES['file_caricati']['size'][$key];
$tmpName =$_FILES['file_caricati']['tmp_name'][$key];
$fileType=$_FILES['file_caricati']['type'][$key]; }
$id_utente = (isset($_POST['id_utente'])) ? trim($_POST['id_utente']) : '';
$nome_utente = (isset($_POST['id_utente'])) ? trim($_POST['id_utente']) : '';
$assegnata_a = (isset($_POST['assegnata_a'])) ? trim($_POST['assegnata_a']) : '';
$tipo_ric = (isset($_POST['tipo_ric'])) ? trim($_POST['tipo_ric']) : '';
$stadio_prat = (isset($_POST['stadio_prat'])) ? trim($_POST['stadio_prat']) : '';
$stato_prat = (isset($_POST['stato_prat'])) ? trim($_POST['stato_prat']) : '';
$descrizione_prat = (isset($_POST['descrizione_prat'])) ? trim($_POST['descrizione_prat']) : '';
$note_prat = (isset($_POST['note_prat'])) ? trim($_POST['note_prat']) : '';
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!empty($_FILES["file_caricati"])) {
foreach ($_FILES["file_caricati"]["name"] as $indice => $fileName) {
if($_FILES["file_caricati"]["error"][$indice] == 0) {
$estensione = pathinfo($_FILES["file_caricati"]["name"][$indice], PATHINFO_EXTENSION);
if($estensione == "pdf" || $estensione == "txt") {
if($_FILES["file_caricati"]["size"][$indice] < 1000000) {
$risultato = move_uploaded_file($_FILES["file_caricati"]["tmp_name"][$indice], $_SERVER["DOCUMENT_ROOT"] . "/FIRST/uplds/" . $_FILES["file_caricati"]["name"][$indice]);
if($risultato) {
echo "File spostato con successo!";
} else {
die("Errore imprevisto durante lo spostamento dell'immagine!");
}
} else {
die("Il file selezionato � troppo grande, non deve superare 1MB!");
}
} else {
die("Estensione non consentita! Hai cercato di caricare un file ." . $estensione . "!");
}
} else {
die("Errore imprevisto durante il caricamento dell'immagine!");
}
}
} else {
die("Nessun file selezionato.");
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$tipo_richiesta = addslashes($tipo_richiesta);
$caso1 = addslashes($caso1);
$caso2 = addslashes($caso2);
$anno_prat = addslashes($anno_prat);
$num_prat = addslashes($num_prat);
$data_aper = addslashes($data_aper);
$data_scad = addslashes($data_scad);
$priorita = addslashes($priorita);
$content = addslashes($content);
$id_utente = addslashes($id_utente);
$nome_utente = addslashes($nome_utente);
$assegnata_a = addslashes($assegnata_a);
$tipo_ric = addslashes($tipo_ric);
$stadio_prat = addslashes($stadio_prat);
$stato_prat = addslashes($stato_prat);
$descrizione_prat = addslashes($descrizione_prat);
$note_prat = addslashes($note_prat);
$fileName = addslashes($fileName);
}
// Query per l'inserimento dell'utente nel database
$strSQL = "INSERT INTO pratiche (tipo_richiesta,caso1,caso2,anno_prat,num_prat,dat a_aper,data_scad,priorita,name, size, type, content,
id_utente,nome_utente,assegnata_a,tipo_ric,stadio_ prat,stato_prat,descrizione_prat,note_prat)";
$strSQL .= "VALUES('$tipo_richiesta', '$caso1', '$caso2', '$anno_prat', '$next_auto_inc', NOW(), '$data_scad', '$priorita',
'$fileName', '$fileSize', '$fileType', '$content',
'$id_utente', '$nome_utente', '$assegnata_a', '$tipo_ric', '$stadio_prat', '$stato_prat',
'$descrizione_prat', '$note_prat' )";
mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
// Reindirizzo l'utente ad una pagina di conferma della registrazione
header('Location: gest_ptc.php');
exit;
}
?>
della form html scrivo solo il necessario:
...
<form method="post" enctype="multipart/form-data" id="form" >
<td><input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="file_caricati[]" id="file_caricati" type="file" multiple="multiple"
onfocus="if(this.value=='file_caricati') this.value='';"></td>
</tr>
</form>
sono quasi sicuro che l'errore � nel foreach... un aiuto?
Ultima modifica di gianluis; 23-09-2016 a 21:00 Motivo: cancellate righe vuote
luis, non va bene così: dici mille cose in uno stesso post, includi un miliardo di righe di codice non formattate, quello che scrivi è inframezzato da caratteri strani di difficile comprensione.
ordine, ordine, ordine. una cosa alla volta. resettati e ricomincia.