Come andare a campo in un campo di testo in automatico

  • Creatore Discussione Creatore Discussione maxxjo
  • Data di inizio Data di inizio

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
Ciao! ho un problema di questo tipo:
ho una tabella che richiama un evento di un calendario dal database, quello che vorrei avere e una funzione che mi riporti a capo il testo inserito nel campo titolo dopo un tot di parole.
ecco il codice:

PHP:
<?php
// includiamo il file di configurazione
@include "config.php";
 
echo "<table>";
echo "<tr>"; 
echo "<th align='center'>evento</th><th>luogo</th><th>data</th>"; 
echo "</tr>"; 


$query = "SELECT * FROM eventi  ORDER BY str_data";



$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 

{ 
echo "<tr>"; 

echo "<td >". $row['titolo']. "</td><td>"
            . $row['testo']. "</td><td>" ;
echo date ("d-m-Y", $row['str_data']); 


$row = wordwrap( $message['titolo'], 10, "<br />\n");

echo "</tr>"; 

} 

echo "</table>"; 
mysql_close($db);

?>

Ho provato ad inserire questo $newtext = wordwrap($text, 10, "<br />\n"); ma niente da fare..
Grazie Max
 
Ultima modifica di un moderatore:
Prova così allora ;)
PHP:
<?php
// includiamo il file di configurazione
@include "config.php";

echo "<table>";
echo "<tr>";
echo "<th align='center'>evento</th><th>luogo</th><th>data</th>";
echo "</tr>";

$query = "SELECT * FROM eventi ORDER BY str_data";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

echo "<tr>";
echo "<td>". wordwrap($row['titolo'], 10, "<br />\n"). "</td><td>". $row['testo']. "</td><td>". date ("d-m-Y", $row['str_data']) ."</td>";
echo "</tr>";

}

echo "</table>";
mysql_close($db);

?>
 
Visualizza il sorgente html della pagina e copiami qui la tabella che viene generata dallo script.
 
ecco.

Schermata 01-2456668 alle 15.52.42.png

ecco cosa visualizzo, chiaramente o scritto gli eventi alla casaccio.
 
wordwrap, come dice la documentazione, di default non divide a metà una parola unica.
Per farlo devi fare così:

PHP:
<?php
// includiamo il file di configurazione
@include "config.php";

echo "<table>";
echo "<tr>";
echo "<th align='center'>evento</th><th>luogo</th><th>data</th>";
echo "</tr>";

$query = "SELECT * FROM eventi ORDER BY str_data";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

echo "<tr>";
echo "<td>". wordwrap($row['titolo'], 10, "<br />\n", true). "</td><td>". $row['testo']. "</td><td>". date ("d-m-Y", $row['str_data']) ."</td>";
echo "</tr>";

}

echo "</table>";
mysql_close($db);

?>
 
fantastico!!!

quindi mancava il (true) per far si che funzionasse.
grazie infinite di tutto!
 
Praticamente se hai un testo composto di varie parole, wordwrap non ti taglia 10 caratteri precisi, ma taglia nello spazio fra le parole prima di superare questo limite. Questo perché il suo proposito base è di non spezzare le parole.
Col quarto parametro su true invece gli si dice di tagliare indistintamente alla lunghezza specificata e quindi di spezzare eventuali parole che siano la causa dello sforamento del limite.

Col fatto che il tuo titolo di test era composto di un unica parola (una serie di lettere senza nessuno spazio in mezzo), senza il quarto parametro era normale che non funzionasse.


Di nulla comunque e buon developing :)
 

Discussioni simili