Este demo contiene varias implantaciones, utilicé MAMP, CodeIgniter 2.0 y jQuery 1.6; está pensado para mostrar de una forma sencilla y concreta cómo usar el framework.
El ejemplo sirve para saber cómo utilizar algunos de los muchos métodos útiles que el framework usa para hacer ciertas cosas, integré jQuery (además de por su popularidad) por la manera práctica y sin dolor que ofrece para integrarse con nuestro CodeIgniter.
Este trabajo está licenciado bajo la estructura de la licencia CreativeCommons de Atribución v2.5
Continue reading »

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Lo único cierto es que… ¡Nada es cierto! XD

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Para entenderle sí van a tener que saber de PHP.

En varias ocasiones me he visto forzado a guardar en un campo de la base de datos un string así “1,2,3,4,5″, generalmente cada número representa un ID que concierne a una llave foránea. Precisamente porque soy holgazán, me di a la tarea de idear una función que me permitiera crear una cadena SQL válida con tantos OR como números (incluso palabras) separados por comas tenga el campo.

Esta función nace del siguiente caso práctico… tengo una tabla llamada campaña, la cual almacena cierta información, a cada campaña se le pueden asignar “N” cantidad de agentes, ergo hice un listado de agentes que (mediante ajax) se asignan a la campaña en dicho campo con el formato “1,2,3,4,5,6″, cada número significa el id del registro del agente. Para continuar, al consultar la campaña debía extraer el nombre de cada uno de los agentes para listarlos como “asignados” a “x” campaña…

La finalidad es escribir menos y hacer más.

 


	//Este convierte un '1,2,3' en un (campo = {1} OR campo = {2} OR campo = {3})
	function or_sql_cadena ( $parametros = null )
	{
		//el resultado siempre lo declaro al principio y como vacío para que si se cuelan... se lleven un '';
		$result = '';
		//Haciendo que el que llama esta funcíón sepa que debe mandar una rreglo como parámetro.
		if( is_array($parametros) )
		{
			//Variables para todo el flujo de la función.
			$campo_comparacion = '';
			$arr_temporal = array();
			$result_and = '';
			$result_or = '';

			if(array_key_exists('campo_comparacion', $parametros)) // que sí venga el parámetro
			{
				if(!empty($parametros['campo_comparacion'])) //Que el parámetro no sea vacío
				{
					$campo_comparacion = $parametros['campo_comparacion'];
				}
			}

			if(array_key_exists('cadena_texto', $parametros)) // que el parámetro sí venga
			{
				if( !empty($parametros['cadena_texto']) ) //que el paraámetro no sea vacío
				{
					$arr_temporal = explode(',', $parametros['cadena_texto']);
				}
			}
			//Si trae datos el arreglo, etonces continua
			if(count($arr_temporal)>=1)
			{
				//Armando la cadena SQL empezando con el AND
				$result_and .=  ' AND (';
				//por cada posición del arreglo temporal haz:
				foreach($arr_temporal as $idx => $campo_id)
				{
					//si ya trae algo la cadena, entonces métele un OR
					if ($result_or != '') { $result_or .= ' OR '; }
					//aquí hago que el query haga la comparación entre datos con el campo (casi siempre llave foránea) que se va a comparar
					$result_or .= " {$campo_comparacion} = {$campo_id}";
				}
				//concateno lo que armó el for
				$result_and .= $result_or;
				//cierro la condición
				$result_and .= ')';
			}
			//Si hubo incidencias en el for, entonces haz:
			if ($result_or != '')
			{
				//Si el query tiene AND
				if ($result_and != '')
				{
					//regresas la cadena al resultado
					$result = $result_and;
				}
			}

		}
		//regresa la cadena al resultado
		return $result;
	}

La manera en que se invoca dicha función es ésta:


//obtener todos los datos de la campaña
$sql_get_campana = "SELECT * FROM campana cmp WHERE cmp.cmp_id = {$db_indial->escape($campana_id)} AND cmp.cmp_estatus =  {$db_indial->escape(CAMPANA_ACTIVO)}  LIMIT 1; ';
$registro_campana = $db_indial->query($sql_get_campana)->num_rows() == 1 ? $db_indial->query($sql_get_campana)->row() : false;

//obtener todos los datos de los agentes
$agentes_asignados_cadena = (count($registro_campana)>=1) ? $registro_campana->cmp_agentes : ''; // asigno el valor del campo

//por si no trae ningún agente:
$registros_agentes = '';
$sql_get_agentes_or = '';
if(!empty($agentes_asignados_cadena)) // Cuando traigo un dato, entonces preparo la consulta SQL para que haga el OR
{
	$param_or_sql['cadena_texto'] = $agentes_asignados_cadena;
	$param_or_sql['campo_comparacion'] = 'agn.agn_id';
	$sql_get_agentes_or = $this->indial_utilerias->or_sql_cadena($param_or_sql);
	$sql_get_lista_agentes = "SELECT * FROM agente agn WHERE agn.agn_estatus = {AGENTE_ACTIVO}  {$sql_get_agentes_or}  AND agn.agn_enllamada = 0 ";
	$sql_get_lista_agentes .= " AND agn.agn_estatusoperativo IN (SELECT cat_id FROM catalogo WHERE sec_id = {$db_indial->escape(ESTATUS_PANEL_AGENTE)} AND cat_valor0 = UPPER('SI')) ";
	$sql_get_lista_agentes .= "ORDER BY agn_id ASC; ";
	$registros_agentes = $db_indial->query($sql_get_lista_agentes)->num_rows() >= 1 ? $db_indial->query($sql_get_lista_agentes)->result() : false;
} 

//Happy coding.
SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Una de las ventajas de llevar lo más firme posible mi vida como la llevaría un guerrero honorable es que el poder me ha hecho sentir la brisa de la mañana, fresca, tierna, juguetona y amable…

Gracias.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Raro, extravagante, curioso… simplemente, las matemáticas me demuestran nuevamente que sus capacidades son la perfección.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

prueba piloto – viajes en moto – poscas

 

Play
SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Porque de la misma forma en que mi alma recobró el conocimiento de su indestructibilidad, hoy acabo de encontrar con el recuerdo en un recodo de mi ser de que, soy demasiadas cosas buenas pero por mala fortuna, el mundo ha educado mi pensamiento con frases como: “Eso parece tan bueno que ha de ser cosa del diablo”. Por ende, así como aprendí ciertas cosas, debo des-aprenderlas.Por lo cual, siendo el agua, la tierra y la luz los elementos básicos, entonces falta el tiempo para que la unión de estas tres formen vida, la vida que tú y yo conocemos. Sí, el miedo es el primero de los enemigos del conocimiento. Continue reading »

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Como en un mar de copas de cristal que fragiles muestran siempre su transparencia al sol
las esferas cristalinas de tu mirada destellan brillos de amor que parpadean como luceros
agua de sales que nutres nuestro manantial hacen de nuevo un solo ser, un solo centro
desde la boca hasta el firmamento, con tus besos siento que me elevo lento.
Reina hermosa de todas mis vidas, mujer bendita que andando por la vida encontre como
luz infinita como una flor que no marchita, como ese amor que nos damos desde el corazon.

TE AMO, BASICAMENTE.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
© 2012 Geekeandome Suffusion theme by Sayontan Sinha