Immagini all'interno di un testo

Salve a tutti,

ho la mia bella paginetta php già funzionante che recupera un testo dal db mysql e me lo mette dentro una colonna.

Ora vorrei che all'interno del testo, in uno o più punti, si interrompesse il testo stesso momentaneamente, per lasciare spazio ad una tabella di 5 colonne e due righe della larghezza totale della colonna stessa.

In questa tabella voglio posizionare, sempre dinamicamente, 5 miniature, nella riga superiore, e 5 le didascalie rispettive in quella inferiore, oggnuna nella giusta colonna. (poi cercherò di renderle anche cliccabili).

Sotto questa tabellina il testo riprende da dove si era fermato e arriva fino alla fine oppure fino ad un'altra tabellina di miniature... e così via...

Minia e dida sono già archiviate correttamente nel db. Il problema è fare in modo che php, leggendo il testo completo dal db, si accorga che in un dato punto deve fermarsi e costruire la tabella.

Pensavo ad una specie di parola chiave dentro il testo che specificasse un array con 5 numeri corrispondenti all'id del 5 minia.

Ecco come (il contenuto del campo testo in mysql):

Testo bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla CREATABELLA(4,5,12,22,23 ) bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

Il problema è che mi intendo un po' di programmazione, ma con php sto iniziando ora!

Qualcuno mi può dare un aiutino?

inviato 10 anni fa
fante1998
X 0 X

La cosa è fattibile ma richiede tempo... non credo ci sia qualcuno disposto a realizzare tutto lo script. Su cosa hai maggiore difficoltà?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Non so proprio come procedere...

Dopo che recupero il testo dal db devo fare un parsing per vedere se trovo la parola chiave con l'array di immagini? Ma come? Oppure?

Insomma... Se è troppo complicato ci sono soluzioni alternative? O ci dovrò rinunciare? :-\

risposto 10 anni fa
fante1998
X 0 X

Sapresti realizzare la funzione CREATABELLA a cui passare i parametri (4,5,12,22,23 ) per mostrare miniature e didascalie?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ci sputerei un bel po' di sangue ma credo di si...

La questione è proprio che inizio col php, ma sono anche pronto a sfasciarmi la testa!  ;)

risposto 10 anni fa
fante1998
X 0 X

Studiati questo esempio ed adattalo al tuo caso:

<?php
$text = "Testo bla bla  bla bla bla CREATABELLA(4,5,12,22,23) bla bla CREATABELLA(1,25,112,222,213)bla bla bla ";

function creatabella($id1,$id2,$id3,$id4,$id5)
{
   $output = "<table><tr>";
   $output .= "<td>$id1</td>";
   $output .= "<td>$id2</td>";
   $output .= "<td>$id3</td>";
   $output .= "<td>$id4</td>";
   $output .= "<td>$id5</td>";
   $output .= "</tr></table>";
   return $output;
}

echo preg_replace( "!CREATABELLA\((\d+),(\d+),(\d+),(\d+),(\d+)\)!e", "creatabella('\\1', '\\2', '\\3', '\\4', '\\5')", $text );
?>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ti giuro che se serve ci passo la notte sopra!!!! O0

risposto 10 anni fa
fante1998
X 0 X

 :-\ :-\ :-\

Brutta storia... ho adattato la creazione della tabella e va tutto ok con la variabile $text definita da te... purtroppo una volta che in quella variabile ci butto dentro il contenuto del campo mysql ottengo questo messaggio:

Resource id #3

A naso c'è qualche carattere strano nel testo che incasina il tutto.

Mi ero quasi scordato che in php c'era questo strumento potentissimo dell'utilizzo delle espressioni regolari, da solo non ci sarei mai arrivato. Solo che è anche abbastanza delicato.

Scorrendo il testo ho visto che gli unici caratteri strani dentro il campo sono:

<i> e </i> per il corsivo

<b> e </b> per il grassetto

Sono questi caratteri che danno problemi?  :'(

risposto 10 anni fa
fante1998
X 0 X

Stai facendo sicuramente un errore nell'estrarre i dati dal DB. Scommettiamo che dopo mysql_query non hai fatto la fetch?

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Hai vointo la scommessa! Grazie!  ;)

risposto 10 anni fa
fante1998
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda