Bottone Salva e vai ad altra tabella

alonzo

Well-known member
Ciao,
avrei bisogno di inserire un bottone a fine inserimento pagina, che mi permetta di salvare e automaticamente aprire una seconda tabella in modalità "inserisci", qual'è la soluzione migliore?

Immagine4.jpg


You are using DaDaBIK version 9.0-Monterosso enterprise, installed on 07.07.2018, the latest version of DaDaBIK is 9.1-Monterosso released on 12.09.2018
You are not running the last release of DaDaBIK, the release you are running might have bugs and security holes, see the official change log for further information. You can upgrade DaDaBIK here.
PHP Version: 7.0.31
mysql version: 5.0.92-50-log
Web server: Apache
Client: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
 

eugenio

Administrator
Staff member
Ciao,
se devi sempre spostarti in insert su questa seconda tabella dopo il salvataggio la cosa più semplice è inserire un after update hook, che contenga solo il codice per il redirect:

header('location:'.$site_url.$dadabik_main_file.'?tablename='.urlencode('nometuatabella').'&function=show_insert_form');

Ciao,
 

alonzo

Well-known member
Ho fatto qualche prova ma non sono sicuro di aver capito come collocarlo tra gli Hooks in custom_functions.php
 

eugenio

Administrator
Staff member
E' un hook come gli altri, se la tua tabella si chiama customers sarà qualcosa del tipo

$hooks['customers']['update']['after'] = 'dadabik_change_page';

e la funzione dadabik_change_page conterrà il codice di cui sopra.
 

alonzo

Well-known member
//-----------------------------------------------------------------
$hooks ['Tab_B-ISPEZIONI'] ['update'] ['after'] = 'dadabik_change_page';
function dadabik_change_page ()
{
header ('location:'.$site_url.$dadabik_main_file.'?tablename='.urlencode('Tab_C-ISPEZIONI').'&function=show_insert_form');
}

....dopo l'inserimento nella tabella B e il salvataggio, non succede nulla e torna alla griglia della tabella B, dove sbaglio?
 

eugenio

Administrator
Staff member
Non mi è chiaro se si tratta di inserimento o di modifica, se si tratta di inserimento sarà:

$hooks ['Tab_B-ISPEZIONI'] ['insert'] ['after']

verifica però che l'inserimento venga in effetti eseguito, perché il COMMIT della transazione viene effettuato dopo l'esecuzione dell'hook.
 

eugenio

Administrator
Staff member
Probabilmente per qualche motivo il codice non viene eseguito. Prova a fare un po' di debugging ad esempio prima dell'istruzione header scrivi

echo 'test';
exit;

Se il codice viene eseguito, dopo l'insert dovrebbe scriverti "test" a video e poi interrompere l'esecuzione dello script (in questo caso il record non viene inserito). Se non succede c'è probabilmente un errore nel nome della tabella (controlla maiuscole/minuscole ad esempio).
 

alonzo

Well-known member
L'ho inserito e succede quello previsto nel primo caso (scrive "test" a video e poi interrompe l'esecuzione dello script).
Se lo tolgo esegue l'inserimento ma non mi riporta alla tabella C in modalità inserimento.
 

eugenio

Administrator
Staff member
Ok, probabilmente hai disabilitato in php.ini la visualizzazione dei warning e notice, in effetti manca questa riga all'inizio della funzione:

global $site_url, $dadabik_main_file;

che serve per poter utilizzare le due variabili nella riga sotto.
 

eugenio

Administrator
Staff member
Il parametro a cui faccio riferimento e': error_reporting, ma se stai lavorando sul server del tuo fornitore di hosting e' abbastanza normale che sia impostato per non mostrare warning/notice.
In ogni caso, aggiungendo
global $site_url, $dadabik_main_file;
il problema si è risolto?
 

alonzo

Well-known member
niente da fare....

//-----------------------------------------------------------------
$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');
}
//-----------------------------------------------------------------
 

eugenio

Administrator
Staff member
Allora non saprei, senza vedere gli eventuali errori è difficile fare debugging.

L'ultima prova che farei è sostituire:

header ('location:'.$site_url.$dadabik_main_file.'?tablename='.urlencode('Tab_C_ISPEZIONI').'&function=show_insert_form');

con un semplice:

header('location:http://google.com');

dovrebbe fare un redirect sulla home di google, giusto per vedere se il problema è con i redirect.
 

alonzo

Well-known member
in effetti...torna all'inserimento, e non va su google.
E' come se la funzione non esistesse.
 

eugenio

Administrator
Staff member
Mi sembra molto strano, prova a riguardare il comando di redirect su google, mi sono reso conto che il forum aveva trasformato l'ultima parte in una emoticon e non riesco a scriverlo correttamente, in ogni caso: dopo google.com c'è un apice, una parentesi chiusa e un punto e virgola.

E' anche strano che torni all'inserimento, hai $insert_again_after_insert = 1 in config? Si tratta di una tabella in master/details?
 

alonzo

Well-known member
si l'avevo notata e inserita correttamente

$insert_again_after_insert = 0

E' una normale tabella
 

eugenio

Administrator
Staff member
Se invece prima del redirect su google aggiungi

echo 'test';
exit;

allora scrive "test" e si ferma?
 
Top