Aggiungere un campo in un form che invia foto a db
Auteur : Skeggia 12
Visité 1033,
Followers 3,
Partagé 0
Buongiorno, come promesso a Kolasim, scrivo un nuovo post:
in un form che invia immagini ad una tabella di DB è possibile aggiungere una campo (con js o php), dove viene specificata, ad es. da una lista a discesa, la tabella in cui inserire il record?
Questo consentirebbe di utilizzare un solo form per inserire dati e immagini in tabelle diverse, per creare gallerie distinte (skeggia12.altervista.org).
Se non con una lista a discesa, con una serie di radiobutton...
E aggiungo anche, un altro campo che consentisse di scegliere la cartella di destinazione delle immagini, in quanto il form standard di website, scrive solo nella cartella dichiarata in gestione dati.
Grazie per l'attenzione...
Posté le
... ciao, ...quello che mi viene in mente, db a parte, sarebbe di usare il solito noto uploads dove puoi impostare la cartella in cui raccogliere i files: http://www.w3schools.com/php/php_file_upload.asp
... poi, non so se valida come idea(!), io ci proverei; ...si potrebbe provare da usare sotto-directory (quindi progetti diversi) per ogni modulo con diverse cartelle personalizzate per il salvataggio/scrittura dei dati...
ciao
.
Auteur
si kol, per l'upload non ci sono problemi, uso già un phpupload, la cosa più importante sarebbe l'aggiunta di un campo per la scelta della tabella DB in cui scrivere i dati... ma se non è fattibile, mi organizzo in altro modo...
... con le sotto-directory forse(!) si potrebbe fare qulcosa, richiamando/collegando con codice la pagina del relativo modulo, ...ma mi dispiace, non riesco ad immaginare altro......
ciao
.
Auteur
...waiting... a breve la soluzione dell'arcano...
Auteur
allora, se può essere utile a qualcuno, posto la soluzione al titolo del post (quello che mi serviva per creare 6 gallery differenti e utilizzare per il caricamento un solo form).
Premesso che non sono riuscito ad aggiungere un campo al form originale di ws per fare la scelta su quale tabella del DB scrivere i dati della immagine, ho utilizzato un semplice form html, con l'aggiunta di uno script reperito in rete per scegliere la tabella destinazione tramite radio button...
Creare prima sul db le sei tabelle con 3 colonne (o quante ve ne occorrono, modificando quindi i radiobutton in numero adeguato):
id, uploaded_on, file_name (per la memorizzazione del file, ho utilizzato la cartella con permessi di scrittura dichiarata nelle proprietà di connessione al passo 5 [public])...
Questo il codice, da inserire in una pagina php e oggetto HTML sulla griglia:
<form action="#" method="post" enctype="multipart/form-data">
<div class="seleziona"><h3>Seleziona l'immagine da caricare: </h3><br><input type="file" name="file"></div><br><br>
<div class="radiologia">
<input type="radio" id="gallery1" name="citta" value="gallery1"><label for="gallery1"> Gallery 1</label>    <input type="radio" id="gallery2" name="citta" value="gallery2"><label for="gallery2"> Gallery 2</label><br>
<input type="radio" id="gallery3" name="citta" value="gallery3"><label for="gallery3"> Gallery 3</label>    <input type="radio" id="gallery4" name="citta" value="gallery4"><label for="gallery4"> Gallery 4</label><br>
<input type="radio" id="gallery5" name="citta" value="gallery5"><label for="gallery5"> Gallery 5</label>    <input type="radio" id="gallery6" name="citta" value="gallery6"><label for="gallery6"> Gallery 6</label><br>
</div>
<br><input type="submit" name="submit" value="UPLOAD">
</form>
<?php
// Include the database configuration file
include 'dbConfig.php';
$statusMsg = '';
// File upload path
$targetDir = "public/";
$table = $_POST["citta"];
$fileName = basename($_FILES["file"]["name"]);
$targetFilePath = $targetDir . $fileName;
$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);
if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){
// Allow certain file formats
$allowTypes = array('jpg','png','jpeg','gif','pdf');
if(in_array($fileType, $allowTypes)){
// Upload file to server
if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
// Insert image file name into database
$insert = $db->query("INSERT into $table (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");
if($insert){
$statusMsg = "Il file ".$fileName. "<br>è stato caricato con successo";
}else{
$statusMsg = "Caricamento file fallito.";
}
}else{
$statusMsg = "Si è verificato un errore nel caricamento, riprova";
}
}else{
$statusMsg = 'Scusa, solo file JPG, JPEG, PNG, GIF, & PDF si possono caricare';
}
}else{
$statusMsg = 'Prego, seleziona un file da caricare';
}
echo '<div id="messaggio">';
// Display status message
echo $statusMsg;
echo '</div>';
?>
la parte evidenziata in grassetto è la chiave per passare allo script il valore del radiobutton selezionato.
enjoy...
... come idea, ...forse potresti semplificare per come avevo già fatto qualche anno fa con lo stesso codice...
... per esempio per il tuo caso creare sei pagine nascoste, una per ogni galleria e con relativo FORM e codice+php per le proprie cartelle destinatarie per l'uploads...
... quindi nella pagina principale potresti mettere sei pulsanti, collegati con lea relative pagine, oppure collegarle in IFRAME o con apertura nello ShowBox...
.
ciao
.
Auteur
ciao kol, se vai su skeggia12.altervista.org (li funziona, mentre su www.skeggia12.it ancora devo caricare le foto), puoi vedere come ho organizzato la home page tutto su una pagina, con un effetto slideup e slidedown con gli oggetti html contenenti le gallerie, senza creare tante pagine, tutto con php e efffetto js per il lightbox e per l'efffetto slide...
la difficoltà che avevo incontrato era di utilizzare un solo form per tutti i caricamenti, risolto quello, cercando in rete, tutto è andato a posto, almeno mi sembra... grazie comunque per il supporto...
ciao, ...ho provato il primo LINK, ...forse sarà un mio problema, ...ma i pulsanti verdi "apri" non mi funzionano...
.
ciao
,
provato io, e a me funzionano tutti...
Auteur
e c'è di più... ho anche capito come fare per depositare le immagini in cartelle diverse per ogni galleria, con lo stesso form...
https://www.skeggia12.it
le 6 gallerie, popolate con lo stesso form...
in sostanza, il dato name="citta" l'ho inviato alla variabile $targetDir scrivendo al posto di "public/", questo:
$targetDir = "$table/";