Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - nmartin021

Páginas: [1] 2
1
PHP / [Ayuda] Separar un campo con MySQL
« en: 19 de Febrero de 2012, 11:53:55 am »
Hola!

Vereis, tengo un campo en MySQL que contiene datos separados por coma, así:
Código: [Seleccionar]
dato,dato,dato,dato

Lo que necesito es seleccionar las filas y ordenarlas según el número de datos que haya dentro (separados por ",", como en el ejemplo anterior, que había 4).

Gracias.

2
PHP / [Ayuda] Query que nunca carga
« en: 02 de Enero de 2012, 13:54:43 pm »
Hola!

Verán, ando haciendo unos tops, y empecé a usar JOINS, pero me parece que hice algo mal, porque con la query que tengo ahora, abro la página y se me queda cargando hasta que mi PC empieza a petarse y a no responder, y al final acaba saltando el fatal error de maximum execution time.

Esta es la query:
Código: [Seleccionar]
SELECT p.id, p.title, c.urlname, COUNT(co.id) AS score FROM news AS p LEFT JOIN categories AS c ON p.cat = c.id LEFT JOIN comments AS co ON p.id = co.post GROUP BY p.id ORDER BY score DESC LIMIT 15

Espero que haya alguna solución.

Saludos.

3
PHP / [Ayuda] XSS en BBCode
« en: 24 de Diciembre de 2011, 19:04:19 pm »
Hola!!

Verán, ando haciendo un BBCode, pero descubrí un XSS en un sitio (quien lo quiera por MP, para no hacer spam) en el que había cientos de XSS... entré a ver si alguno afectaba a mi sistema y sí, hay uno que me es imposible solucionar.

Tengo esto para los links (que es donde hay XSS) :
Código: [Seleccionar]
/\[url=(.+)\](.+)\[\/url]/Usi

Si se fijan, con poner:
Código: [Seleccionar]
[url]java script:alert(/xss/);[/url]
(El espacio es un tab, no un espacio normal)

Como bien saben, en HTML los espacios, para que se vean se han de convertir a  , y aprovechando eso, funciona el XSS.

Me gustaría encontrar algún modo de solucionar el problema con las expresiones regulares y sin usar urlencode() o parecidos, ya que necesito hacerlo con expresiones regulares sí o sí.

Saludos.

4
JavaScript / [Tutorial] HTML5 + Js pushState() - cambiar URL sin recargar
« en: 26 de Noviembre de 2011, 23:17:53 pm »
Hola!

Un dia estaba en Facebook y, al cambiar de pagina, me di cuenta de que el header (la barra azul de arriba) ni siquiera parpadeaba -no recargaba-, pero la url si cambiaba, me puse a buscar, y encontré la API que trae HTML5 -window.history- para que los botones de atrás y adelante funcionen bien y que además se puedan quitar los hashtags y que parezca más real...

Y como no había ningún tutorial que lo explique bien, decidí poner uno aquí, así nos vamos introduciendo en el mundo de HTML5 y todas sus novedades.



Funciones de la API:
pushState(data, title, url);crea una entrada en el historial del navegador. parametros: data: información que se pasa a window.onpopstate, puede servir para pasar información como el referrer (url de la que vienes)...
title: aquí va el nuevo titulo de la página
url: la nueva url a mostrar (no se puede cambiar el host por seguridad)
replaceState(data, title, url);hace lo mismo que pushState(), solo que este reemplaza los datos de la entrada actual, es decir, modifica las que se han guardado al entrar (o al usar pushState()) y no crea entradas nuevas



Ejemplo:
Código: [Seleccionar]
<a href="/perfil?nick=Phperos" onclick="go_to(this.href, this.data);return false;" data="nick=Phperos;id=2">Ir al perfil de @Phperos</a>
<script>
function go_to(url, data){
data = data.split(';'); // separar datos
var temp = {}, add; // creamos una variable en la que guardar los datos, por ejemplo temp['nick'], y otra para uso interno del for
for(var i=0;i<data.length;i++){
add = data[i].split('=');
temp[add[0]] = add[1];
} // un for para generar variables como data['nick'] o data['id']
data = temp;
delete temp;
delete add;
history.pushState({ nick: data['nick'], id: data['id'] }, 'Perfil de ' + data['nick'], url);
}
window.onpopstate = function(data){
var nick = data.nick, id = data.id;
/* tomar valores por ajax: archivo.php?id=nick&id=id */
document.getElementById('perfil').innerHTML = respuesta_ajax;
};
</script>

Así, ya podemos cambiar de perfil en perfil, cambiando la url y sin recargar la página.

