ugrás a tartalomhoz

Admin felület

peter71 · 2009. Aug. 2. (V), 19.49
Sziasztok!

Készítek egy admin felületet, ahol egyebek mellett termékeket is tud felvinni a felhasználó. A felhasználónak lehetősége van felvitel, módosítás és törlés lehetőségek közül választani.
Az oldal megnyitásakor lefut egy select, amely megjeleníti a termékeket egy táblázatban. A termékhez tartozó leírás azonban sokszor hosszú ahhoz, hogy egy táblázatban kultúrált módon megjeleníthessem.
Gondoltam arra, hogy csak az első két sort kellene megjeleníteni és abból egy linket csinálni. amely az alatta lévő fckeditor szerkesztő ablakába másolja a teljes szöveget.

1. Milyen egyéb normális megjelenítési mód lehetséges ilyen esetben?

2. Hogyan lehet egy szöveg elejéből levágni egy hosszabb részt, amiből linket csinálhatok?

Köszönöm:
Peter71
 
1

Ha már JavaScript

Thoer · 2009. Aug. 2. (V), 20.21
akkor inkább ott mutasd meg a többi szöveget, ahol amúgy is lenne, ne másolgasd sehova. Hosszú szövegeket levágod, "részletek" gombot kirakod, megnyomva megmutatod a maradékot. Szerintem a nagyobb keretrendszerekhez még kész komponenst is találsz erre.
2

A Joomla-nak van ilyen, de

peter71 · 2009. Aug. 2. (V), 21.07
A Joomla-nak van ilyen, de itt mit kezdjek vele? Egy táblában jelennek meg a termékek. A "részletek" gomb a táblát megnövelve mutassa meg a szöveget? Gondolom ezt javascript kóddal lehetne megoldani. Hol vágjam le a szöveget, számoljak meg 30 karaktert? Valahogy úgy kellene csinálni, hogy ha megszámolom a karaktereket, akkor a hozzá legközelebb eső space-nél vágjon. Sajnos, nem nagyon értek a javascripthez.
Nincs megoldás php-ban?
3

Részletek oldal

Poetro · 2009. Aug. 2. (V), 22.10
Amikor a részletek gombra kattint, akkor átviszed a részletek oldalra, ahol törölhet, vagy szerkeszthet. Az első X karakter megjelenítését meg meg tudod csinálni PHP-ból, csak alap string függvények kellenek hozzá, vagy ha igazán szépen akarod csinálni akkor regex.
4

Vagy trükk: split()! A

deejayy · 2009. Aug. 3. (H), 10.26
Vagy trükk: split()!

A splitnek megadod, hogy a határoló a space legyen, az eredmény egy tömb lesz, aminek elemei a "szavak", azután a tömb első 10 elemét implode-dal összefűzöd, majd teszel hozzá három pontot (...) és kész is :)
5

A regex megoldás is jónak

peter71 · 2009. Aug. 3. (H), 14.00
A regex megoldás is jónak tűnik, de még csak most olvastam róla. Jó lenne gyakorolni. Ezzel a minta elejéről visszakapom az első 150 karaktert:
^[0-9a-zA-Zöüóőúéáűí ,!()\.-]{150},
de hogy tudom megoldani, hogy ne vágjon ketté szavakat?
Mivel tudom kiíratni a képernyőre az eredményt?
Próbáltam ezzel, de nem jön létre a "$talal".
ereg("^[0-9a-zA-Zöüóőúéáűí ,!()\.-]{150}", $wtomb['description'],$talal)
Köszönöm
Peter71
6

PCRE

Poetro · 2009. Aug. 3. (H), 17.53

preg_match('/^(.{150,})\b/U', $wtomb['description'], $matches);
$description = reset($matches);
print $description; // kiíratom
7

Sajnos nem működik.

peter71 · 2009. Aug. 3. (H), 21.35
Sajnos nem működik. Elmagyaráznád a kifejezést, mert nem értem?
8

Példa

Poetro · 2009. Aug. 3. (H), 21.43
<?php
header("Content-type: text/plain; charset=utf-8");
$original = <<<__END__
A regex megoldás is jónak tűnik, de még csak most olvastam róla.
Jó lenne gyakorolni. Ezzel a minta elejéről visszakapom az első 150 karaktert:
^[0-9a-zA-Zöüóőúéáűí ,!()\.-]{150},
de hogy tudom megoldani, hogy ne vágjon ketté szavakat?
Mivel tudom kiíratni a képernyőre az eredményt?
Próbáltam ezzel, de nem jön létre a "\$talal".
__END__;

if (preg_match('/^(.{150,})\b/sU', $original, $matches)) {
  $trunc = end($matches);
}
else {
  $trunc = $original;
}
var_dump($trunc);
?>
Kimenet:
string(151) "A regex megoldás is jónak tűnik, de még csak most olvastam róla.
Jó lenne gyakorolni. Ezzel a minta elejéről visszakapom az első 150 karaktert"
A regex viszonylag egyszerű. Vegyél legalább 150 karaktert, amit egy szóhatár követ. Van rajta két módosító, az U ungready, azaz ne legyen az algoritmus mohó. Valamint egy s, hogy a pont mindenre illeszkedjen, azaz a sortörésre is.
9

Az előbb kimaradt az s

peter71 · 2009. Aug. 3. (H), 21.53
Az előbb kimaradt az s módosító, most már működik. Mit jelent az "algoritmus mohó"? És ez <<<__END__?

