Weblogs Código

RecorteX

» albin
73 usuarios y 243 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes del usuario albin

RSS
Recortes: 31
Registrado: 6/8/2006
Web

Etiquetas:
php (13)
mysql (8)
imagenes (5)
JavaScript (5)
asp (3)
jpg (3)
Ajax (2)
jquery (2)
JS (2)
MSSQLServer (2)
XMLHttpRequest (2)
fichero (2)
menu (1)
event (1)
Transacciones (1)
clase (1)
forms (1)
variable (1)
elimina-ficheros (1)
registros (1)
aleatorio (1)
MS-SQLServer (1)
importar (1)
existe-registro (1)
url (1)
connection (1)
plantilla (1)
genera-select (1)
xhtml (1)
eliminar (1)
scroll (1)
alertas (1)
javascrip (1)
exportar (1)
validacion (1)
cuenta-registros (1)
provincias (1)
leer (1)
html (1)
escribir (1)
sql (1)
antispam (1)
valor-maximo (1)
declarada (1)
querystring (1)
adodb (1)
link (1)
imagen-flash (1)
etiqueta (1)
svg (1)
onload (1)
flash (1)
valor-minimo (1)
duplicados (1)
recordset (1)

Etiqueta para insertar un flash

Cuidado con los "???"

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="???" height="???" VIEWASTEXT>
<param name="menu" value="false">
<param name="movie" value="???" />
<param name="quality" value="high" />
<embed src="???" menu="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="???" height="???"></embed>
</object>

Clase para manipular el QueryString

A veces tenemos que mantener el QueryString entre varias páginas, pero cambiar algún valor según en qué enlace pulses, pues esta clase lee el QueryString y te facilita variarlo y obtenerlo nuevamente como un String.

Es una lástima que PHP 4.x no tenga polimorfismo, "toStringWith" es una marranada.

class QueryString {

	var $aParams = array();

	function QueryString() {
	}

	function readURL() {
		$this->aParams = $_GET;
	}

	// Establece el valor $v del parámetro $k
	function setParam($k, $v) {
		$this->aParams[$k] = $v;
	}

	// Establece el valor de varios parámetros 
	// enviados en un array asociativo
	function setParams($pp) {
		while(list($k, $v)=each($pp)) {
			$this->aParams[$k] = $v;
		}
	}

	// Establece el valor $v del parámetro $k si este no existe
	function setDefault($k, $v) {
		if(!isset($this->aParams[$k])) {
			$this->aParams[$k] = $v;
		}
	}

	// Establece el valor de varios parámetros 
	// enviados en un array asociativo si estos no existen
	function setDefaults($pp) {
		while(list($k, $v)=each($pp)) {
			if(!isset($this->aParams[$k])) {
				$this->aParams[$k] = $v;
			}
		}
	}

        // Devuelve el QueryString como un String
	function toString() {
		$retval = "";
		while(list($k, $v)=each($this->aParams)) {
			$retval .= $k."=".$v."&";
		}
		return ($retval!=""? "?":"").substr($retval, 0, -1);
	}

        // Devuelve el QueryString con los parámetros indicados en el array $pp
        // pero no modifica el estado de la clase
	function toStringWith($pp) {
		$retval  = "";
		$aParams = $this->aParams;
		while(list($k, $v)=each($pp)) {
			$aParams[$k] = $v;
		}
		while(list($k, $v)=each($aParams)) {
			$retval .= $k."=".$v."&";
		}
		return ($retval!=""? "?":"").substr($retval, 0, -1);
	}

        // Devuelve el QueryString sin los parámetros indicados en el array $pp
        // pero no modifica el estado de la clase
	function toStringWithout($pp) {
		$retval  = "";
		$aParams = $this->aParams;
		while(list($a, $k)=each($pp)) {
			unset($aParams[$k]);
		}
		while(list($k, $v)=each($aParams)) {
			$retval .= $k."=".$v."&";
		}
		return ($retval!=""? "?":"").substr($retval, 0, -1);
	}

}

Eliminar registros repetidos

Supongamos que tenemos una tabla con emails, y que algunos pueden estar repetidos, queremos hacer un "borrado selectivo" y eliminar solo las repeticiones.
 
DELETE FROM t_table WHERE id IN (SELECT id FROM t_table main WHERE id > (SELECT min(id) FROM t_table WHERE id <> main.id AND Email = main.Email))
 

Conexión ADODB

Elementos básicos para acceder a MS-SQL Server con ASP
 
ConnectionString = "DRIVER=SQL Server;SERVER=localhost;DATABASE=MasterDB;Address=127.0.0.1,1433;Trusted_Connection=Yes;"
 
set conn = Server.CreateObject("adodb.connection")
conn.open ct_ConnectionString
 
conn.execute "INSERT ..."
 
set rs = Server.CreateObject("adodb.recordset")
rs.Open "SELECT ...", conn
 
do until rs.eof
rs.MoveNext: loop
 
rs.Close
set rs = Nothing
 
conn.close
set conn = Nothing
 

Para "descargarte" una bbdd mysql a tu maquina local

A veces interesaría, bien para hacer pruebas reales, o bien para hacer BackUp, descargarte la bbdd de la web que tienes en un servidor a tu máquina local.

Pues bien, cómodamente y con solo dos líneas de código:

mysqldump --add-drop-table -u USER -pPASSWORD -h DOMAIN DDBB_NAME >DDBB_NAME.sql
mysql -u USER -pPASSWORD DDBB_NAME<DDBB_NAME.sql
Siempre y cuando, claro está, hayas dado acceso a tu IP al servidor MySQL. Sino tendrás que usar phpMyAdmin, y es más trabajoso.

Mueve el scroll de una capa al pasar el ratón

Ideal para hacer un carrusel del fotos en una capa de ancho limitado, y que estas se desplacen al pasar el ratón sobre la capa.

El alto de la capa se ajustará al máximo alto de las imágenes que contenga. Estas imágenes se situarán en línea (una detrás de otra) separadas por 5 pixels.

Al pasar el ratón por la derecha o por la izquierda de la capa, se desplazará el contenido de esta para acceder a las imágenes que no aparecen en ese momento.

Código CSS necesario:
 
.st {
	position: relative; /* obligatorio */
	width : 160px;  /* ajustable */
	overflow : hidden; /* obligatorio */
}
 
Código Javascript necesario:
 
<script type="text/javascript">
window.onload = f_init;
 
var oDiv  = null;
var hInt  = null;
var nDir  = 0;
 
function f_init() {
	var nCoordX = 0;
	var nMaxH   = 0;
	var nlDivs  = document.getElementsByTagName("div");
	for(i=0; i<nlDivs.length; i++) {
		var oDiv = nlDivs[i];
		if(oDiv.className=="st") {
			oDiv.onmouseover = f_mover;
			oDiv.onmousemove = f_mmove;
			oDiv.onmouseout  = f_mout;
			oDiv.move        = f_move;
			for(ii=0; ii<oDiv.childNodes.length; ii++) {
				var oImg = nlDivs[i].childNodes[ii];
				if(oImg.tagName=="IMG") {
					oImg.style.position = "absolute";
					oImg.style.left     = nCoordX+"px";
					nCoordX += oImg.width + 5;
					nMaxH    = Math.max(nMaxH, oImg.height);
				}
			}
			oDiv.scrollLeft   = 0;
			oDiv.maxScrollW   = oDiv.scrollWidth - oDiv.offsetWidth;
			oDiv.centerX      = (oDiv.offsetWidth / 2);
			oDiv.style.height = nMaxH+"px";
		}
	}
}
function f_mover() {
	if(hInt != null) window.clearInterval(hInt);
	oDiv  = this;
	hInt  = window.setInterval(f_move, 10);
}
function f_mmove(event) {
	if(event == null) event = window.event;
	var x  = event.clientX - this.offsetLeft;
	if(x < this.centerX && this.scrollLeft>0              ) nDir = -1;
	if(x > this.centerX && this.scrollLeft<this.maxScrollW) nDir = +1;
}
function f_mout() {
	window.clearInterval(hInt);
	hInt = null;
	oDiv = null;
}
function f_move() {
	oDiv.scrollLeft += nDir;
}
 
Y código HTML de ejemplo:

<div class="st">
	<img src="imagen1.jpg" title="thumb #1" />
	<img src="imagen2.jpg" title="thumb #2" />
	<img src="imagen3.jpg" title="thumb #3" />
	<img src="imagen4.jpg" title="thumb #4" />
</div>

Cambia una imagen por otra haciendo un fundido al fondo

Cambia una imagen por otra haciendo un fundido al fondo. Funciona con múltiples imágenes, al llegar a la última regresa a la primera.

<img class="ic" src="imagenes/imagen1.jpg" srcalt="imagen2.jpg;imagen3.jpg" alt="Pulsa sobre la imágen para cambiarla por otra" />
 
window.onload = f_init;
 
var isExplorer = (document.all ? true : false);
var hFade      = null;
var imgFade    = null;
var imgAlfa    = 10;
 
function f_init() {
	var nlImgs = document.getElementsByTagName("img");
	for(i=0; i<nlImgs.length; i++) {
		if(nlImgs[i].className=="ic") {
			var nSlash = 1 + nlImgs[i].src.lastIndexOf("/");
			var sURL   = nlImgs[i].src.substr(0, nSlash);
			nlImgs[i].onclick  = f_changeImg;
			nlImgs[i].step     = 0;
			nlImgs[i].cimg     = 0;
			nlImgs[i].srcalt   = nlImgs[i].getAttribute("srcalt").split(";");
			for(ii=0; ii<nlImgs[i].srcalt.length; ii++)
				nlImgs[i].srcalt[ii] = sURL + nlImgs[i].srcalt[ii];
			nlImgs[i].srcalt[ii] = nlImgs[i].src;
			if(isExplorer)
				nlImgs[i].runtimeStyle.filter = "progid:DXImageTransform.Microsoft.Alpha";
		}
	}
}
 
function f_changeImg() {
	window.clearInterval(hFade);
	if(this.className=="ic") imgFade = this;
	switch(imgFade.step) {
		case 0:
			imgFade.step = 1;
			f_startFadeOff();
			break;
		case 1:
			imgFade.step = 2;
			f_changeSrc();
			break;
		case 2:
			imgFade.step = 3;
			f_startFadeOn();
			break;
		case 3:
			imgFade.step = 0;
			imgFade.onclick = f_changeImg;
			break;
	}
}
 
function f_changeSrc() {
	imgFade.cimg++;
	if(imgFade.cimg == imgFade.srcalt.length) imgFade.cimg = 0;
	imgFade.src = imgFade.srcalt[imgFade.cimg];
	f_changeImg();
}
 
function f_startFadeOff() {
	imgFade.onclick = null;
	hFade   = window.setInterval(f_fadeOff, 100);
}
 
function f_fadeOff() {
	imgAlfa -= 1;
	imgFade.style.MozOpacity = (imgAlfa/10);
	if(isExplorer)
		imgFade.filters.item("DXImageTransform.Microsoft.Alpha").opacity = imgAlfa*10;
	if(imgAlfa==0) {
		f_changeImg();
	}
}
 
function f_startFadeOn() {
	imgFade.onclick = null;
	hFade   = window.setInterval(f_fadeOn,  100);
}
 
function f_fadeOn() {
	imgAlfa += 1;
	imgFade.style.MozOpacity = (imgAlfa/10);
	if(isExplorer)
		imgFade.filters.item("DXImageTransform.Microsoft.Alpha").opacity = imgAlfa*10;
	if(imgAlfa==10) {
		f_changeImg();
	}
}
 

Desplegable de provincias españolas en HTML

Desplegable de provincias españolas con los nombre de las provincias en español:
 
