Bottone Salva e vai ad altra tabella

eugenio

Administrator
Staff member
Mi sembra veramente molto strano, un'ulteriore prova che farei è quella di mettere, dopo il redirect di google, una linea

exit();

e di togliere le due righe che hai aggiunto prima del redirect.

Fammi sapere cosa succede in questo caso.

Se non si riesce a capire cosa succede dopo questa ultima prova, l'unico modo è abilitare la visualizzazione degli errori o guardare il log degli errori per vedere se in effetti è stato generato un errore.
 

alonzo

Well-known member
no, non mi porta su google, la soluzione è proprio "Exit"!

In questo modo funziona perfettamente:
//-----------------------------------------------------------------
$hooks ['Tab_B-ISPEZIONI'] ['insert'] ['after'] = 'dadabik_change_page';
function dadabik_change_page ()
{
global $site_url, $dadabik_main_file;
header ('location:'.$site_url.$dadabik_main_file.'?tablename='.urlencode('Tab_C_ISPEZIONI').'&function=show_insert_form');
exit();
}

Solo che, se è possibile, come chiesto all'inizio del topic, questa funzione dovrebbe essere legata ad un altro bottone a fondo pagina, o in alternativa, modificare la dicitura sul bottone di salvataggio: "Inserisci un nuovo record >>" con "Salva e passa alla tabella C"
 

eugenio

Administrator
Staff member
Ora ho capito, dopo il redirect l'esecuzione proseguiva e interveniva il redirect successivo (quello di default) che ti riporta alla results grid dopo l'inserimento.

Aggiungere l'exit è corretto ma attenzione che in questo modo il record NON viene inserito (a meno che tu non stia usando MyISAM invece di innodb come storage engine, cosa che ti sconsiglio fortemente). Perché il record venga inserito devi aggiungere dopo il redirect questa istruzione:

complete_trans_db();

che serve ad eseguire il "commit" della transazione (che altrimenti non viene eseguito perché l'istruzione di commit è successiva all'after insert hook e tu esci con exit) .

Creare un nuovo pulsante che fa questo sarebbe un po' complicato: dovresti creare un pulsante con associata una funzione javascript che fa il submit e invia una variabile e poi nell'after insert hook controllare che questa variabile sia impostata per decidere se fare il redirect o meno.

Per cambiare il nome del pulsante invece basta creare (se non c'è già) il file languages/italian_custom.php e aggiungere una cosa tipo

if (isset($table_name) && $table_name === 'Tab_B-ISPEZIONI'){

$submit_buttons_ar['insert'] = 'testo che vuoi';

}
 

alonzo

Well-known member
Innodb non è presente tra le scelte per la tabella...

Immagine22.jpg
 

eugenio

Administrator
Staff member
Non so perché non è abilitato sul tuo server, prova ad informarti, considera anche (al di là del discorso innodb) che stai utilizzando una versione di mysql molto vecchia. MyISAM non è transaction-safe, il che genera problemi: se ad esempio un'operazione in dadabik necessità di più query e ad un certo punto si verifica un errore, le query eseguite fino all'errore hanno effetto (portandoti in una situazione inconsistente) invece di essere annullate.

Da:
https://dadabik.com/index.php?function=show_documentation#requirements

"For MySQL, all the database tables must be InnoDB if you want to correctly handle transactions; DaDaBIK can also work with MyISAM tables but it cannot guarantee that transactions are processed correctly."
 
Top