strlen im content block, wie?

Begonnen von -eSmeR-, 01 Juli 2006, 08:41:18

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

-eSmeR-

hallo, ich hab mein content-block bisschen umgebaut... er ruft mir jetzt die tabelle page_header aus der datenbank mit raus... dabei kommt ja das bild mit dem page_header text... das sieht gut aus aberrrr

.....

ich hätte gern das er mir den page_header text was er da komplett ausgibt, nur einen kleinen teil ausgibt.. z.b 120 zeichen vom anfang. Das ist doch mit der funktion strlen möglich oder?

habs zumindest gelesen bei php-manual aber ich bekomm das net hin, könnt ihr mir helfen vielleicht? Wie kann ich es realisieren?

hier der code...

// Blockcache ermoeglichen
$mxblockcache = TRUE;

// Modulname
$module_name = 'Content';

// Anzahl der angezeigten Links, 0 um alle Links anzuzeigen
$limit = 15;


/************************************************************************/

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

global $prefix;
$limit = ($limit) ? ' LIMIT '.intval($limit) : '';
$content = '';
$result = sql_query("SELECT pid, title, signature, page_header FROM ".$prefix."_pages WHERE active='1' ORDER BY date ".$limit."");
while(list($pid, $title, $signature, $page_header) = sql_fetch_row($result)) {

$content .= '
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td></td>
</tr>
<tr>
<td><a href="modules.php?name='.$module_name.'&amp;pa=showpage&amp;pid='.$pid.'"><b>'.$signature.'</b></a></td>
</tr>
<tr>
<td><a href="modules.php?name='.$module_name.'&amp;pa=showpage&amp;pid='.$pid.'"><b>'.$title.'<br>'.$page_header.'</b></a></td>
</tr>
</table>';
}

?>

bajazzo

Zitat von: -eSmeR- am 01 Juli 2006, 08:41:18
ich hätte gern das er mir den page_header text was er da komplett ausgibt, nur einen kleinen teil ausgibt.. z.b 120 zeichen vom anfang. Das ist doch mit der funktion strlen möglich oder?

Nicht ganz, strlen() gibt die Länge einer zk zurück. Du kannst abfragen wie lang ist deine zk, und dann ausgeben genau das was du haben willst, z.B. die ersten 120 Zeichen mit substr().

if ((strlen($variable))<=120)
    {
       $ausgabe = $variable;
    }
    else
    {
      $ausgabe = substr($variable, 0,120);
    }
Genie ist die grenzenlose Bereitschaft, sich Mühe zu geben.

Musicman75

wieso so umständlich?

einfach an der Stelle, wo die ausgabe erfolgt folgendes einsetzten:

mxCutString($title,40," ...",'')

jetzt wird der titel nach 40 Zeichen abgeschnitten und drei punkte werden angehängt.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

-eSmeR-

danke für die schnelle antwort...

hab mal so gemacht wie ihr es gesagt habt, aber ehm geht net, er zeit mir immer noch von $page_header den kompletten inhalt an...

ist das falsch?

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

global $prefix;
$limit = ($limit) ? ' LIMIT '.intval($limit) : '';
$content = '';
$result = sql_query("SELECT pid, page_header, signature FROM ".$prefix."_pages WHERE active='1' ORDER BY date ".$limit."");

if ((strlen($page_header))<=120)
    {
       $ausgabe = $page_header;
    }
    else
    {
      $ausgabe = mxCutString($page_header,40," ...",'');
    }

while(list($pid, $page_header, $signature) = sql_fetch_row($result)) {
$content .= '

Musicman75

lass dieses ganze strlen geraffel weg. einfach mxcutstring reinsetzten, wo die ausgabe erfolgen soll. alles was kürzer ist wird eh nicht abgeschnitten.

setzt statt 40 einfach 120 rein, dann hast den gleichen effekt.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

-eSmeR-

hää versteh nur noch bahnhof... *verwirrt*

Musicman75

wenn ich jetzt mal deinen code aus dem beitrag nehme, sieht das dann so aus:

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

global $prefix;
$limit = ($limit) ? ' LIMIT '.intval($limit) : '';
$content = '';
$result = sql_query("SELECT pid, page_header, signature FROM ".$prefix."_pages WHERE active='1' ORDER BY date ".$limit."");

$content .= '".mxCutString($page_header,40," ...",'')."';

while(list($pid, $page_header, $signature) = sql_fetch_row($result)) {
$content .= '
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

-eSmeR-

hab das mal eingefügt... jetzt gib der mir parse error aus :(((((


Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\xampp\htdocs\cms\blocks\block-Content.php on line 40


und in der 40 Zeile steht das hier:

while(list($pid, $page_header, $signature) = sql_fetch_row($result)) {
$content .= '


ich hab mal den block als anhang angefügt... hab ich da was anderes falsch gemacht?




[gelöscht durch Administrator]

Musicman75

wie gesagt, es muss dort rein, wo der text ausgegeben werden soll. genau dort.

schmeiss das oben raus und setz es in die tabelle rein, wo jetzt nur das pageheader steht.

also muss die zeile so aussehen:
<td><div class="boxbox"><font face=arial size=1><a href="modules.php?name='.$module_name.'&amp;pa=showpage&amp;pid='.$pid.'">'.mxCutString($page_header,40," ...",'').'</div></a></font></td>
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

-eSmeR-

okay vielen dank... so gibt er zwar keine fehler aus, aber der $page_header ist immer noch nicht zu sehen... da ist das feld einfach leer... ohne ausgabe... :S woran kann das liegen?

so sieht der code zur zeit aus, so zeigt er auch das block an ohne fehler, nur halt wie gesagt, er gibt es nicht aus.

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

global $prefix;
$limit = ($limit) ? ' LIMIT '.intval($limit) : '';
$content = '';
$result = sql_query("SELECT pid, page_header, signature FROM ".$prefix."_pages WHERE active='1' ORDER BY date ".$limit."");
while(list($pid, $page_header, $signature) = sql_fetch_row($result)) {


$content .= '<div class="boxbox"><font face=arial size=1><a href="modules.php?name='.$module_name.'&amp;pa=showpage&amp;pid='.$pid.'">'.mxCutString($page_header,40," ...",'').'</div></a></font>';
}

?>

Musicman75

Versuch mal das hier, das funktioniert bei mir. Es muss natürlich auch etwas drin stehen in den Feldern.
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

global $prefix;
$limit = ($limit) ? ' LIMIT '.intval($limit) : '';
$content = '';
$result = sql_query("SELECT pid, title, page_header, signature FROM ".$prefix."_pages WHERE active='1' ORDER BY date ".$limit."");
while(list($pid, $title, $page_header, $signature) = sql_fetch_row($result)) {

$content .= '<div class="boxbox"><font face=arial size=1><a href="modules.php?name='.$module_name.'&amp;pa=showpage&amp;pid='.$pid.'">'.mxCutString($title,40," ...",'').'</div></a></font>';
$content .= '<div class="boxbox"><font face=arial size=1><a href="modules.php?name='.$module_name.'&amp;pa=showpage&amp;pid='.$pid.'">'.mxCutString($page_header,40," ...",'').'</div></a></font>';
$content .= '<hr noshade size="1" width="90%">';
}

?>
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

-eSmeR-

jawohl sir, jetzt geht es inwandfrei :) ich dank dir vielmals musicman75... *freu* :) :thumbup: