Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [PHP-MYSQL] Aggiornamento di testo su db

    Salve a tutti, ho una domanda particolare.

    Sul db ho una tabella NEWS con una serie di news (circa 300).
    Il 90% di queste inizia con:
    codice:
    ... da www.sito.it
    e poi il corpo della news in html.

    Detto ciò dovrei fare un bel replace su tutte le news e spostare [qualsiasi cosa] alla fine della news.

    Come potrei fare per evitare 300 Copia&incolla?
    Guybrush Threepwood

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Aggiungi un campo alla tua tabella (nella mia query nuovo_campo e sostituisci campo col nome del tuo campo di partenza.

    codice:
    UPDATE tabella
    SET nuovo_campo =
    CONCAT(
    LTRIM(SUBSTRING(campo from IF (INSTR(campo,'[i]'),LENGTH(campo)-LOCATE('>', REVERSE(campo))+1,0 )+1)),' ',
    SUBSTRING(campo,1,IF (INSTR(campo,'[i]'),LENGTH(campo)-LOCATE('>', REVERSE(campo))+1,0 ))
    )
    Fammi sapere.

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Intanto grazie della query

    La sto provando ma non riesce a funziare, nel senso che da errore, ti posto il create table magari può esserti utile :

    codice:
    CREATE TABLE news2 (
      `id` int(50) NOT NULL auto_increment,
      `title` varchar(200) default NULL,
      `body` longtext,
      `data` varchar(20) default NULL,
      PRIMARY KEY  (`id`)
    )

    Ovviamente il campo in questione è "body"

    Questa al tua query adattata :

    codice:
    SELECT *,
    LTRIM (SUBSTRING (body from IF (
                             INSTR(body,'[i]'),LENGTH(body)-LOCATE('>', REVERSE(body))+1,0 )+1)),' ',
    SUBSTRING(body,1,IF (INSTR(body,'[i]'),LENGTH(body)-LOCATE('>', REVERSE(body))+1,0 )))
    
    FROM news2
    Guybrush Threepwood

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così
    codice:
    SELECT *,
    CONCAT(
    LTRIM(SUBSTRING(body from IF (INSTR(body,'[i]'),LENGTH(body)-LOCATE('>', REVERSE(body))+1,0 )+1)),' ',
    SUBSTRING(body,1,IF (INSTR(body,'[i]'),LENGTH(body)-LOCATE('>', REVERSE(body))+1,0 ))
    )
    from news2

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    così la query non da errore, però sposta in una posizione casuale (con o senza il [i]) o oppure toglie del tutto la citazione...

    il "body" è di questo tipo:

    codice:
    ... da www.sito.i
    
    
    Tutta le news in htm.....
    Guybrush Threepwood

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La mia query funziona se l'ultimo > è quello di chiusura di [/i]. Ma se hai altri tag allora non so come aiutarti.
    Immagino sia fattibile con php e le espressioni regolari. Con le funzioni delle stringhe di mysql la vedo grigia.

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Va bene, comunque grazie lo stesso

    Mi dirigerò su uno split con php e via
    Guybrush Threepwood

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.