[risolto] limitare lunghezza del testo in tabella Mysql

  • Creatore Discussione Creatore Discussione eisenblu
  • Data di inizio Data di inizio

eisenblu

Nuovo Utente
7 Mar 2014
10
0
1
Ciao! Mi sono appena registrato a questo forum e quindi saluto tutti, utenti e moderatori.

Il problema che mi trovo ad affrontare è quello di limitare una descrizione testuale in una tabella Mysql.
Ho provato lo script in un testo normale fuori tabella e funziona regolarmente ma non riesco ad ottenere lo stesso risultato in un campo della tabella Mysql.
Compare soltanto un trattino verde. Vorrei anche poter intervenire sulla dimensione del carattere.
Allego una parte della pagina.

PHP:
.....
<table class="righealterne">
<thead><tr>
<th>rif</th>
<th>foto</th>
<th>comune / zona</th>
<th>descrizione</th>
<th>mq</th>
<th>prezzo/canone</th>
<th>dettaglio</th>
</tr></thead>
<?php
include("config.inc.php");
// parametri del database
$db = mysql_connect ($db_host, $db_user, $db_pass);
if($db = FALSE) die ("errore nella connessione");
mysql_select_db ($db_name)or die("errore nella selezione del database");

$query = "SELECT * FROM $db_tab WHERE vetrina='si' AND uso='co' ORDER BY rif DESC" ;
$result = mysql_query ($query) or die("nessun immobile con questi requisiti");

$numero_caratteri = 10;
$stringa_in_input = '$row[des_scheda]';
if(strlen(trim($stringa_in_input))>$numero_caratte ri)
{
$testo = substr($stringa_in_input,0,strpos($stringa_in_inpu t,' ',$numero_caratteri)).'...';
}
else
{
$testo = $stringa_in_input;
}
$testo='$row[des_scheda]';

//conto il numero di occorrenze trovate nel db
$numrows = mysql_num_rows($result);

//se il database e' vuoto lo stampo a video
if ($numrows==0){
print"<b><font size=2>
<P><FONT SIZE=2><B>Al momento non abbiamo immobili con questi
requisiti.<BR>Contattateci per avere notizie su eventuali
acquisizioni non ancora pubblicate.</B></FONT></P>
</font></b><br><br>
<br><br>";
}

//Se invece trovo delle occorrenze...
else
{
while ($row = mysql_fetch_array ($result))
{echo "<tr><td>$row[rif]</td>";
echo '<td align="center"><a href="scheda_dettaglio.php?rif='.$row['rif'].'" target=_blank alt="scheda"><img src="icona.php?rif='.$row['rif'].'"alt="scheda"></a></td>';
echo "<td>$row[comune]</td>";
echo "<td >$row[des_tabella]<br/>";
$testo = '$row[des_scheda]';

echo "<span id='prova'>$testo</span></td>";

echo "<td style=\"width: 50px\" align=\"center\">$row[mq]</td>";
echo '<td>'.number_format($row['prezzo'],0,',','.').'</td>';
echo '<td><a href="scheda_dettaglio.php?rif='.$row['rif'].'" target=_blank>scheda</a></td></tr>';
}
}
mysql_free_result ($result);
?>
</table>
.....

Sperando di aver rispettato le regole del forum, aspetto i suggerimenti di qualche anima buona. Grazie in anticipo
 
Ultima modifica di un moderatore:
ciao
non ho capito bene quello che vuoi fare, comunque c'è un errore
non
PHP:
$stringa_in_input = '$row[des_scheda]';
ma
PHP:
$stringa_in_input = $row['des_scheda'];

poi non mettere bold nel codice e usa i bcccode adeguati, in questo caso PHP
 
in pratica vorrei che la voce del campo "des_scheda" della tabella Mysql apparisse soltanto per i primi 10 caratteri seguiti dai 3 punti, dato che il testo intero è molto più lungo.
Come ho detto lo script funziona per un normale testo fuori tabella ma all'interno no.
Ho provato a sostituire
PHP:
$stringa_in_input = '$row[des_scheda]';
con
PHP:
$stringa_in_input = $row['des_scheda'];
ma mi appare un segnale di errore: Notice: Undefined variable: row, mentre la stessa correzione più in basso
PHP:
$testo = $row['des_scheda'];
funziona ma mi fa apparire l'intero testo nella tabella.
grazie dei suggerimenti ciao
 
in pratica vorrei che la voce del campo "des_scheda" della tabella Mysql apparisse soltanto per i primi 10 caratteri seguiti dai 3 punti, dato che il testo intero è molto più lungo.

grazie per i suggerimenti ciao
 
Puoi utilizzare la funzione substr di php:
PHP:
$testo = substr($row['des_scheda'], 0, 10) . '...';
 
Perfetto!!!!
Sono anche riuscito ad evitare il troncamento delle parole, se può essere utile a qualcuno inserisco il pezzetto di codice interessato:

PHP:
.....
while ($row = mysql_fetch_array ($result))
{
echo "<tr><td>$row[rif]</td>";

$numero_caratteri = 35;
$stringa_in_input = $row['des_scheda'];
if(strlen(trim($stringa_in_input))>$numero_caratteri)
{
    $testo = substr($stringa_in_input,0,strpos($stringa_in_input,' ',$numero_caratteri)).'...';
}
else
{
    $testo = $stringa_in_input;
}
echo "<span id='prova'>$testo</span></td>";
echo "<td style=\"width: 50px\" align=\"center\">$row[mq]</td>";
echo '<td>'.number_format($row['prezzo'],0,',','.').'</td>';
echo '<td><a href="scheda_dettaglio.php?rif='.$row['rif'].'" target=_blank>scheda</a></td></tr>';
} 
}
 mysql_free_result ($result);
?>
</table>

Grazie per i suggerimenti preziosi, ciao
 

Discussioni simili