Köszönöm a segítséget és a gyors választ.
10

Heredoc és mohó

Poetro · 2009. Aug. 3. (H), 22.00
Az <<<__END__ a heredoc szintaxisnak megfelelő string, az hogy egy reguláris kifejezés mohó, pedig azt jelenti, hogy mindent, amit lehet, felfal.
/.*a/ mohó, elfogyaszja az utolsó a-ig a szöveget.
/.*a/U nem mohó, az első a-ig fogyaszt csak.
11

a split meg regexp jo nagy badarsag

Greg · 2009. Aug. 4. (K), 12.37
strpos es utana substr. az elsovel megkeresel egy hatarolo jelet ami mondjuk egy irasjel, a masikkal meg levagod a szoveget.
12

oktass még még

gex · 2009. Aug. 4. (K), 12.48
regexp jo nagy badarsag
majd ha megtanulod használni - mert gyanítom életedben nem használtad még - akkor mondj véleményt.
13

Re:

Greg · 2009. Aug. 4. (K), 13.13
erre a celra badarsag regexp-et hasznalni
egyebkent miota ismerjuk egymast hogy ilyen jol tudod hogy nem tudom hasznalni? :)
14

lol

gex · 2009. Aug. 4. (K), 13.42
erre a celra badarsag regexp-et hasznalni
valóban sokkal célszerűbb egy rakás sztring-függvényt használni.

egyebkent miota ismerjuk egymast hogy ilyen jol tudod hogy nem tudom hasznalni? :)
miért, tudod?
15

re

Greg · 2009. Aug. 4. (K), 14.06
"valóban sokkal célszerűbb egy rakás sztring-függvényt használni."
jo nagy rakas az a ketto, es mivel a regexp-es megoldasnal egy if is van az sokkal tobb eroforrast emeszt, mintha nelkule csinalod.
"miért, tudod?"
nem, dehogy tudom :), nem is ertek en semmihez. csak probalok itt okoskodni :). egyebkent is kertesz vagyok csak a nyari szabimat toltom es osztom az eszt a weblaboron
16

strpos + \b

Poetro · 2009. Aug. 4. (K), 14.25
Azért megnézem, hogy hány darab strpos + substr-t kell kiadnod, hogy a \b működését reprodukáld. És akkor máris eléggé sok if lesz.

ui: Valószínűleg, egy a 150. karaktertől kezdődően ciklikus vizsgálata a karaktereknek (persze nem byte hanem karakter szinten, mert ugye lehet a szöveg UTF-8 vagy UCS2 is) gyorsabb lenne. De ehhez se strpos, se substr nem szükséges.
18

multibyte

gex · 2009. Aug. 4. (K), 14.34
persze nem byte hanem karakter szinten
multibyte függvények. van mb_strpos és mb_substr is.
17

na lássuk

gex · 2009. Aug. 4. (K), 14.33
akkor Poetro példája alapján:

$trunc = preg_match('/^(.{150,})\b/sU', $original, $matches) ? end($matches) : $original;
mutatnál egy ezzel egyenértékű sztringműveleteken alapuló megoldást?
19

re

Greg · 2009. Aug. 4. (K), 16.07
mint ahogy azt feljebb is irtam jelen esetben en egy ilyen megoldast gyorsabbnak, esszerubnek tartok:
substr($text,0,strpos($text,'.'));
igy egy ertelmes mondatunk fog megmaradni es nem egy felbevagott mondat.
de inkabb visszavonulok es nem szolok bele a nagyok dolgaba :) megyek vissza kerteszkedni
20

lol

gex · 2009. Aug. 4. (K), 16.21
ez visszaadja az első ponttal lezárt mondatot. ez hol egyenértékű a "badar" preg_match-es megoldással?
21

re:lol

Greg · 2009. Aug. 4. (K), 16.33
szerintem komoly szovegertelmezesi problemaid vannak. nem azt irtam hogy egyenerteku hanem hogy ebben az esetben en(es csakis en a kertesz :) ),ezt tartanam esszerunek.
te a programozo nem. tudod ilyen ez a vilag, ahany ember annyi nezopont
22

pff

gex · 2009. Aug. 4. (K), 20.09
te nem egy - általad ésszerűnek vélt - megoldást közöltél, hanem belekötöttél mások megoldásának részleteibe. ha máskor úgy kezded majd, hogy neked más elképzelésed van a megoldásról és nem annak menetéről (ráadásul szakmailag megkérdőjelezhető módon) akkor nem ez lesz a vita kimenetele...
23

Bocsánat, hogy közbe szólok,

peter71 · 2009. Aug. 4. (K), 21.23
Bocsánat, hogy közbe szólok, de jelenleg a regex megoldás jobb, mert nem egy mondatot szeretnék, hanem kb két sort a leírásból. Szerintem az admin jobban tud emlékezni mit írt be, mint egy mondat alapján. Viszont a megoldásod, ha egy mondatra lesz szükségem megjegyzem, mert én most tanulom az egészet és nekem minden megoldás amit írtok segít.

Köszönöm:
Peter71
24

Admin felület

peter71 · 2009. Aug. 7. (P), 08.02
Esetleg kaphatnék javaslatokat egy admin felület kinézetére, technikájára?
Mivel ez az első komolyabb oldalam, és még nem készítettem admin felületet szeretném tudni mire érdemes figyelni.

Köszönöm:
Peter71