<select name="provincia">
<option value="">- selecciona -</option>
<option value="15">A coru&#241;a</option>
<option value="1">&#193;lava</option>
<option value="2">Albacete</option>
<option value="3">Alicante</option>
<option value="4">Almer&#237;a</option>
<option value="33">Asturias</option>
<option value="5">&#193;vila</option>
<option value="6">Badajoz</option>
<option value="7">Baleares</option>
<option value="8">Barcelona</option>
<option value="9">Burgos</option>
<option value="10">C&#225;ceres</option>
<option value="11">C&#225;diz</option>
<option value="39">Cantabria</option>
<option value="12">Castell&#243;n</option>
<option value="51">Ceuta</option>
<option value="13">Ciudad Real</option>
<option value="14">C&#243;rdoba</option>
<option value="16">Cuenca</option>
<option value="99">Extranjero</option>
<option value="17">Girona</option>
<option value="18">Granada</option>
<option value="19">Guadalajara</option>
<option value="20">Guip&#250;zcoa</option>
<option value="21">Huelva</option>
<option value="22">Huesca</option>
<option value="23">Ja&#233;n</option>
<option value="26">La rioja</option>
<option value="35">Las palmas</option>
<option value="24">Le&#243;n</option>
<option value="25">Lleida</option>
<option value="27">Lugo</option>
<option value="28">Madrid</option>
<option value="29">M&#225;laga</option>
<option value="52">Melilla</option>
<option value="30">Murcia</option>
<option value="31">Navarra</option>
<option value="32">Ourense</option>
<option value="34">Palencia</option>
<option value="36">Pontevedra</option>
<option value="37">Salamanca</option>
<option value="38">Santa cruz de tenerife</option>
<option value="40">Segovia</option>
<option value="41">Sevilla</option>
<option value="42">Soria</option>
<option value="43">Tarragona</option>
<option value="44">Teruel</option>
<option value="45">Toledo</option>
<option value="46">Valencia</option>
<option value="47">Valladolid</option>
<option value="48">Vizcaya</option>
<option value="49">Zamora</option>
<option value="50">Zaragoza</option>
</select>
 

Escala una imágen forzando un alto máximo

Escala una imágen forzando un alto máximo.
 
function f_resizeMaxHeight($file, $height) {
	$imSrc  = imagecreatefromjpeg($file);
	$w      = imagesx($imSrc);
	$h      = imagesy($imSrc);
	if($h>$height) {
		$width = ($w/$h)*$height;
		$imTrg  = imageCreateTrueColor($width, $height);
		imagecopyresized($imTrg, $imSrc, 0, 0, 0, 0, $width, $height, $w, $h);
		imagedestroy($imSrc);
		imagejpeg($imTrg, $file, 95);
		imagedestroy($imTrg);
	} else {
		imagedestroy($imSrc);
	}
}
 

Escalado de una imagen forzando ancho y alto sin deformarla

Escala una imágen al máximo ancho o al máximo alto, según sea su proporción y la proporción deseada, y coge la parte central del resultado garantizando la proporcion deseada.

Dicese, de una imagen de 1600 x 1200, si se solicita 350x300, la escalará a 400x300 y cogerá de 25,0 a 375,300 garantizando un escalado sin distorsión, y las medidas deseadas.

function clipImage($file, $width, $height) {
	$imSrc  = imagecreatefromjpeg($file);
	$w      = imagesx($imSrc);
	$h      = imagesy($imSrc);
	if($width/$height>$w/$h) {
		$nh = ($h/$w)*$width;
		$nw = $width;
	} else {
		$nw = ($w/$h)*$height;
		$nh = $height;
	}
	$dx = ($width/2)-($nw/2);
	$dy = ($height/2)-($nh/2);
	$imTrg  = imageCreateTrueColor($width, $height);
	imagecopyresized($imTrg, $imSrc, $dx, $dy, 0, 0, $nw, $nh, $w, $h);
	imagedestroy($imSrc);
	imagejpeg($imTrg, $file, 95);
	imagedestroy($imTrg);
}
Proyecto: Juanjo Navarro, 2006 - Diseño: Albin