Aiuto su plugin JTable
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 8 anni, 11 mesi fa da navy81.
- AutorePost
- 26 Maggio 2015 alle 15:29 #6772navy81Partecipante
Ciao a tutti spero che qualcuno mi posso aiutare non so piu dove sbattere la testa. Ho fatto una tabella in jtable con la possibilita di inserire foto funziona tutto e carica le foto nel server ma non riesco a capire come fare a postare il campo.
LATO JTABLE
<html> <head> <link href="scripts/jtable/themes/lightcolor/blue/jtable.css" rel="stylesheet" type="text/css" /> <script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script> <script src="../scripts/jtable/jquery.jtable.js" type="text/javascript"></script> <link href="uploadfile.css" rel="stylesheet"> <script src="jquery.uploadfile.js"></script> </head> <body> <div id="PeopleTableContainer" style="width: auto;"></div> <script type="text/javascript"> var UploadedFile; //Prepare jTable $('#PeopleTableContainer').jtable({ title: 'PERSONE', formCreated: function (event, data){ data.form.attr('enctype','multipart/form-data'); $("#FileUpload").uploadFile({ url:"upload.php", fileName:"file", onSuccess:function(files,data,xhr){ UploadedFile = data; } }); }, formSubmitting: function (event, data) { $("#FileUpload").html('<input type="text" id="thumb_img" name="thumb_img" value="' + UploadedFile + '">'); }, actions: { listAction: 'PersonActions.php?action=list', createAction: 'PersonActions.php?action=create', updateAction: 'PersonActions.php?action=update', deleteAction: 'PersonActions.php?action=delete' }, fields: { PersonId: { key: true, create: false, edit: false, list: false }, Nomecg: { title: 'Nome', width: '10%' }, Cognomecg: { title: 'Cognome', width: '10%' }, foto: { title: 'Foto', list: true, create: true, edit: true, input: function (data) { return '<div id="FileUpload" name="FileUpload" ></div>'; } } } }); //Load person list from server $('#PeopleTableContainer').jtable('load'); </script> </body> </html>
LATO FILE UPLOAD.PHP
personId nel mio file upload.php il codice è il seguentecompelto=$output_dir."/".$fileName; $cc=$_POST['PersonId']; //inserisco documento $sql = ("UPDATE quipaggio SET foto= '$newname' WHERE PersonId= '$cc' "); mysql_query( $sql, $connection );
27 Maggio 2015 alle 08:18 #6774jqueryitaliaAmministratorenavy81, come prima cosa ti inviro a leggere le regole del forum, in quanto:
- hai dato al posto un titolo (“AIUTOOOOOOOOOO!!!!”) che non aiuta di certo chi volesse aiutarti a capire cosa hai bisogno.
- hai inserito nel post il codice di una pagina intera
Di solito questi post vengono chiusi se non addirittura eliminati: per questa volta ho provveduto a sistemare io le cose…
Ad ogni modo, ora dò un’occhiata al tuo codice e vedo se posso darto una soluzione.
27 Maggio 2015 alle 11:34 #6775jqueryitaliaAmministratoreNon è necessario che tu esegua modifiche al file upload.php fornito di default nel plugin jQuery File Upload che hai utilizzato, ma è sufficiente solamente modificare il file PersonActions.php fornito invece con il plugin jTable.
Ti basta infatti andare a modificare la funzione onSucces nella pagina html in questo modo:
$("#FileUpload").uploadFile({ url:"upload.php", fileName:"file", onSuccess:function(files,data,xhr){ var result = JSON.parse( data ); UploadedFile = result[0]; } });
così facendo il nome del file caricato sarà inserito nel campo input thumb_img che sarà inviato al submit del form generato di jTable.
A questo punto non ti resta che modificare il file PersonActions.php nel modo seguente:
try { //Open database connection $con = mysql_connect("localhost","USERDBNAME","USERDBPASSWORD"); mysql_select_db("jtabletestdb", $con); //Getting records (listAction) if($_GET["action"] == "list") { //Get records from database $result = mysql_query("SELECT * FROM people;"); //Add all records to an array $rows = array(); while($row = mysql_fetch_array($result)) { $row['foto'] = ( !empty( $row['foto'] ) ) ? '<img src="uploads/'. $row['foto'] .'" style="width:50px" >' : ''; $rows[] = $row; } //Return result to jTable $jTableResult = array(); $jTableResult['Result'] = "OK"; $jTableResult['Records'] = $rows; print json_encode($jTableResult); } //Creating a new record (createAction) else if($_GET["action"] == "create") { //Insert record into database $result = mysql_query("INSERT INTO people(Nomecg, Cognomecg, foto, RecordDate) VALUES('" . $_POST["Nomecg"] . "', '" . $_POST["Cognomecg"] . "', '" . $_POST["thumb_img"] . ", now());"); //Get last inserted record (to return to jTable) $result = mysql_query("SELECT * FROM people WHERE PersonId = LAST_INSERT_ID();"); $row = mysql_fetch_array($result); //Return result to jTable $jTableResult = array(); $jTableResult['Result'] = "OK"; $jTableResult['Record'] = $row; print json_encode($jTableResult); } //Updating a record (updateAction) else if($_GET["action"] == "update") { //Update record in database $result = mysql_query("UPDATE people SET Nomecg = '" . $_POST["Nomecg"] . "', Cognomecg = '" . $_POST["Cognomecg"] . "', foto = '" . $_POST["thumb_img"] . "' WHERE PersonId = " . $_POST["PersonId"] . ";"); //Return result to jTable $jTableResult = array(); $jTableResult['Result'] = "OK"; print json_encode($jTableResult); } //Deleting a record (deleteAction) else if($_GET["action"] == "delete") { //Delete from database $result = mysql_query("DELETE FROM people WHERE PersonId = " . $_POST["PersonId"] . ";"); //Return result to jTable $jTableResult = array(); $jTableResult['Result'] = "OK"; print json_encode($jTableResult); } //Close database connection mysql_close($con); } catch(Exception $ex) { //Return error message $jTableResult = array(); $jTableResult['Result'] = "ERROR"; $jTableResult['Message'] = $ex->getMessage(); print json_encode($jTableResult); } ?>
Non fare un copia incolla di quest’ultimo file, ma prima di tutto modificalo con i dati di connessione del tuo DB e verifica che il nome della tabella e dei relativi campi coincidano con i tuoi (io ho usato la tabella di default fornita da jTable).
Fatto questo il salvataggio dell’immagine funzionerà perfettamente 😉
N.B.: se devi caricare più di una immagine dovrai modificare alcune cose nei due files 😉
27 Maggio 2015 alle 14:46 #6778navy81PartecipanteGrazie mille della gentilezza e della velocità nella risposta ora sono riuscito grazie a te a caricare il nome del file nel database e fin qui tutto bene però mi capita che dei clienti immettano dentro dei file con nomi e spazi assurdi e che quindi poi non riesco piu a visualizzare in quanto non rispettano i caratteri, non si puo fare in modo che il file si rinomini in automatico, tipo con la data e ora del giorno attuale ? ex.201527051042.jpg
Grazie ancorra della disponibilità
- AutorePost
- Devi essere connesso per rispondere a questo topic.