Hacer un « explode » de un campo en la base de datos

Angecorse Mensajes publicados 42 Estado Miembro -  
Reivax962 Mensajes publicados 3742 Estado Miembro -
Hola, Inventario: - mysql - phpmyadmin - innodb - framework php: CI 3 BD: blog tabla: post En la base de datos tengo varios tags en el campo 'tags': por ejemplo: "video 3d, comique" Están separados por un espacio, una coma o ambos. Me gustaría que al mostrarse se "explosionen" para que, si uno de ellos es clicado, la búsqueda se realice en todos los artículos que contengan ese único tag y se muestre el resultado. Me gustaría que sea una función y que él recorra tantos tags como haya en el campo:
public static function tags(){
 
}

2 respuestas

  1. Reivax962 Mensajes publicados 3742 Estado Miembro 1 011
     
    Hola,

    Una alternativa a explode es divertirse con expresiones regulares: "(([^,\s]+)[,\s])*([^,\s]+)"

    Xavier
    2
    1. Angecorse Mensajes publicados 42 Estado Miembro
       
      Gracias Xavier,

      En la explosión lo que me faltaba era cómo gestionar un espacio y/o una coma ;)
      0
    2. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > Angecorse Mensajes publicados 42 Estado Miembro
       
      Nos habrías dicho eso desde el principio... habrías tenido tu respuesta de inmediato...
      0
    3. Reivax962 Mensajes publicados 3742 Estado Miembro 1 011
       
      Pero aun así puedes manejar dos separadores con explode como sugirió Jordane, haciendo primero un explode sobre los espacios, luego recorriendo los resultados (foreach) para hacer un segundo explode sobre las comas, y añadiendo (manual) todos estos resultados a un arreglo de resultados.
      0
    4. Angecorse Mensajes publicados 42 Estado Miembro > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
       
      Lo siento... ;)
      0
    5. Angecorse Mensajes publicados 42 Estado Miembro
       
      1. En realidad me gustaría crear una función con
      explode
      que busque el campo [field] (a descomponer) de la tabla [table] en la base de datos.
      2. Me gustaría mostrarlo en mi página con
       <? php foreach ($explode as $e): <li><?php echo $e->field; ?></li> ?php endforeach; ?> 


      1. tan pronto como toca la base de datos, tengo errores (si creo una variable para descomponer todo va bien)
      2. En ese punto también tengo errores, porque cada <li> debe mostrar un
      explode
      de field

      He eliminado todo :(
      0
  2. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     
    Hola,

    No termino de entender muy bien tu solicitud... al menos… cuál es exactamente la pregunta...

    ¿En qué bloqueas? ¿La visualización? ¿la explosión? ¿el bucle? ¿La búsqueda?
    ¿Qué es lo que ya has empezado a hacer?

    Sin hablar de que no conocemos la estructura de tu tabla "post"... el código de la vista en la que quieres mostrar tus tags... la forma de conexión a tu BDD (PDO? Mysqli? mysql?)

    En fin... ¡gracias por especificar!

    PD: Hablas del framework CI3... ¿te refieres a Code Igniter 3?

    Cordialement,
    Jordane
    1
    1. Angecorse Mensajes publicados 42 Estado Miembro
       
      Hola Jordane,

      Para CI3: Sí, es efectivamente CodeIgniter 3 (precisé que a veces haya helpers u otros que sean nativos para este tipo de función)

      → La forma de conexión: no importante, no es el tema ;)
      → La estructura de la tabla: en mi opinión, no tiene interés conocerla

      Me gustaría una función que explote los datos contenidos en el campo "tags" de la tabla "blog" : Lo más importante está citado aquí.

      Reitero el ejemplo:
      En "tags" si tengo "vídeo, 3d, comique" o "vídeo 3d comique" (con o sin coma), la función debe devolver tantos bloques (bloque[0], bloque[1], bloque[2], bloque[x],...) como palabras haya y retornar el resultado.

      Para información, la explosión del campo servirá posteriormente:
      → para disociar las etiquetas (palabras clave) al mostrarlas (pero no es mi petición).
      → para calcular, en este campo "tags", cuáles son las etiquetas más utilizadas y mostrarlas (una vez más no es mi petición)

      No te compliques con lo que rodea la función.
      0
    2. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
       
      Bueno.. si nada es importante y no debo aburrirme. ...
      Ya... en PHP existe la función explode
      Y para recorrer foreach.

      Que tengas un buen día
      0