Joomla.it Forum
Componenti per Joomla! => Gestione Form => : jurassic 19 Sep 2015, 13:45:06
-
Salve a tutti voi.
Vado subito al sodo:
CCV5 visualizza le informazioni inserite ed elimina i record.
Il problema e che quando clicco su modifica, apre il record con le informazioni ma duplica il record modificato.
Devo solo modificare e qiundi aggiornare il record aperto e non duplicarlo.
Cosa occorre fare per evitare che CCV5 duplichi il record?
Sotto le informazioni di base del form: prova.
In Design ho inserito anche un elemento Hidden nascosto ma senza alcun codice.
In On load Elemento HTML, DB Save e DB Read
Ho realizzato la tabella Mysql con CFV5
Il form inserisce bene i dati nella tabella.
Ho collegato il form prova a Chronoconnectivity v5 con Models provainsert.
In Front list, Setting ho inserito il seguente codice:
provainsert.id:ID
provainsert.operatore:Operatore
provainsert.tipologia:Tipologia
_EDIT_:Modifica
_DELETE_:Elimina
Ho inserito in Front list, Action, Edit il seguente codice:
<p><textarea rows="2" name="provainsert[operatore]" cols="20"></textarea></p>
<p><textarea rows="2" name="provainsert[tipologia]" cols="20"></textarea></p>
<p><input type="submit" value="Invia" name="Invia"></p>
-
la prima cosa da segnalare
db save va in On submit del form prova
-
Grazie per la risposta.
Db Save è in On submit,
Db Read è in On load
Subito dopo Custom Code (vuoto non ho inserito nessun codice)
Poi HTML (Render form) prima di Db Save.
Ma in questo modo crea i doppi record. Cosa occorre fare per sistemarlo?
-
in db read e dbsave usi lo stesso model id provainsert ? dovrebbe essere lo stesso.
-
No, erano diversi.
Ho appena inserito provainsert in Model Id di DB Save e DB Read ma continua a duplicare i record.
-
Ho provato anche a fare questo ma non va:
Ho spostato Custom code sopra a DB Read
In Custom code -> Content Ho inserito il seguente codice:
<? php
$ user = & JFactory :: getUser ();
$ form-> dati ['user_id'] = $ user-> id;
?>
Codice ripreso da un esempio del produttore di CFV5 ma ancora continua a duplicare i dati.
-
Il codice appena provato non funziona bene, da il seguente errore sulla pagina del form:
Parse error: syntax error, unexpected '$' in /.........../............./............../components/com_chronoforms5/chronoforms/actions/custom_code/custom_code.php(20) : eval()'d code on line 2
Anche se inserisce i dati ma continua a duplicare i record.
-
Hai degli spazi in eccesso dopo il $
-
Da non considerare gli spazi /.........../............./............../
Gli ho inseriti io per il post e per nascondere l'hosting.
-
No, mi riferivo a $ user devi scriverlo $user e così le altre variabili precedute dal dollaro.
-
Scusa. Non avevo capito.
Inserirò di nuovo il codice con le correzione che mi hai indicato e vediamo se funziona.
Grazie tomtomeight
-
Ho fatto le prove con il consiglio di tomtomeight ma continua a duplicare i record.
Questo è il codice corretto:
<?php
$user=& JFactory::getUser();
$form->dati['user_id']=$user->id;
?>
-
Pee non duplicare devi inserire lo stesso id del form che richiami quano lo aggiorni. Non uso chronoconnectivity ma il principio è questo.
-
Giustissimo, il principio è proprio questo quando si programma con PHP e MySql. La funzione o la variabile PHP interroga tramite l'ID lo specifico record della tabella MySql.
Uso le due estensioni da una settimana e sto cercando di capire anche la filosofia di funzionamento.
Occorre ottimizzare bene il Setup di CF, questo poi interagisce con CC. Ma in realtà è CC che richiama l'id del record precedentemente settato nel Setup di CF. Almeno questo è quello che suppongo.
Il mio problema è come settare CF tramite una funzione o un codice ben preciso per farlo dialogare con CC e sicuramente settare anche CC affinché quest'ultimo apra lo specifico record e permette di fare le modifiche senza duplicarlo.
Come posso risolvere il problema?
-
Non c'é nessuno che può aiutarmi?
Grazie in anticipo.
-
io in questi casi metto in designer un campo nascosto che recupera il valore id del record del form con questi valori, per la tua situazione.
Field name: provainsert[id]
Field value: {gcb} dove gcb e il parametro passato al form nell'url del link che corrisponde all'id del record letto. Controlla nell'url il nome del parametro e adegualo al tuo caso.
-
Salve vales. Intanto grazie per la tua disponibilità
Ho inserto il campo nascosto con Field id: hidden all'inizio del Designer, come primo elemento.
Ho inserito Field name: provainsert[id]
Rimane il problema di Field value: {gcb}
Tra le varie prove ad inserire una parte della URL continua a duplicare.
Quando clicco su Modifica di un qualsiasi record compare questa URL:
http://....../....../......./prova-modifica?cont=lists&ccname=prova&act=edit&gcb=12 in questo caso ID 12
Quale parte di questo url devo adattare in Field value: {gcb}?
-
in questo caso è come ti ho indicato io
Field value: {gcb}
-
Field value: {gcb} avevo già provato ad inserirlo e riprovato adesso ma continua a duplicare.
-
Ho controllato di nuovo ma non va.
-
Nessuno può aiutarmi a risolvere il problema?
-
Ho effettuato altre prova ma continua a duplicare. Come posso risolvere?
-
Vales ti chiedo un altro aiuto. Ho letto un tuo post dove consigliavi di usare : <?php return array('id' => $form->data['cgb']);?> in On Submit DB Save.
Ma ancora duplica, quale può essere il problema?
-
Occorrerebbe vedere in modo completo come hai settato il form e la connessione.
-
Buonasera Vales. Intanto ti ringrazio moltissimo per il tempo che mi stai dedicando.
Questa è la configurazione, spero riuscirai ad aiutarmi. Di nuovo grazie.
Con CRONOFORMS V5 ho realizzato tre copie di form:
1. per l'inserimento dei record nel DB si chiama: prova (per l'inserimento dei records nel DB)
Da prova ho fatto le copie del form in:
2. prova_elimina
3. prova_modifica
prova e prova_elimina funzionano bene.
Ora scrivo il settaggio del form prova_modifica realizzato con CFv5:
GENERAL.
Form name-> prova_modifica
DESIGNER.
4 Edit element setting.
Il primo di questi ha il campo nascosto -> Field name: provainsert2[id] (provainsert è il model di CC) -> Field value:{cgb}
Il secondo Field name : operatore-> Field ID: operatore -> Label: Operatore
Il terzo Field name : tipologia-> Field ID: tipologia -> Label: Tipologia
Il quarto elemento è un pulsante submit con ID: pulsante
SETUP.
On load:
Custom code: vuoto
HTML (Render Form)-> solo impostazioni di default
DB Read-> Action label: provainsert2-> Model ID: provainsert2 -> Conditons: <?php return array('id'=>$form->data['cgb']);?>
In Tabel name la tabella è la stessa del form: prova
On submit:
DB Save -> Action label: provainsert2[id]->Table name: ......datatable_prova ->Model ID: provainsert2 -> Upadate conditions: <?php return array('id' => $form->data['cgb']);?>
Display Message: <p>Form inserito con successo</p>
Connection Action: -> Connection name: provainsert2 -> Connection action: Save
TCPDF: non penso sia rilevante per le modifiche
CRONOCONNECTIVITY V5.
GENERAL:
Connection name: prova_modifica.
Models:
Model Title: provainsert2
Table name: .......datatable_prova
Fields: id,user_id,operatore,tipologia
FRONT LIST.
Setting.
Colums list:
provainsert2.id:ID
provainsert2.operatore:Operatore
provainsert2.tipologia:Tipologia
_EDIT_:Modifica
_DELETE_: Elimina
Sortable:
provainsert2.operatore:Operatore
Wiev linkable:
provainsert2.operatore:Operatore
List display:
Custom: vuoto
Table: -> Footer code: _PAGINATOR_LIST_
Actions.
view: -> Code:
<p><div id='operatore'><textarea rows="2" name="provainsert2[operatore]" id='operatore'>cols="20"></textarea></div></p>
<p><textarea rows="2" name="provainsert2[tipologia]" id='tipologia'> cols="20"></textarea></div></p>
edit:
Form event: vuoto
Code:
<p><div id='operatore'><textarea rows="2" name="provainsert2[operatore]" id='operatore'>cols="20"></textarea></div></p>
<p><textarea rows="2" name="provainsert2[tipologia]" id='tipologia'> cols="20"></textarea></div></p>
<a href={cf_pdf_file}>Click here pdf[/url]
<input type="submit" value="Invia" name="Invia">------
<input type="button" value="Torna" onclick="window.history.back()" />
Permissions:
Da index a delete-> Public e Registred sono tutti: Allowed
-
Prova a togliere in action della connection il code ed attiva invece Form event inserendo: prova_modifica:load
Vediamo come reagisce.
-
Ho tolto il codice html da view e continua a duplicare. Togliendolo da edit e attivando il Form con prova_modifica:load , cliccando sul link modifica non visualizza i dati dei record. Cliccando su Submit da il seguente errore : Connection not found e visualizza un doppio link del produttore dell'estensione.
-
prova a togliere dal On submit del form Connection Action: -> Connection name: provainsert2 -> Connection action: Save
-
Buonasera Vales.
Ho tolto da Connection Action: -> Connection name: provainsert2 -> Connection action: Save.
Purtroppo non va, continua a duplicare. Ho provato anche a realizzare altri form con la stessa procedura ma anche questi duplicano i records.
Da cosa può dipendere?
-
nella action Bb Save in Update condition dovrebbe essere inserito questo questo codice
<?php return array('provainsert2.id' => $form->data['gcb']); ?>
ed in Force save NO
Connection action invece lo eliminerei del tutto
-
Buona sera Vales.
Ho seguito le tue ultime indicazioni ma continua a duplicare i record.
Possiamo fare altre prove? Può esserci una strada diversa per fargli fare le modifiche?
CF e CC V5 sono estensioni potenti possibile che sia così complicato modificare i record?
Di nuovo grazie.
-
>:( anche a me duplica i record. posso modificarli solo se inserisco a mano il codice id identificativo univoco del record. automaticamente non riesce a leggerlo in edit onde per cui in fase di salvataggio dopo la modifica lo trova vuoto e lo memorizza come nuovo inserendo il numero id automaticamente.
-
Benvenuto nella comunità italiana di Joomla ermanno64,
la registrazione del record corrente avviene quando di passa un valore della chiave primaria del record diverso da 0 e uguale a quello del record da registrare.
normalmente la connection fornisce, nell'url del link che chiama, tale valore nel parametro gcb.
il valore di tale parametro va recuperato con le modalità sopra dette $form->data['gcb']
e viene assegnato alla chiave primaria della tabella usata inserendo
<?php return array('provainsert2.id' => $form->data['gcb']); ?>
in update condition della Db save.
Se questi passaggi per qualche motivo non avvengono in modo corretto e nell'ordine giusto la registrazione non avviene.
-
Vedo ora una cosa che mi era sfuggita con la precedente lettura
L'action DB Read nel form va posta sempre prima di HTML (Render form) ed normalmente questa action è sempre l'ultima in On load. Altrimenti i valori del form non sono inizializzati correttamente.
Prova a fare questa modifica.
-
Salve Vales.
Ho effettuato la modifica mettendo in On load per primo DB Read e per ultimo HTML Render form ma continua a duplicare i record.
In On submit DB Save è primo.
Il fatto che vengono duplicati i record può dipendere da Chronoconnectivity?
-
Ho visto nei backup che la action della connection è sempre impostata con il Code, praticamente un altro form.
Imposta la chiamata del form in Form event della action con prova_modifica:load e togli il code
Segnalo che vi sono due connection con lo stesso nome. In caso di chiamata della connection da un menu, ci saranno problemi. Cambia il nome ad una.
-
Ho tolto il code e impostato la chiamata con prova_modifica:load.
Ma così facendo quando cliccando su modifica non visualizzo più i dati registrati sulla tabella MySql. Cioè, le due
textarea dedicate a visualizzare i dati risultano vuote. Vedo i dati solo se tolgo prova_modifica:load.
Ho modificato la connessione a una delle due ma continua a duplicare i record.
-
Adesso funziona.
Vales ti ringrazio per il prezioso aiuto.
-
purtroppo anche mettendo il codice che mi hai dato Vales, non funziona. sicuramente sono io che non riesco ad inserirlo bene. sono neofita e non ho trovato manuale o tutorial che sopiega come fare ad usare chronoforms e chronoconnectivity. mi sa che o trovo qualche manuale in aiuto o rinuncio all'impresa.
Grazie comunque alla comunita'. :)
-
purtroppo anche mettendo il codice che mi hai dato Vales, non funziona. sicuramente sono io che non riesco ad inserirlo bene. sono neofita e non ho trovato manuale o tutorial che sopiega come fare ad usare chronoforms e chronoconnectivity. mi sa che o trovo qualche manuale in aiuto o rinuncio all'impresa.
Grazie comunque alla comunita'. :)
puoi elencare in sequenza le action che hai inserito in On load e On submit nel form ed i loro settaggi e come ai configurato la Connection ?
-
utilizzando ***** e il modulo wrapper di joomla sono riuscito ad inserire all'interno del sito gia' esistente in joomla, anche il sito creato con *****. molto ma molto piu' facile e piu' alla portata di neofiti come me ;) . grazie ugualmente
edit: no a citazione prodotti commerciali.