Autor Zpráva
Han
Profil
Dobrý deň! Xcel by som sa opýtať, ako by sa dalo spraviť niečo také že v jednej stránke mám nejaký text, a do druhej xcem dostať napríklad prvé tri vety? Ďakujem za prípadné nápady ;)
Adrifinel
Profil
Do druhé stránky tři věty z první stránky?
Han
Profil
No, niečo také. Prosto ako na výpis článkov aby som nemusel písať to isté dvakrát...
Adrifinel
Profil
Živá ukázka je nejlepší:
http://digitalnimonstra.cz/clanky.php

chceš tedy něco jako mám já u článků. kde se mi na hlavní stránce zobrazuje část textu a po rozkliknutí ten zbytek...

$str = $zaznam1["text"];
              $vypsat = SubStr($str, 0, 15);
Rellik
Profil
Substr dělá ořezy, lepší je porovnávat slova podle mezer a pak nechat vypsat jen požadovaný počet slov...
http://firstpage.rellik.eu/?page=zkraceni_clanku
Han
Profil
Ďakujem pekne, nakoniec použijem Rellikove riešenie, pretože mi to nebude sekať slová, ďakujem ;)
Han
Profil
Len trochu tomu nechápem, dal som do premennej $text ten článok ale vôbec to nefunguje, vypíše mi to akurtá tak Celý článek"; //odkaz na zobrazení celého článku } else { echo $text."
zpět"; // zpětný odkaz na zkrácený článek } ?>
? Tiež veľmi nechápem načo je tam použité to $_GET['clanek']...
Rellik
Profil
Nejspíš jsou v tom článku použité " a nebo si někde udělal chybu. To $_GET['clanek'] je tam kvůli přenosu proměnné $clanek z adresného řádku ?clanek=full. A aby se nemusela kontrolovat vstupní data, je tam jen podmínka if(!clanek) {... prostě pokud není klepnuto na zobrazení celého článku, tak se vypíše jen jeho nastavená část. Pokud je v adrese ?clanek=cokoliv - proměnná $clanek existuje a vypíše se celý článek.
Han
Profil
No tak ja neviem, úvodzovky v článku nie sú. A čo ak by som xcel len čisto vypísať ten kúsok článku, s tým že by som ho potom nenačítaval do tej istej stránky, ale po kliku na "Čítaj viac" by sa načítal napríklad čisto ten článok, prosto že by som ho potom neincludoval do súčasnej stránky ale inam?
Rellik
Profil
V tom případě bych to propojil s DB, do které bych vkládal ty články a byly by pak stránky dvě - na jedné by byly úryvky z článků a na další by se po klepnutí na odkaz zobrazovaly celé.
Jinak co se týká toho kódu, tak ho používám na několika stránkách a všude funguje bezvadně. Zkontroloval bych pořádně celý kód. Nejlépe v programu, který umí na tyto malé chybky upozornit tím že zbytek kódu po chybě je jinak zbarvený. Např http://bluefish.openoffice.nl/index.html
Han
Profil
Vec sa má takto: Mám indexový súbor webu, doň includujem súbor weby.php a v tomto súbore mám nastavené funckie na prevod HTML znakov na entity medzi značkami <pre> a includujem doň ten výpis článkov a z tohto výpisu potom potrebujem mať linky ako ./index.php?str=weby&kod=1, viem je to príliš komplikované ;) Ide mi o to nejakým spôsobom sa zbaviť toho rpedavania premennej clanok v adrese keďže nechcem zobratozovať tieto články includované do výpisu ale includované do súboru weby.php. Alebo potom nejak vyriešiť inak zmenu obsahu vo weby.php, prosto aby som tam mal najprv ten výpis a potom by sa to zmenilo na celý článok, no bez includovania. Snáď si poxopil aspoň niečo :D
Rellik
Profil
V tom případě bych to dal všechno do jednoho souboru a řešil podmínkou pokud se rovná 1 ukáže (echo) něco, pokud se rovná 2 ukáže (echo) něco jiného.. atd... Něco podobného sem dělal na http://veletiny.cz/?page=niederle ty dva první odkazy změní obsah stejné stránky pokaždé jinak... Je to pouze jedna stránka do které se podle podmínky ty jednotlivé texty , které se mění podle kliku na odkaz...

v podstatě asi tak nějak:
<?php
	$text = $_GET['text'];
	if($text){
				if($text == '1')
					{ echo "Jeden text"; }
				if($text == '2')
					{ echo "Jiný text"; }
				}
				else { echo "nějaký defaultní popis"; }
?>

odkaz by pak byl: ?text=1 atd..
případně místo echa include... Možná chceš úplně něco jiného to nevím, první si chtěl zkrátit článek, teď chceš měnit obsahy... chtělo by to nějak líp vysvětlit co to vlastně má dělat... S php si můžeš vyhrát jak chceš, jen musíš vědět jak to má nakonec fungovat a logicky to dát pak dohromady... :)
Han
Profil
No jasné, Prakticky mám niečo ako v tom kóde, len je tam to, že ajtak potrebujem includovať ten výpis ako to else (alebo ho vypísať echom) a potom neviem použiť to čo je v tom skrátení. Tam je to aj s tým, že ak nie je vypísaný skrátený článok, vypíše sa celý. A ja potrebujem z toho nejak vykuchať iba to skrátenie bez všetkého ostatného a skrátený text dostať do premennej a vypísať. Potom rozmýšľam že keď to budem načítavať do premennej to skrátené, tak budem pri viacerých článkoch potrebovať pole a to vypisovať. Takže, ide mi len o to, nejak vykuchať z toho skrátenia čisto skrátenie bez toho že ak nie je vypísaný krátky, vypíše sa celý článok a nejak bez tej premennej clanek. Prosto aby mi to z premennej kde bude článok len jednoducho vypísalo tých 15 slov porátaním medzier a ja neviem čím.
Han
Profil
A keď prosto okopírujem to skrátenie tak mi to vypíše túto blbosť
Celý článek"; //odkaz na zobrazení celého článku } else { echo $text." zpět"; // zpětný odkaz na zkrácený článek } ?>
=/
Han
Profil
Už som to rozchodil, ďakujem pekne ;) Mám ešte jeden dotaz a síce, či je možné nejak prevrátiť vypisovanie, tzn. článok s adresou "1.php" sa zobrazí až po článku s adresou "2.php" atď. nápady? ďakujem. Plus, čo keď mám v tom článku (1.php) aj nadpis a potrebujem, aby mi vyberalo nadpis+ 25 slov z textu obaleného <p> značkami?
Rellik
Profil
Han:
vyberalo nadpis+ 25 slov z textu obaleného <p> značkami
Na výběr textu můžeš použít regulární výraz http://firstpage.rellik.eu/?page=vypis_textu + ten script na zkrácení článku..
Han
Profil
Zasa tomui šibe...
echo "...  <a href=' ../index.php?str=weby&clanok=1'>";
echo "Celý článek";
echo "</a>"; 

// ETC.

$vyber--; // Zmenšujem číslo súboru a beží to znova
}

hneď po ">" na prvom riadku to prestáva fungovať a vypisuje mi kód na stránku :/ Pritom chyba v tomto kóde nie je, pretože keď tento kód spustím neincludovaný do webu tak to ide...
Han
Profil
Chyba bude zrejme v tomto:
function BezHTML($vstup) {
$text = file_get_contents($vstup); // Nacitam vypis clankov
function nahrada($m) { 
  return $m[1] . htmlspecialchars($m[2], ENT_QUOTES, 'UTF-8', false) . $m[3];  
}
$vystup = preg_replace_callback('~(<pre>)(.*)(</pre>)~isU', 'nahrada', $text); // Konvertujem 
echo $vystup; //Vypisem to co mi ostalo po konvertovani  
}

Pretože ak to tam nie je tak to beží, ajkeď to vyhodnocuje HTML medzi značkami <pre>, no keď to zapnem tak to vypíše balast typu

(.*)<\/h2>/Us",$text,$nadpis, PREG_SET_ORDER); echo ""; echo $nadpis[0][1]; echo "";
"; echo $male[0][1]; echo "
(.*)<\/small>/Us",$text,$male, PREG_SET_ORDER); echo ""; echo $male[0][1]; echo ""; preg_match_all("/


Kde je problém?
Han
Profil
Viem, prepáčte :/ Len dodám, že keď som tento výpis includoval do čistej stránky tak to ide, ale keď includujem do stránky ktorá už je includovaná v indexe webu tak to po kliknutí na zobrazenie celého článku zhodí apache, vypíše nadpis, prvý odsek a začne donekonečna vypisovať dva odseky textu, a ak dodám prekonvertovávanie HTML značiek medzi <pre> tak mi to namiesto includovania výpisu článkov napíše balast ako
(.*)<\/h2>/Us",$text,$nadpis, PREG_SET_ORDER); echo ""; echo $nadpis[0][1]; echo "";
"; echo $male[0][1]; echo "
(.*)<\/small>/Us",$text,$male, PREG_SET_ORDER); echo ""; echo $male[0][1]; echo ""; preg_match_all("/

Mám taký pocit že chyba bude niekde v tom že mám dve systémy na include v podstate v jednej stránke a to v indexe celého webu
if (!isset($_GET['str'])) {
$stranka= "uvod"; }
else {$stranka= $_GET['str'];}
$subor= $stranka.".php" or ".html" ;
if (!file_exists($subor)) {
$subor= "nenaslo.php"; };

include $subor;

a v includovanom súbore weby.php mám ešte na includovanie článkov a výpisu kód
if (!isset($_GET['clanok'])) {
$strankaa= "index"; }
else {$strankaa= $_GET['clanok'];}
$soubor= "weby/".$strankaa.".php" or ".html" ;
if (!file_exists($soubor)) {
$soubor= "nenaslo.php"; }; 

include $soubor;


Pretože ako som spomínal, keď si otvorím súbor weby.php samostatne a nie includovaný tak to fachá...
Han
Profil
Nakoniec je nejaký problém tu
function nahrada($m) { 
return $m[1] . htmlspecialchars($m[2], ENT_QUOTES, 'UTF-8', false) . $m[3];  
};
$vystup = preg_replace_callback('~(<pre>)(.*)(</pre>)~isU', 'nahrada', $vstup); 

Ako mám premennú $vystup tak tam po > v prvom <pre> už len vypíše na stránku kód do konca...
Lepšie povedané, spracuje to značky <pre> pretože hneď po tejto značke to už len vypisuje ale uzatváraciu značku to tiež nevypíše...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0