installazione help

marcick

Member
Ciao Eugenio,
sto già usando il tuo dadabik da tempo, ora sto tentando di installarlo su un altro wamp server remoto e ho qualche difficoltà:

La versione Dadabik è la 6.2 basic
Su wamp server gira: Apache 2.2.21, PHP 5.38 e MySql 5.5.16

La cartella Dadabik è depositata in C:\wamp\www che è il percorso raggiungibile dal mondo esterno
Il database si chiama "bls1" e esplorando il disco trovo la cartella "bls1" in c:\wamp\bin\mysql\mysql5.5.16\data

Lanciando da remoto l'install, ottengo questo errore:

[01 said:
Error: please specify host, username, dbms type, database name, site url, site path, timezone, secret_key and dadabik_session_name in config.php. If you use sqlite host and username are not needed. dadabik_session_name must contain only alphanumeric characters, with at least one letter; its length must be less than 100 characters and must be different than secret_key"]

Il file config.php è così editato:


Dove sbaglio ?
Grazie
Marco
 

eugenio

Administrator
Staff member
ciao,
non vedo ne' secret_key ne' dadabik_session_name, sicuramente l'errore e' li'.
 

marcick

Member
Già, mancava il session_name ....
un passo avanti, ma ora mi trovo con questo altro errore:

[06 said:
Error: during database connection.
( ! ) Notice: Undefined variable: conn in C:\\Wamp\\www\\dadabik\\include\\db_functions_pdo.php on line 54
Call Stack
# Time Memory Function Location
1 0.0021 961096 {main}( ) ..\\install.php:0
2 0.0179 3763488 include( 'C:\\Wamp\\www\\dadabik\\include\\common_start.php' ) ..\\install.php:27
3 0.0183 3806536 connect_db( ) ..\\common_start.php:44

( ! ) Fatal error: Call to a member function query() on a non-object in C:\\Wamp\\www\\dadabik\\include\\db_functions_pdo.php on line 102
Call Stack
# Time Memory Function Location
1 0.0021 961096 {main}( ) ..\\install.php:0
2 0.0179 3763488 include( 'C:\\Wamp\\www\\dadabik\\include\\common_start.php' ) ..\\install.php:27
3 0.0209 3817464 build_tables_names_array( ) ..\\common_start.php:101
4 0.0209 3817928 get_tables_list( ) ..\\business_logic.php:455
5 0.0210 3818360 execute_db( ) ..\\db_functions_pdo.php:324"]
 

eugenio

Administrator
Staff member
Sicuro che username e password del db siano corrette e di avere i driver PDO come da requirements:
http://www.dadabik.org/index.php?function=show_documentation#requirements
?
 

marcick

Member
Ci guardo e riguardo 100 volte nel dubbio ma user e pwd sono giuste.
Ho cercato il file php.ini sul disco e dentro ho trovato

extension=php_pdo_mysql.dll (senza il punto e virgola iniziale)

mentre il rigo

extension=php_pdo.dll

mancava, l'ho aggiunto a mano e riavviato il server ma ottengo questa finestra di errore:


Ho cercato la dll in rete, l'ho depositata nella cartella suddetta, ho riavviato e ottengo un errore che


Forse ho trovato una dll farlocca ?
Ora devo scappare, grazie intanto, se hai altre indicazioni nel pomeriggio ci provo.
 

eugenio

Administrator
Staff member
Prova a vedere il messaggio di errore settando $debug_mode a 1 in config.php

Inoltre proverei in una pagina PHP a parte, da salvare allo stesso livello di index.php di dadabik, il codice seguente

[pre]
include ("./include/config.php");

try {
$conn = new PDO('mysql:host='.$server.';dbname='.$name_db, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(PDOException $e)
{
echo '<b>[06] Error:</b> during database connection.';

echo '<br/>The DBMS server said: '.$e->getMessage();

}
[/pre]
 

marcick

Member
Eccomi, settando il debug mode vedo questo errore

[06 said:
Error: during database connection.
The DBMS server said: SQLSTATE[42000] [1049] Unknown database 'bin/mysql/mysql5.5.16/data/bls1'"]

Ora non capisco una cosa: il mio database, quando l'ho creato con PhpMyAdmin, si chiama "bls1" ma nella cartella "c:/wamp/bin/mysql/mysql5.5.16/data/" non trovo realmente un file "bls1.db" ma una cartella "bls1" dentro cui ci sono tre files:

db.opt
alias.frm
records.frm

(alias e records sono le mie due tabelle)

Quindi come va specificato nel file config.php il nome del database ?
 

eugenio

Administrator
Staff member
Riguardo allo script, scusa una linea non era corretta, questa e' quella corretta:

$conn = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

In ogni caso secondo me hai copiato male qualcosa, e' impossibile che esca

The DBMS server said: '.$e->getMessage();

Mi aspetto che venga prodotto lo stesso errore prodotto in DaDaBIK.

Riguardo al nome del database, il nome va specificato esattamente cosi' com'e', se l'hai chiamato bls1 in config.php devi chiamarlo bls1. Se con il semplice script che ti ho allegato non riesci a connetterti c'e' qualcosa che non va nella tua installazione di mysql o php.
 

marcick

Member
Forse c'è ancora un errore nello script che mi indichi, ad ogni modo: ho tolto il percorso completo e ho lasciato solo "bls1".
Funziona ....
Ora ragiono sul perchè inizialmente con bls1 non andava. Si, mancava la secret key e nel frattempo avevo aggiunto il percorso completo di bls1 creando il pasticcio.
Grazie infinite, il tuo aiuto è stato essenziale.

Un'ultima domanda:
I record della tabella contiengono un campo che viene automaticamente aggiornato con il CurrentTimeStamp quando inserisco o modifico altri campi di quel record con PhpMyAdmin (o con altre app che accedono al database).
Se invece modifico un campo del record con dadabik, noto che il campo contenente il CurrentTimeStamp non viene toccato.
Devo indicare qualcosa nel Form Configurator per ottenere l'aggiornamento automatico di quel campo ?
 

eugenio

Administrator
Staff member
Se il campo e' gia' gestito da mysql, semplicemente non mostrarlo in dadabik in fase di edit/insert.
 

marcick

Member
Mi sono spiegato male,
Quando l'utente modifica un campo con dadabik, vorrei che l'altro campo contenente il currenttimestamp (che terrò anche nascosto) si aggiornasse automaticamente con la data/ora del momento.
È fattibile?
 

eugenio

Administrator
Staff member
se l'aggiornamento del campo deve avvenire solo quando modifichi un altro (specifico) campo della tabella non si puo' fare.

http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
trovi spiegato come viene gestita l'opzione ON UPDATE CURRENT_TIMESTAMP, il campo viene aggiornato se modifichi uno qualsiasi degli altri campi.
DaDaBIK ha un tipo di campo simile (update_date), anche con dadabik non puoi vincolare l'update al fatto che venga modificato uno specifico campo.
 

marcick

Member
No, il mio caso è "qualsiasi altro campo", bene, allora studio e con le indicazioni che mi hai dato dovrei riuscire.
Grazie di nuovo, ciao
Marco
 

marcick

Member
Dunque, impostando il field (dadabik) come update_date vedo che si aggiorna ma visualizza solo la data formattata all'americana e senza ora. Io ho la licenza 6.2 basic.
Intendo bene che se prendo la pro/enterprise potrò, con le custom_functions, impostare il formato di data/ora uguale a mysql (es. 2015-11-03 10:00:52) ?
Marco
 

eugenio

Administrator
Staff member
Se esce solo la data il campo mysql probabilmente sara' date, se vuoi anche l'ora deve essere date_time

Formato: $date_format in config.php hai alcune opzioni di base. Con le custom formatting functions puoi applicare una formattazione libera scrivendo una tua funzione PHP.

Se hai altre domande ti chiedo di aprire un thread separato per ogni richiesta di supporto.
 
Top