Foros del Web » Programando para Internet » PHP »

Separando en cada coma..

Estas en el tema de Separando en cada coma.. en el foro de PHP en Foros del Web. Saludos, estoy creando algo en el cual quiero hacer que el usuario pueda agregar tags, en las cuales cada tag tiene que tener como maximo ...
  #1 (permalink)  
Antiguo 10/06/2008, 04:43
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Separando en cada coma..

Saludos, estoy creando algo en el cual quiero hacer que el usuario pueda agregar tags, en las cuales cada tag tiene que tener como maximo 5 caracteres (para que no escriban solo mas, bien, hola, mama, ti, tu, yo, etc..). (o no se si me recomiendan que ponga mejor un maximo de x cantidad.. nunca he creado algo de tags...).

Bueno mi consulta es como puedo hacer para que despues de cada coma que se encuentra en el resultado de la base de datos, el sistema saque la tag que esta despues de este. Todas las tags son guardadas en la base de datos en una tabla, entonces quiero que como si hay que sacar las tags de la id 1, pues que saque todas las tags puestas por el usuario, sin que las comas intervengan en cada tag.

Asi luego podre que las tags mas usadas salgan en el index de la web y que asi los usuarios clickeen en ella y puedan ver todas las tablas que tienen esta tag.


Asi que son dos cosas :P uno como conseguir la tag despues de cada coma (y la primera que no tiene coma tambien xD) y 2. Poder buscar entre todas las tags de una base de datos la tag seleccionada.

Última edición por TxT; 10/06/2008 a las 04:48
  #2 (permalink)  
Antiguo 10/06/2008, 05:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Separando en cada coma..

En php existe una funcion que te coge una cadena y te la separa por el caracter que tu quieras, en este caso la COMA.

Para conseguir saber los tags que ha insertado el usuario:

Haces la consulta que sea a la bbdd preguntando por los tags de ese registro y luego:
Código PHP:
$cadenatags=explode(","$tagsbbdd); 
ahora podras acceder a los tags mediante $cadenatags[0],$cadenatags[1],etc etc

La segunda pregunta ni idea de a que te refieres :S
  #3 (permalink)  
Antiguo 10/06/2008, 07:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Separando en cada coma..

la segunda puede ser desde una campo ENUM de MySQL

o bien... usando la condicional IN

si tu campo es VARCHAR simplemente usas explode() y luego un in_array()

suerte!

PDTA: las cuestiones del MySQL es mejor consultarlas con la referencia oficial
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 10/06/2008, 13:55
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Separando en cada coma..

Saludos muchas gracias resolviendo la primera pregunta esta bien bueno :D y creo haber entendido lo probare de todas formas para ver si esta correcto.

En cuanto a la segunda, pues esta guardado en una tabla TEXT , no varchar pero si es necesario tenerla en varchar pues puedo cambiarla a VARCHAR sin problema ya que la web todavia no esta abierta al publico.

y como funciona eso de IN ( in_array() ) nunca habia escuchado de el :S
  #5 (permalink)  
Antiguo 10/06/2008, 16:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Separando en cada coma..

Código:
SELECT * FROM tablas WHERE categoria IN(3,5,7,9,11)
Código PHP:
$varios explode('|''a|b|c|d');

echo 
in_array('b'$varios); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 10/06/2008, 16:39
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Separando en cada coma..

Cita:
Iniciado por pateketrueke Ver Mensaje
Código:
SELECT * FROM tablas WHERE categoria IN(3,5,7,9,11)
Código PHP:
$varios explode('|''a|b|c|d');

