pragmaMx Support Forum

pragmaMx => Individuelle Anpassungen => Thema gestartet von: -eSmeR- am 01 Juli 2006, 08:41:18

Titel: strlen im content block, wie?
Beitrag von: -eSmeR- am 01 Juli 2006, 08:41:18
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>';
}

?>
Titel: Re: strlen im content block, wie?
Beitrag von: bajazzo am 01 Juli 2006, 13:32:02
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);
    }
Titel: Re: strlen im content block, wie?
Beitrag von: Musicman75 am 01 Juli 2006, 13:34:39
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.
Titel: Re: strlen im content block, wie?
Beitrag von: -eSmeR- am 01 Juli 2006, 16:28:46
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 .= '
Titel: Re: strlen im content block, wie?
Beitrag von: Musicman75 am 01 Juli 2006, 17:52:25
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.
Titel: Re: strlen im content block, wie?
Beitrag von: -eSmeR- am 01 Juli 2006, 18:27:26
hää versteh nur noch bahnhof... *verwirrt*
Titel: Re: strlen im content block, wie?
Beitrag von: Musicman75 am 01 Juli 2006, 18:50:17
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 .= '
Titel: Re: strlen im content block, wie?
Beitrag von: -eSmeR- am 01 Juli 2006, 20:09:34
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]
Titel: Re: strlen im content block, wie?
Beitrag von: Musicman75 am 01 Juli 2006, 22:04:36
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>
Titel: Re: strlen im content block, wie?
Beitrag von: -eSmeR- am 01 Juli 2006, 22:24:34
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>';
}

?>
Titel: Re: strlen im content block, wie?
Beitrag von: Musicman75 am 02 Juli 2006, 11:57:37
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%">';
}

?>
Titel: Re: strlen im content block, wie?
Beitrag von: -eSmeR- am 02 Juli 2006, 17:34:17
jawohl sir, jetzt geht es inwandfrei :) ich dank dir vielmals musicman75... *freu* :) :thumbup: