Пример #1
0
	/**
	 * Calcula el siguiente valor para incrementar el campo de la tabla pasados como parametros.
	 * Si existe la clase contador, se aopya en ella para generar el valor.
	 * @param  string $tabla tabla para la que se desea generar el valor
	 * @param  string $campo campo para el que se desea generar el valor
	 * @return integer Siguiente valor que se puede grabar en el campo
	 */
	public function nextId($tabla,$campo) {
		$maxCampo=$this->get_var ("SELECT max($campo) as maxCampo FROM $tabla");
		$max=$maxCampo+1;
		if (class_exists('contador')) {
			/*
			CREATE TABLE IF NOT EXISTS `contador` (
				`id` INT NOT NULL,
				`insert` TIMESTAMP NULL DEFAULT NULL,
				`update` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
				`tabla` VARCHAR(255) NOT NULL,
				`campo` VARCHAR(255) NOT NULL,
				`valor` INT NOT NULL DEFAULT 0,
			PRIMARY KEY (`id`),
			UNIQUE INDEX `tablaCampo` (`tabla` ASC, `campo` ASC))
			*/
			$sqlContador="SELECT * FROM contador WHERE tabla='".$tabla."' AND campo='".$campo."'";
			$dataContador=$this->get_obj($sqlContador);
			if ($dataContador) {
				$contador = new Contador($dataContador->id);
				if ($contador->GETvalor()>$maxCampo) {
					$max=($contador->GETvalor())+1;
				}
				$contador->SETvalor($max);
				$contador->grabar();
			}
		}
		return ($max);
	}