echo 
in_array('b'$varios
Wow esto esta interesante

A ver con esto podria hacer:

$aqui = explode(',', '$texto_sacado');

pero si no se que va a sacar, ya que no conozco la tag que el usuario puso como hago para el in_array? ya que en el tuyo estas buscando la b en el explode para mostrarla. Pero yo no se para nada cual va a sacar y mostrarla, asi que tendria que ser asi:

echo in_array('$texto_sacado', $aqui) o como?? :S
  #7 (permalink)  
Antiguo 12/06/2008, 05:02
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Separando en cada coma..

Todavia no he resolvido mi pregunta a este tema, alguien puede seguir ayudandome por favor, de seguro hay expertos que ya han hecho un sistema de tag's!
  #8 (permalink)  
Antiguo 12/06/2008, 07:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Separando en cada coma..

mmm...


Código PHP:
if (in_array('tag', array('html''js''php')))
{
  
// esta en la etiquetas!!!

la verdad, no se que es lo que dudas.... si leyeras un poco acerca de las referencias de in_array()/IN() respectivamente tendrías mas claro como sirve, y como te podrían servir en un sistema de tags....

o cual era la duda?

http://php.net/in_array

PDTA: la verdad puse el enlace del IN() de MySQL, pero fácil se encuentra en la pagina oficial de la referencia.... (documentación)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 12/06/2008, 16:01
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Separando en cada coma..

El valor del In_array es un valor que desconozco porque acaba de salir de la consulta sql, digamos que tiene como valor dicha consulta $resultado . Entonces como puedo hacer el in_array si desconozco lo que estoy buscando, es decir como saco de este cada uno de los textos que estan hecho despues de una coma?


en el sql digamos que dice: ropa, pantalon, camisa
Pero eso yo no lo se el $resultado = la consulta sql.
asi que como hago el in_array si ni se que va a salir despues de cada coma?
  #10 (permalink)  
Antiguo 12/06/2008, 19:26
 
Fecha de Ingreso: febrero-2007
Ubicación: Santiago, Chile
Mensajes: 53
Antigüedad: 17 años, 2 meses
Puntos: 1
De acuerdo Respuesta: Separando en cada coma..

Hola.. a ver si te entendí bien. Creo que puedo ayudarte... para separa por las comas es fácil simplemente:

$tags=split(",",$lista_de_tags);

ahora $tags sera un arreglo donde si $lista_de_tags="auto,casa,perro" $tags sería:

$tags[0]="auto";
$tags[1]="casa";
$tags[2]="perro";

así para hacer algo con cada tags, como por ejemplo guardarlos en una tabla o algo sólo necesitas hacer:

foreach($tags as $key=>$tag)
{
//algo que harás con los tags. OBS: el tag lo encuentra leyendo simplemente $tag.
}

Eso es para la primera parte.. separar los tags por coma.. la segunda parte no te la entiendo bien.. si me la tratas de explicar mejor.. haré lo posible por ayudarte a solucionar el lío que tienes. Suerte!
  #11 (permalink)  
Antiguo 13/06/2008, 04:29
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Separando en cada coma..

En la segunda lo que quiero es buscar en la base de datos todas las tablas que comporten una tag de las cuales la persona busque digamos como que la url es search.php?tag=llorar

quiero que busque en toda la tabla tags, el termino llorar (esto es un ejemplo).

Gracias ^_^
  #12 (permalink)  
Antiguo 13/06/2008, 06:13
 
Fecha de Ingreso: febrero-2007
Ubicación: Santiago, Chile
Mensajes: 53
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Separando en cada coma..

a. ya te entendí, perfecto. Bien, para hacer lo que pides basta con esto:

$sql="SELECT * FROM tu_tabla WHERE tag LIKE '%".$tag."%'";

de esta forma estarás rescatando las 2 posibles ocurrencias, es decir:

1) que haya sólo 1 tag y que sea justo el que estás buscando (sin comas)
2) que haya más de 1 tag y este pueda estar al principio, al medio o al final

El problema de este metodo es que también traerás algunos que no correspondan al tag, sino a una estensión... algo como:

si $tag='perro';
el método puede traer: 'perro con pulgas';

aunque el tag "perro" y el tag "perro con pulgas" son diferentes.

Un método para solucionar este problema sería hacer 1 consulta de esta forma:

//sacas todos los datos
$sql="SELECT * FROM tu_tabla";
$consulta=mysql_query($sql);

//vas verificando cual tienen el tag que buscas con el método que te mostré para la primera parte

while($datos=mysql_fetch_assoc($consulta))
{
$tags=split(",",$datos['tags']);
if(in_array($el_tag_que_buscas,$tags))
{
//aca puedes hacer algo con el dato que si cumple el tag
//almacenarlo, copiarlo, mostrarlo, etc.. ahi ve tu.
}
}


Espero que te sirva.. saludos.
  #13 (permalink)  
Antiguo 13/06/2008, 11:05
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Separando en cada coma..

Uff al fin despues de tanto buscar una respuesta exacta ya la consegui :D te lo agradezco MUUUCHISIMO :D ire a probar todo esto que aprendi aqui a ver si todo me va correctamente, MUCHISIMAS GRACIAS una vez mas :D
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:02.