MAx. Zeichen in eine Table ?

GodWar

Erfahrenes Mitglied
Guten Tag Leute !

Ist es möglich in einem <td></td> eine maximale Zeichanzahl festzulegen? Ich hab eine kleine Tabelle von 80px und möchte darin Text ausgeben in mehreren Zeilen je eine Wort. Wenn das Wort aber länger als z.B. 15 Zeichen ist soll er abbrechen und an dem Buchstaben aufhören und 3 Punkte machen.

Das ist mein Code:
PHP:
<?   
$sql = "SELECT * FROM ".$dbprefix."top100 WHERE platz>0 ORDER BY platz ASC LIMIT 10";  
$result = mysql_query($sql) or die(mysql_errno().":".mysql_error());   
$count = mysql_num_rows($result);  

$ausgaben = "<table class=\"mitglieder_text\" style=\"width: 100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\">\n\n";  

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

$i++; 

if($i % 2 == 0){ 
$bg = "#eaeaea"; 
} else { 
$bg = "#ffffff"; 
} 

$ausgaben .= "<tr bgcolor=\"".$bg."\">\n";  

$ausgaben .= "<td style=\"width: 90px\"><font style=\"font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;\">".stripslashes($row[artist])."</font></td>\n";

}  

$ausgaben .= "</table>\n\n";  

echo $ausgaben;  
?>
 
Zuletzt bearbeitet:
Wenn die Worte einzeln in einer Variablen gespeichert sind kannst du ihre Länge mit strlen() zählen. Ist die Länge größer als 15 (If-Abfrage) gibst du mit substr() nur die gewünschte Anzahl an Buchstaben plus die drei Punkte aus, ansonsten das ganze Wort.
 
Zuletzt bearbeitet:
Weiß ich habe ich schon versucht jedoch vergeblich! Schau Dir den Code oben mal an... Ich bekomms net reingefrimmelt ^^
 
Ein kurzes, einfaches Beispiel:
PHP:
<?php

	$string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla ut.';
	echo (strlen($string)>15) ? substr($string, 0, 15).'…' : $string;

?>
 
Njo normalerweiße ich geben ja nicht so aus ich geben in so aus:

".stripslashes($row[artist])."
 
Und was hindert dich bitte daran es so zu machen:
PHP:
.strlen( stripslashes($row[artist]) )>15 
  	? substr( stripslashes($row[artist]), 0, 15 ).'…' 
  	: stripslashes( $row[artist] ).
 
Zuletzt bearbeitet:
Jaein! Das Problem ist dann aber der css code! Mit

".stripslashes($row[artist])."

gibt er mir schön untereinander 10 Artisten aus...

Mit Deinem Nebeneinander und ohne den dazugehörigen CSS Code alsi Schrift..

Warum?
 
Und was hindert dich bitte daran es so zu machen:
Ein „Parsing“-Fehler. Wenn das Ganze jedoch noch eingeklammert wird, sollte es funktionieren.
PHP:
… .( strlen(stripslashes($row['artist']))>15 ? substr(stripslashes($row['artist']),0,15).'…' : stripslashes($row['artist']) ). …
Natürlich ließe sich der gesamte Quellcode noch etwas optimieren und übersichtlicher strukturieren:
PHP:
<?php

	$sql = "
		SELECT
		        `artist`
		  FROM
		        `".$dbprefix."top100`
		  WHERE
		        `platz` > 0
		  ORDER BY
		        `platz` ASC
		  LIMIT
		        10
		";
	$result = mysql_query($sql) or die(mysql_error().'<pre>'.htmlentities($sql));
	$i = 0;

	echo '<table class="mitglieder_text" style="width:100%" cellpadding="2" cellspacing="0">';
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo sprintf(
			'<tr style="background-color:%s"><td style="width:90px; font-family:Verdana,Arial,Helvetica,sans-serif; font-size:10px;">%s</td></tr>',
				( $i++ % 2 == 0 )
					? '#eaeaea'
					: '#ffffff',
				strlen(stripslashes($row['artist'])) > 15
					? substr(stripslashes($row['artist']), 0, 15) . '…'
					: stripslashes($row['artist'])
			);
	}
	echo '</table>';

?>
 
Zurück