[Php-it] [OT?] Comportamento strano

Simone Volpini simonevolpini at yahoo.it
Mon Mar 12 11:39:37 CET 2007


Domenico L. ha scritto:
>> Simone ha scritto:
>>
>> Non lo faccio transazionalmente.
>> Siccome non devono essere unici, come chiave primaria utilizzo un id
>> autoincrementante.
>>   
> 
> scusa come fai a dirmi che devono essere unici e devono non esserlo al
> tempo stesso? non credo di aver capito....

Nel senso che si potrebbe verificare che esista un altro messaggio
avente lo stesso titolo, nome utente e ip. Il nome utente è un "varchar"
(il forum non richiede registrazione).
Che faccio metto "unique index" sul campo del messaggio che è di tipo
"text"?

> Dov'è la transazionalità? Che DB stai utilizzando? che funzione è query?

Come ti dicevo prima, la transazionalità non c'è. Sto utilizzando MySQL
4.0.x con tabelle di tipo MyIsam.
La funzione query utilizza le classi MDB delle PEAR e funziona
correttamente (la utilizzo anche in altri casi).
Comunque ecco il codice:

function query($sql, $mode = 'all', $querydescription = '')
{
	global $oDb;

	$oRes = $oDb->query($sql);
	if (MDB::isError($oRes)) die ($oRes->getMessage());

	switch($mode){
		default:
		case 'all': return $oDb->fetchAll($oRes, MDB_FETCHMODE_ASSOC);
		case 'row': return $oDb->fetchRow($oRes, MDB_FETCHMODE_ASSOC);
		case 'one': return $oDb->fetchOne($oRes);
	}
}


> scusa ma così si capisce poco... però una considerazione posso farla
> ugualmente contare il numero di messaggi provenienti da un ip/nome
> utente non è una gran cosa....

Infatti non è il massimo. Questo controllo l'ho messo solo per bloccare
questi inserimenti multipli, ed è per questo motivo che controllo oltre
al nome e all'ip anche il titolo e il corpo del messaggio.

> Inoltre sei sicuro che cont ritorni il count e non un puntatore allo
> statement? in questo caso $cont ==0 è sempre verificato

Funziona. Testata + volte :)

> Oltre a ciò se ci sono tante chiamata a questa pagina forse è la pagina
> che la richiama ad avere un errore

Sto riverificando anche quella.
Simone


More information about the Php-it mailing list