Si se le echa imaginación, se puede lograr lo que hizo facebook: cambiar todas las urls sin recargar ni una sola vez la página. Con eso, ya tienes varias ventajas: puedes hacer un chat, ya que como no se recarga la página, el chat no tiene que volver a cargar y, por lo tanto, no tendrá que volver a cargar y desconectar al usuario y cargarlo de  nuevo y, así perfeccionar tu script.

Espero que os sirva...

...y que IE vaya agregando todo lo que sea posible de CSS3 y HTML5, ya que con HTML5 y CSS3 se consiguen crear aplicaciones web a nivel de las de escritorio... Un ejemplo es el <input type="range" /> - crea un slider muy util para los usuarios y aún más útil para los programadores, ya que es el modo más fácil de cambiar un valor sin ni siquiera tocar el teclado.

5
JavaScript / [Tutorial] strrev() de PHP en Javascript
« en: 26 de Noviembre de 2011, 22:36:44 pm »
Hola!

Busqué la función strrev() de PHP en javascript, pero vi que no existe. Entonces, me puse a buscar y a buscar, pero nada era exactamente lo que buscaba. Me puse a pensar un poco, y me dí cuenta de que en Javascript se puede usar array.reverse() para invertir el orden de un array. Con eso, simplemente necesitaba convertir el string a array y hacer un reverse(), y ya tenía la función.

Decidí compartirla por aquí, por si alguien la necesita :P
Código: [Seleccionar]
function strrev(s){ return s.split('').reverse().join(''); }

Se usa así:
Código: [Seleccionar]
alert(strrev('Hola')); // aloH
Espero que os sirva :D

6
JavaScript / [Ayuda] Slider jQuery
« en: 20 de Noviembre de 2011, 16:38:13 pm »
Hola!

Vereis, tengo un paginado así:
Citar
Anterior    1 2 3 4 5 6 7 8 9       Siguiente
y lo tengo dentro de un div para poder ponerle un fondo de color. Bien, pero cuando hay demasiadas paginas, los números empiezan a bajar:
Citar
Anterior    1 2 3 4 5 6 7 8 9       Siguiente
                             10 11 12 13 14

Y eso deforma mi diseño.. así que pensé en ponerle overflow: auto, pero quedaba muy mal con el diseño, y  no encontré ningún slider en jQuery.

¿Alguien me puede recomendar alguno?

Nota: Tiene que ser horizontal

7
PHP / [Ayuda] MySQL -de nuevo- no me deja usar caracteres especiales
« en: 12 de Noviembre de 2011, 22:31:17 pm »
Hola!

Verán, antes tuve un problema así, pero lo solucioné usando utf8_decode, pero claro, eso gasta más recursos, y además no debería ser así.

Si meto los datos desde phpMyAdmin, se ve bien en phpMyAdmin y cuando lo muestro yo, pero si meto los datos con una query no hay modo de hacer que salga bien.
Uso utf8_unicode_ci para el campo y en mi head tengo el meta con charset utf-8, y también tengo el archivo en utf8 sin bom.

Saludos

8
PHP / [Ayuda] Relacionar tablas
« en: 11 de Noviembre de 2011, 03:09:44 am »
Hola!

Pues bien, tengo un sistema de noticias con categoría de la noticia, sección y autor, y esta query:
Código: [Seleccionar]
$q = 'SELECT t.id, t.title, g.name, u.nick, c.urlname FROM users AS u, news AS t, sections AS g, categories AS c WHERE g.cat = c.id && g.id = t.group && t.author = u.id';
Pero el problema es que en vez de salir:
Código: [Seleccionar]
[Titulo] - por [usuario] en [sección] ([categoría])
Sale:
Código: [Seleccionar]
Algo - por alguien en sección (categoría)
Algo - por alguien en sección (otra categoría)
Es decir, sale 2 veces la misma notícia, sólo que en distinta categoría y SIEMPRE en la misma sección, y no debería ser así.

Saludos

9
JavaScript / [Ayuda] ¿Cómo usar addEventListener?
« en: 01 de Noviembre de 2011, 19:55:27 pm »
Hola!

¿Alguien me puede explicar cómo se usa addEventListener?
He leído algo por ahí, pero no me acaba de quedar muy claro.

Saludos

10
JavaScript / [Ayuda] Object is not a function
« en: 01 de Noviembre de 2011, 15:22:23 pm »
Hola!

Vi un ejercicio Javascript en internet, y decidí hacerlo. Era poner una palabra en un array, y su traducción en otro. Y para obtener la traducción, uso in_array (yo creé la función - te devuelve el índice del array si está y sino, devuelve -1) y hago esto:
Código: [Seleccionar]
function translate(word){
    ... palabras en arrays
    return ingles[in_array(word, array_ingles)] || false; // false significa que no hay traducción disponible
}
Todo bien hasta que metí mi código en un form:
Código: [Seleccionar]
<form onsubmit="alert(translate($('#t1').value));return false;">
<input id="t1" /><input type="submit" value="Traducir" />
</form>
Y al clickear el botón de Traducir, en la consola de errores sale "Object is not a function" y recarga la página enviando el form, y no entiendo el por qué, ya que si manualmente ejecuto el código "alert(translate($('#t1').value))" sí me sale la traducción.

El error sale en la línea 33:
Código: [Seleccionar]
<form onsubmit="alert(translate($('#t1').value));return false;">

PD: Lo de $() es una función creada por mí, que devuelve document.getElementById('loqueyoponga') y por eso uso $().value y no $().val(), como sería en jQuery (repito, NO uso jQuery).

Saludos

11
CSS / [Ayuda] Problemas de compatibilidad con IE
« en: 30 de Octubre de 2011, 20:59:18 pm »
Hola!

Estoy haciendo unos comentarios, y he decidido ver cómo queda en IE, probé en IE9 e IE8 y se ve perfecto, sólo que al usar IE7, no hay modo de cambiarle el display a un div a inline-block. Es porque puse emoticonos y están uno al lado de otro, y por eso les pongo inline-block, pero ie sigue creyendo que es block. Incluso les puse style="display:inline-block" y no funciona, cada emoticono ocupa su propia línea. Con chrome y las demás versiones de ie se ve bien, sólo que ie7 falla.

Saludos.

12
JavaScript / [Ayuda] Selector CSS en Javascript (elemento[atributo])
« en: 23 de Octubre de 2011, 05:31:12 am »
Hola!

Es posible (sin jQuery, claro) seleccionar un elemento a que tenga un attributo href? Es que estoy intentado modificar todos los links de la página, pero no los a que funcionan con Javascript sino los links de verdad. ¿Cómo lo consigo?

Saludos y gracias.

13
PHP / [Ayuda] Expresiones regulares
« en: 23 de Octubre de 2011, 04:13:34 am »
Hola!

Estoy haciendo un sistema de bbcodes en el que puse citas, para poder citar otros comentarios. Todo bien hasta que con esto:
<?php
$text 
preg_replace('/\[quote\](.+)\[\/quote\]/Usi''<blockquote><div class="quote">Cita</div><div class="quote_b"><p>\\1</p></div></blockquote>'$text);
?>

En vez de que quede un quote dentro de otro, se desfigura. Para conseguir lo que quiero uso esto:
<?php
while(preg_match($quote$text))
	
	
$text preg_replace($quote$replace$text); // $quote y $replace son expresiones regulares
?>

Pero no quiero hacerlo con un while porque gasta más RAM. ¿Hay algún modo de hacer lo mismo que el while solo que con una expresión regular?

Saludos, y gracias.

14
PHP / [Ayuda] MySQL no acepta tildes ni caracteres extraños
« en: 15 de Octubre de 2011, 20:29:40 pm »
Hola!

Estoy intentando meter datos en mi BD y todo va bien hasta que meta algún caracter especial, como alguna tilde o la ñ... al hacerlo, se invierte el orden de los datos (porque los saco con mysql_fetch_row) y los caracteres extraños aparecen como Ã... es por la BD, miré en phpMyAdmin y sale igual de mal.

Nota: Tengo otras tablas en las que inserto datos y se quedan así como los inserto, no me dan problemas :/

15
CSS / [Ayuda] Hacer que los bordes salgan de su contenedor
« en: 07 de Octubre de 2011, 08:00:04 am »
Hola! :)
Vereis, tengo esto:

y quiero conseguir esto:

con este código:
Código: [Seleccionar]
<div class="container">
<div class="barra">
<div class="barra-i"></div>
<div class="barra-d"></div>
</div>
</div>
y este css:
Código: [Seleccionar]
.container{
width: 700px;
}
.barra{
background: url(/barra.png) repeat-x; /* esto me funciona bien */
position: relative;
}
.barra-l{
background: url(/l.png) repeat-x; /* el borde izquiero se ve bien DENTRO del contenedor, pero al intentar sacarlo es cuando se corta, y se ve sólo la parte que está dentro del contenedor */
position: absolute;
left: -40px;
bottom: 0;
}
.barra-r{
background: url(/r.png) repeat-x; /* igual que antes */
position: absolute;
right: -40px;
bottom: 0;
}
pero no hay manera :/
He probado poniéndole float, overflow: visible; e incluso z-index (nada que ver, pero lo he intentado por si acaso), pero aún así no hay manera

Saludos

Páginas: [1] 2