MySQL Ausgabe kürzen

Idefix001

Grünschnabel
Hallo zusammen,

ich habe folgendes vor, ich will die Ausgabe meiner MySQL Abfrage auf 15 Zeichen kürzen. An anderer Stelle funktioniert das schon, allerdings hat die Ausgabe dort nur eine Zeile, jetzt sind es mehrere und wenn ich die kürzen will, haben alle den selben namen.
PHP:
while($dbRow = mysql_fetch_object ($query))
								{
								

								
	$arra = explode(".", $dbRow->dateiname);
	for($i = 0; $i <= count($arra)-2; $i++) 
        {
	$dateinamealt[] = $arra[$i];
	}

	$dateiname = implode(".", $dateinamealt);
        $dateiname2 = shortText($dateiname,15);


print ("<tr>\n");
print ("<td><input name=\"auswahl[]\" type=\"checkbox\" value=\"".$dbRow->dateiname."\"></td>\n");
print ("<td style=\"width:305px;position:center;\">
<a href='http://xxx?".$dbRow->dateiid."'>$dateiname2</a></td>\n");
 print ("<td>$dbRow->datum</td>\n");
 print ("</tr>\n");
								}

Ich hoffe ihr könnt mir helfen. Vielen Dank!

Gruß

Idefix
 
Zuletzt bearbeitet:
Hi und Willkommen bei tutorials.de,

was steht denn in shortText?

Und da ich mir nicht ganz sicher bin, dich richtig verstanden zu haben,
hast du vllt. ein Beispiel vorher-nachher (vom ganzen DB-Wert aus gesehen)?
 
Danke, für den Willkomensgruß!

Also die Funktion sieht so aus:
PHP:
function shortText($string,$lenght) {
       if(strlen($string) > $lenght) {
	$string = substr($string,0,$lenght)."[...]";
	$string_ende = strrchr($string, " ");
	$string = str_replace($string_ende," [...]", $string);
	}
       return $string;
								}

Die Ausgabe sieht normal so aus (also ohne kürzen):
PHP:
while($dbRow = mysql_fetch_object ($query))
                                {

print ("<tr>\n");
print ("<td><input name=\"auswahl[]\" type=\"checkbox\" value=\"".$dbRow->dateiname."\"></td>\n");
print ("<td style=\"width:305px;position:center;\">
<a href='http://xxx?".$dbRow->dateiid."'>$dbRow->dateiname</a></td>\n");
 print ("<td>$dbRow->datum</td>\n");
 print ("</tr>\n");

Was danndas ergibt:

[x] Dateiname1 Datum1
[x] Dateiname2 Datum2

Ziel ist es wenn der Dateiname länger als 15 Zeichen ist ihn abzuschneiden: Dateina[...], das klappt soweit auch, nur dass halt dann nur der erste gekürzt wird und es bei Zeilen dann der selbe gekürzte Namen da steht.


Wie gesagt funktioniert das an anderer Stelle mit diesem Code bereits:
PHP:
$dbRow = mysql_fetch_object ($query);

$datei= ("$dbRow->dateiname");
$endung = pathinfo("xxx/$datei");
$probe = $endung['extension'];


function shortText($string,$lenght) {
    if(strlen($string) > $lenght) {
        $string = substr($string,0,$lenght)."[...]";
        $string_ende = strrchr($string, " ");
        $string = str_replace($string_ende," [...]", $string);
    }
    return $string;
}
$arra = explode(".", $datei);
for($i = 0; $i <= count($arra)-2; $i++) {
    $dateinamealt[] = $arra[$i];
}

$dateiname = implode(".", $dateinamealt);
$dateiname2 = shortText($dateiname,12);


 
  echo ("<br><a onmouseover=\"Tip('$dbRow->dateiname')\" onmouseout=\"UnTip()\" href='http://x?".$dbRow->dateiid."'>$dateiname2.$probe</a>");

Der Unterschied hier ist halt, dass die Abfrage nur eine einzige Zeile zurückgibt. Danke für die Hilfe.
 
Was passiert wenn du es so schreibst:

PHP:
echo '<td style="width:305px; position:center;"><a href="http://xxx?' .$dbRow->dateiid. '">' .shortText($dbRow->dateiname, 15) .'</a></td>\n';

Das wäre dann die Zeile aus der WHILE-Schleife die du für den ungekürzten Text oben stehen hast.
 
Zurück