Categoria: php

CakePHP: eseguire ricerche sui campi tradotti (Translate Behavior)

6 settembre 2011Categoria:php

CakePHP permette di gestire la traduzione dei campi del DB tramite Translate Behavior.
Ad esempio se abbiamo un Model chiamato Elements definito nel seguente modo:

class Element extends AppModel {

}

Possiamo impostare che i campi title e description siano trattati come traduzioni:

Leggi tutto…

PHP: disabilitare la visualizzazione degli errori di tipo “Deprecated”

18 luglio 2011Categoria:php

Utilizzando una versione aggiornata di PHP è possibile che vengano visualizzati degli errori relativi al codice obsoleto (ad esempio se si utilizzano framework datati):

Deprecated: Assigning the return value of new by reference is deprecated in [...]

Per risolverli è possibile agire in 2 modi.

METODO 1

Leggi tutto…

PHP: risolvere l’errore “Call to undefined function pg_query()”

15 luglio 2011Categoria:php

Se durante l’esecuzione di una query a un database Portgres appare l’errore

Fatal error: Call to undefined function pg_query()

bisogna aprire il file php.ini, abilitare l’estensione php_pgsql eliminando il punto e virgola all’inizio della riga

extension=php_pgsql.dll

Leggi tutto…

CakePHP: creazione di un modello on the fly

27 giugno 2011Categoria:php

Durante lo sviluppo di un’applicazione con CakePHP può essere necessaria la creazione di un modello “al volo” non definito a priori come classe.

Ecco come fare con poche righe di codice:

Leggi tutto…

PHP: leggere un file .csv e ricavare un array

25 giugno 2011Categoria:php

Una funzione per leggere un file .csv e ricavarne un array:

Leggi tutto…

CakePHP: modificare dinamicamente i parametri di connessione al database

23 aprile 2011Categoria:database | php

In CakePHP i parametri per la connessione al database vengono impostati all’interno della classe DATABASE_CONFIG (file: app/config/database.php).
Per modificare i paramentri dinamicamente è possibile utilizzare la classe ConnectionManager.

Supponendo di dover modificare il prefisso delle tabelle ad esempio:

App::Import('ConnectionManager');
$ds = ConnectionManager::getDataSource('data_source_da_modificare');
$ds->config['prefix'] = $nuovo_prefisso;

Nel caso in cui si voglia creare un nuovo datasource invece di sovrascriverne uno esistente si deve utilizzare il metodo create() del ConnectionManager:

App::Import('ConnectionManager');
$ds = ConnectionManager::getDataSource('data_source_da_modificare');
$new_ds = $ds->config;
$new_ds['prefix'] = $nuovo_prefisso;
ConnectionManager::create('nome_nuovo_datasource', $new_ds);

XAMPP: parsing dei files .html come PHP

6 aprile 2011Categoria:php

Può capitare di dover aggiungere  del codice PHP all’interno di pagine HTML.
Per non modificare l’estensione della pagina (e di conseguenza eventuali links che puntano ad essa) è sufficiente aggiungere l’estensione .html tra quelle interpretate come scripts dal motore PHP.

Per fare questo si deve aprire il file httpd-xampp.conf (di solito si trova in C:\xampp\apache\conf\extra\ ) e modificare la riga

<FilesMatch "\.php$">

in

<FilesMatch "\.php$|\.html$|\.htm$">

Dopo aver fatto la modifica riavviare il server Apache.

Conversione degli array da Postgres a PHP e viceversa

5 aprile 2011Categoria:database | php

PostgreSQL permette di salvare i dati come array ( http://www.postgresql.org/docs/current/static/arrays.html ). La forma per il salvataggio di un array è la seguente:


{3,56,78,9,72}

Per poter gestire i risultati in PHP occorre eseguire una conversione. Per ogni campo della tabella contenente un array monodimensionale è possibile utilizzare la funzione str_getcsv() .
Al momento del salvataggio per eseguire l’operazione inversa, cioè la conversione da PHP a Postgres si può utilizzare la funzione implode (sempre nel caso di array monodimensionale).

Ecco come utilizzarle:
Leggi tutto…

CakePHP: visualizzare e nascondere il contenuto del debugger SQL con jQuery

2 marzo 2011Categoria:php

Impostando il livello di debug a 2 in CakePHP  è possibile visualizzare tutte le query SQL eseguite dall’applicazione.
Per non visualizzare sempre tutto è possibile utilizzare una semplice funzione jQuery per permettere il toggle del contenitore di debug.
Ecco il codice da inserire nel layout:

<?php if (Configure::read('debug') == 2) { ?>
	<style type="text/css">
		.cake-sql-log { display: none; }
	</style>
	<script language="javascript">
		<!--
		$(document).ready(function() {
			$("#sql_toggle").click(function(event) {
				event.preventDefault();
				$('.cake-sql-log').toggle();
			});
		});
		-->
	</script>
	<a href="#" id="sql_toggle">[Visualizza/Nascondi SQL]</a>
	<? echo $this->element('sql_dump'); ?>
<?php } ?>

NOTA: la classe cake-sql-log è per la versione 1.3 di cakePHP, per versioni differenti modificare con la classse corretta.

Installare Memcache in Windows e Xampp

21 febbraio 2011Categoria:php

Memcache è un sistema di caching distribuito utilizzato per salvare in memoria oggetti di qualsiasi tipo e ridurre gli accessi da parte del software a sorgenti esterne, ad esempio le chiamate al database.

Per utilizzare Memcache in ambiente Windows:

Leggi tutto…