Autor Zpráva
sir_lamoid
Profil
Dobrý den,
potřeboval bych poradit.
Už delší dobu se mi v hlavě válí myšlenka jak by to šlo udelat, ale vzhledem k tomu že me skušenosti s PHP jsou na urovni mírně pokročilého začátečníka nevím jak vyřešit tuto problematiku.
Vše popisuje následující obrázek:


Nadpis by byl vypsán z databáze to samé perex ten by byl "ořezan" při vkládání do db na cca. 255 znaku a ted nevím jak hlavne udelat to tlacitko číst dále. Aby když na to kliknu tak at to uživatele pošle na celý článek. Vím že by to šlo pomocí metody GET, ale nevím jak na to.
Budu rád za jakejkoliv úryvek kódu či odkaz na nějáké řešení. Skoušel jsem googlit ale nevím jak tuhle problematiku nazvat.
Pokud by ste potřebovaly zdrojové kody tak jsou ke stažení JAKO ZIP SOUBOR
Jednalo se o pololetní práci do předmětu tvorba www stránek. Více info Například zde nebo Zde. Je dostupná také dokumentace ve formě .doc a .docx souboru v ZIP archivu u zdrojových kódů.
Dokumentace také zde:

.doc http://sirlamoid.cz/Dokumentace.doc
.docx http://sirlamoid.cz/Dokumentace.docx
Again
Profil
Je to jednoduché - vytvoříš si soubor např: article.php, do odkazu "číst dále" vložíš tento odkaz <a href="article.php?id=IDCLANKU">Číst dále</a>. Id článku získáš z databáze a doplníš za rovná se. Potom v article.php pomocí globální proměnné GET data zpracuješ např:

<?php
  $clanek_id = $_GET['id']; // nutno ošetřit, $clanek_id se bude rovnat id odeslaného článku 
  // nasleduje dotaz do databáze s WHERE `id`=$clanek_id a potom si můžeš už jenom data, které potřebuješ
?>

Díky tomu ti budou vznikat třeba odkazy:
article.php?id=1
article.php?id=2
...

Přičemž podle ID poznáš o jaký článek se jedná a na základě jeho získáš data z databáze ...
JaySee
Profil
function AbstractHTMLContents($html, $maxLength=100){
    mb_internal_encoding("UTF-8");
    $printedLength = 0;
    $position = 0;
    $tags = array();
    $newContent = '';

    $html = $content = preg_replace("/<img[^>]+\>/i", "", $html);

    while ($printedLength < $maxLength && preg_match('{</?([a-z]+)[^>]*>|&#?[a-zA-Z0-9]+;}', $html, $match, PREG_OFFSET_CAPTURE, $position))
    {
        list($tag, $tagPosition) = $match[0];
        // Print text leading up to the tag.
        $str = mb_strcut($html, $position, $tagPosition - $position);
        if ($printedLength + mb_strlen($str) > $maxLength){
            $newstr = mb_strcut($str, 0, $maxLength - $printedLength);
            $newstr = preg_replace('~\s+\S+$~', '', $newstr);  
            $newContent .= $newstr;
            $printedLength = $maxLength;
            break;
        }
        $newContent .= $str;
        $printedLength += mb_strlen($str);
        if ($tag[0] == '&') {
            // Handle the entity.
            $newContent .= $tag;
            $printedLength++;
        } else {
            // Handle the tag.
            $tagName = $match[1][0];
            if ($tag[1] == '/') {
              // This is a closing tag.
              $openingTag = array_pop($tags);
              assert($openingTag == $tagName); // check that tags are properly nested.
              $newContent .= $tag;
            } else if ($tag[mb_strlen($tag) - 2] == '/'){
          // Self-closing tag.
            $newContent .= $tag;
        } else {
          // Opening tag.
          $newContent .= $tag;
          $tags[] = $tagName;
        }
      }

      // Continue after the tag.
      $position = $tagPosition + mb_strlen($tag);
    }

    // Print any remaining text.
    if ($printedLength < $maxLength && $position < mb_strlen($html))
      {
        $newstr = mb_strcut($html, $position, $maxLength - $printedLength);
        $newstr = preg_replace('~\s+\S+$~', '', $newstr);
        $newContent .= $newstr;
      }

    // Close any open tags.
    while (!empty($tags))
      {
        $newContent .= sprintf('</%s>', array_pop($tags));
      }

    return $newContent;
}

a pak tu funci voláte:
AbstractHTMLContents($obsah,255);
no a za ní můžete přidat něco jako:
<?php echo "<a href=\"#\">Číst dále&raquo;</a>"; ?>
sir_lamoid
Profil
O ja jsem si myslel že to bude něják lehké ale až tak?? :D Tak mnohokrát děkuji :D .


Again:
O ja jsem si myslel že to bude něják lehké ale až tak?? :D Tak mnohokrát děkuji :D .
JaySee
Profil
sir_lamoid:
Ta funkce co jsem poslal jen chytře zkracuje dlouhé řetězce s HTML tagy. Tedy mám v DB celý článek a tato fce mi to ořeže na +- 255 znaků s tím, že zachová html značky (otevřené ukončí) a ořeže obrázky a další ptákoviny, které se do perexu nehodí.
sir_lamoid
Profil
JaySee:
To je hodně chytré. Na to jsem nepomyslel. Tak děkuji mnohokrát.
Ještě že na "českým" internetu existují taký lidé jako vy. Kteří poradí. Děkuji.
JaySee
Profil
sir_lamoid:
Když mi bylo 13 let, začal jsem číst Yuhůho stránky jakpsatweb.cz, pak v roce 2005 přišlo toto forum a celkově jsem se díky ochotě lidí zde spoustu naučil.

Je mi dnes ctí se podělit o své zkušenosti s kýmkoliv zde.
sir_lamoid
Profil
No.... já jsem díky tomuto fóru/diskusi udělal už hodně věcí a mám taky kde co za sebou.
Viz o mě ZDE
Jinak děkuji. Zamykám.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0