Autor | Zpráva | ||
---|---|---|---|
ra100 Profil * |
ahojte,
moja otázka sa týka výpisu správy z DB na obrazovku. Ide o fórum, kde sa správa po pridaní zobrazuje. Problém spočíva v tom, že krátka správa, ktorá sa zmestí do width: 450px špecifikovaných v css pre <span>, sa zobrazí samozrejme dobre, no tzv. viac-riadkový príspevok sa mne zobrazuje samozrejme ako jeden riadok. Znamená to, že ak niekto bude písať do fóra hodinu, tak ja tam budem mať hodinu dlhý riadok ! Pokúšal som sa tento problém nekonečného riadku eliminovať nadstavením šírok v css, no skoro som zistil, že to nefunguje. Tu už nestačím ani ja, ani moje knihy. Posielam blok kódu, ktorý zobrazuje výpis z DB na stránku. while ($vypis = mysqli_fetch_array($show_added)) { echo '<hr />'; echo 'Dátum a čas : ',$vypis['datum'],'<br />'; echo 'Odosielateľ : ',$vypis['meno'],' (',$vypis['email'],')<br />'; echo 'Komentár :<span>',$vypis['sprava'],'</span><br />'; echo '<br />'; } echo '<hr />'; Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
panther Profil |
#2 · Zasláno: 13. 5. 2010, 12:40:51
ra100:
tohle nemá s PHP nic společného. Dej sem odkaz na stránku, ať je vidět, jak máš komentáře stylované. Něco tam máš špatně, dlouhý text se v čemkoliv zalomí, obzvláště, pokud je zadaná šířka. Tvůj zápis je stejně nějaký divoký. Proč je komentář ve spanu? Je to řádkový element, kterému normálně nelze zadat rozměry. Má display: block; nebo float? „Znamená to, že ak niekto bude písať do fóra hodinu, tak ja tam budem mať hodinu dlhý riadok !“ tohle jsem už vůbec nepochopil. |
||
ra100 Profil * |
#3 · Zasláno: 13. 5. 2010, 13:21:13
panther:
Momentálne to mám len v mojom pc, púšťam to na localhoste. Daj mi trochu času a nahrám to aj na web. Pridám aj kód. K tomuto Něco tam máš špatně, dlouhý text se v čemkoliv zalomí, obzvláště, pokud je zadaná šířka. a k tomuto Tvůj zápis je stejně nějaký divoký. Proč je komentář ve spanu? Je to řádkový element, kterému normálně nelze zadat rozměry. ešte dodám, že chyba je možno niekde tu - echo 'Komentár :<span>',$vypis['sprava'],'</span><br />'; kde som asi nesprávne pochopil a predpokladal, že prvok <span> bude mať vpliv hoci aj na premennu $vypis['sprava']. Ako som už písal prvok <span>, skúšal som to meniť aj s <p> napr., majú vpliv len na farbu, vyzľad typ atd. fontu. Súhlasím, ako vravíš dlouhý text se v čemkoliv zalomí, obzvláště, pokud je zadaná šířka. Preto som prekvapený, že <span> alebo <p> alebo <div> kde je to celé vložené, nemajú vpliv na zalamovanie riadku... Takže poprosím o maly mmnt ! potrebujem to dostať do formy a na web. |
||
panther Profil |
#4 · Zasláno: 13. 5. 2010, 14:00:57
ra100:
„ešte dodám, že chyba je možno niekde tu - echo 'Komentár :<span>',$vypis['sprava'],'</span><br />';“ ve výsledku se vypíše obsah té proměnné, bude to tedy obyčejné HTML. Teď koukám spíš na jinou věc. Nepíše ti to nějaké chyby celé? echo 'Komentár :<span>',$vypis['sprava'],'</span><br />'; |
||
Majkl578 Profil |
#5 · Zasláno: 13. 5. 2010, 14:57:12 · Upravil/a: Majkl578
panther:
To není tak úplně pravda, echo se chová jako funkce a dokáže tedy brát hodnoty oddělené čárkou. A dokonce je to takto údajně rychlejší.
|
||
panther Profil |
#6 · Zasláno: 13. 5. 2010, 14:58:07
Majkl578:
„To není tak úplně pravda, echo se chová jako funkce“ aha, tak to se omlouvám, netušil jsem :-) |
||
ra100 Profil * |
panther:
Tu je stránka - http://inoutdesign.eu/forum.php skús vpísať dlhší text. ... a tu je kód - <html> <head> <title>Forum</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <style type="text/css"> body { background: #b0c4de; } * { margin: 0; padding: 0; } div { width: 600px; height: auto; background: #e6e6fa;; z-index: 1; margin-left: 200px; } p { width: 450px; background-color: #FFFFFF; color: #000000; position: absolute; } #form { width: 420px; height: 325px; background: #ff8c00; left: 300px; position: absolute; } #form ul { width: 70px; height: 70x; background: red; list-style-type: none; margin-left: 10px; margin-top: 10px; font-family: verdana, georgia, arial; font-size: 13px; font-weight: bold; color: #FFFFFF; position: absolute; } #form ul li { width: 70; line-height: 13px; background: none; position: absolute; } .li_mail { margin-top: 30px; } .li_sprava { margin-top: 58px; } .meno, .email, .sprava { margin-left: 90px; position: absolute; background: #f5fffa; border: 0; color: #666666; } .meno, .email { width: 320px; } .meno { margin-top: 10px; } .email { margin-top: 38px; } .sprava { width: 400px; height: 200px; margin-left: 10px; margin-top: 90px; color: #666666; position: absolute; background-position: top; } #odosli { width: 130px; margin-top: 295px; margin-left: 160px; color: #ff8c00; background: #FFFFFF; border: 1px; padding-top: 2px; font-weight: bold; padding-bottom: 2px; } </style> </head> <body><div id="frst"> <?php $db_spojenie = mysqli_connect ('x', 'x', 'x', 'x', 3308); if (!$db_spojenie) { echo 'Pripojenie sa nepodarilo, sorry'; echo '<br />'; echo 'Popis chyby: ', mysqli_connect_error(); exit(); } $show_added = mysqli_query($db_spojenie, "SET NAMES 'utf8'"); if (!$show_added) { echo 'Posielanie SQL príkazu se nepodarilo, sorry'; echo '<br />'; echo 'Popis chyby: ', mysqli_error($db_spojenie); exit(); } if (isset($_POST['sprava'])) { $sql_prikaz = "INSERT INTO forum(datum,meno,email,sprava) " ."VALUES(NOW(),'" .mysqli_real_escape_string($db_spojenie,$_POST['meno']) ."','" .mysqli_real_escape_string($db_spojenie,$_POST['email']) ."','" .mysqli_real_escape_string($db_spojenie,$_POST['sprava']) ."')" ; $meno = $_POST['meno']; $meno = $_POST['email']; $meno = $_POST['sprava']; if ($meno == '') die('Vyplňte, prosím všetky polia !'); if ($email == '') die('Vyplňte, prosím všetky polia'); if ($sprava == '') die('Vyplňte, prosím všetky polia'); $show_added = mysqli_query($db_spojenie, $sql_prikaz); if ($show_added) echo 'Váš komentár bol pridaný. Ďakujeme.<br />'; else die('Neznáma chyba ! - Váš komentár sa nepodarilo vložiť do diskusie. Skúste sa pripojiť, prosím nekor !'); } $show_added = mysqli_query($db_spojenie, 'SELECT * FROM forum ORDER BY datum DESC'); if (!$show_added) { echo 'Posielanie SQL príkazu se nepodarilo, sorry'; echo '<br />'; echo 'Popis chyby: ', mysqli_error($db_spojenie); exit(); } while ($vypis = mysqli_fetch_array($show_added)) { echo '<hr />'; echo 'Dátum a čas : ',$vypis['datum'],'<br />'; echo 'Odosielateľ : ',$vypis['meno'],' (',$vypis['email'],')<br />'; echo 'Komentár :<p >',$vypis['sprava'],'</p><br />'; echo '<br />'; } echo '<hr />'; mysqli_free_result($show_added); if ($db_spojenie) mysqli_close($db_spojenie); ?> </div> <div id="div_form"> <form name="kniha" action="" method="post" id="form"> <ul> <li class="li_meno">Meno :</li> <li class="li_mail">Mail :</li> <li class="li_sprava">Správa :</li> </ul> <input type="text" name="meno" class="meno" /> <input type="text" name="email" class="email" /> <textarea name="sprava" class="sprava"></textarea> <input type="submit" value="Vlož komentár" id="odosli"> </form> </div> </body> </html> Moderátor Majkl578: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
panther Profil |
#8 · Zasláno: 13. 5. 2010, 15:37:09
ra100:
ten text je zalomený na dva řádky, tak je to správně. Leze pod formulář, protože ten je absolutně napozicován. Vše se zobrazuje tak, jak má (byť tvůj záměr byl asi jiný). |
||
ra100 Profil * |
#9 · Zasláno: 13. 5. 2010, 15:41:01
panther
...skús ešte raz kliknúť na ten link.... |
||
ra100 Profil * |
#10 · Zasláno: 13. 5. 2010, 15:51:06
panther:
Ano, Leze pod formulář, protože ten je absolutně napozicován., ešte sa s tým pohrám aj v ďaľších prehliadačoch. Odporúčam zatiaľ IE pre lepšie zobrazenie. |
||
ra100 Profil * |
#11 · Zasláno: 13. 5. 2010, 15:56:50
panther:
...ja na tej stránke vidím strašný chaos..... neviem, ako ty..... |
||
larryx Profil |
#12 · Zasláno: 13. 5. 2010, 16:00:37 · Upravil/a: larryx
myslím, že by si mal použiť funkciu explode (rozdeliť text na slova) a potom pomocou funkcie strlen počítať znaky slov a keď bude dajme tomu viac ako 150 znakové slovo tak aj to slovo rozdeliť... nespomeniem si na tu poslednú funkciu, ktorou rozdelíš slova, ale určite ju nájdeš v manuáli
EDIT: ta posledná funkcia môže napríklad byť aj substr_replace() |
||
petr 6 Profil |
#13 · Zasláno: 13. 5. 2010, 16:06:01
ra100:
Zalamuje se na celá slova. Pokud máš jedno slovo o délce 200 znaků, tak se to slovo nerozdělí (pokud to je tedy ten problém). Pak bude potřeba použít overflow nebo dlouhá slova rozdělovat pomocí php. |
||
ra100 Profil * |
#14 · Zasláno: 13. 5. 2010, 16:23:32
larryx:
Ďakujem larryx, budem skúšať aj tvoj postup popri ďaľších. Smerujem aj k funkcii explode. V php a mysql som ponorený len 3-4 mesiace. Takže interpretovať funkciu explode do php bude v mojom prípade trvať dni, ak nie týždne... ...zatiaĺ som celý rád, že som zbúchal aspoň toto fórum ))) V každom prípade ďakujem za radu. |
||
ra100 Profil * |
#15 · Zasláno: 13. 5. 2010, 16:30:32
petr 6:
Ďakujem peter6, po vložení overflow: hidden sa riadky upravily. Stále tam je však problém v zobrazení... ...dobrá rada ) |
||
ra100 Profil * |
#16 · Zasláno: 13. 5. 2010, 16:42:15
...riadky, ktoré presahovali, sa strácajú a celé sa to zobrazuje dosť šialene v http://inoutdesign.eu/forum.php, kde je použité overflow: hidden
a http://inoutdesign.eu/forum1.php, je bez overflow: hidden. ...ale pokrok to je. |
||
petr 6 Profil |
#17 · Zasláno: 13. 5. 2010, 16:43:52
ra100:
Opravdu očekáváš, že ti tam budou uživatelé psát slova o 60 znacích? |
||
ra+éé Profil * |
#18 · Zasláno: 13. 5. 2010, 16:48:45
petr 6:
Opravdu očekáváš, že ti tam budou uživatelé psát slova o 60 znacích? - to nie. Takže, ak som správne pochopil, je nutné na to rozdeľovanie php ? |
||
larryx Profil |
#19 · Zasláno: 13. 5. 2010, 16:56:59
mozno ti pomoze toto na rozdelenie slova...
$val="dlheeeeeeeeeeeeeeeeeeeeeeeslovo"; if(strlen($val)>=20){ $count=ceil(strlen($val)/20); for($i=0;$i < $count;$i++){ echo substr($val,($i*20),20)." "; } echo "<br>".$val. " ".$count; } |
||
ra100 Profil * |
#20 · Zasláno: 13. 5. 2010, 17:10:25
larryx:
Ďakujem larryx... Idem to skúsiť... Na začiatok mi stačí vedieť, či je možné to "dlheeeeeeeeeeeeeeeeeeeeeeeslovo" nahradiť v mojom prípade premennou $vypis['sprava']. |
||
ra100 Profil * |
while ($vypis = mysqli_fetch_array($show_added)) { echo '<hr />'; echo 'Dátum a čas : ',$vypis['datum'],'<br />'; echo 'Odosielateľ : ',$vypis['meno'],' (',$vypis['email'],')<br />'; echo 'Komentár :<p>',$val=$vypis['sprava']; if(strlen($val)>=20){ $count=ceil(strlen($val)/20); for($i=0;$i < $count;$i++){ echo substr($val,($i*20),20)." "; } echo "<br>".$val. " ".$count; }, '</p><br />'; echo '<br />'; } ...je to niečo na tento sposob? .....stránky, kde je to fórum to nezobrazujú a nehlási to ani chybu... Moderátor Majkl578: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
larryx Profil |
#22 · Zasláno: 13. 5. 2010, 17:42:51 · Upravil/a: larryx
to čo som ti postol, je len na rozdelenie slova, ešte musíš text rozdeliť na slova...
edit: tu to máš komplet aj s rozdelením textu, len si to prispôsob, ale na tvojom mieste si to prv pozriem takto samostatne <?php $text="dsadsadsadds dsaaaaaaaaad asdsad dlheeeeeeeeeeeeeeeeeeeeeeeslovodlheeeeeeeeeeeeeeeeeeeeeeeslovodlheeeeeeeeeeeeeeeeeeeeeeeslovodlheeeeeeeeeeeeeeeeeeeeeeeslovo dsadsadsad sasd dsad sadsadsadsad asdsadasdasd asdasd asdasdsadas dsadasd sssssssssssssssdddddasdasdasdas das dsadsadasd saddddddddsadsadsasdasdsada "; $rozdel_text = explode(" ",$text); echo "<div style=\"width:350px;background-color:#ccc\">"; foreach($rozdel_text as $val){ if(strlen($val)>=20){ $count=ceil(strlen($val)/20); for($i=0;$i < $count;$i++){ echo substr($val,($i*20),20)." "; } } else echo $val." "; } echo "</div>---- ROZDELENE<br><br><div style=\"width:350px;background-color:#ccc\">".$text."</div>---- NEROZDELENE" //var_dump($slovo); ?> |
||
ra100 Profil * |
#23 · Zasláno: 13. 5. 2010, 17:53:57
larryx:
...idem si to poštudovať, aj keď tuším, že si na tom zuby vylámem... ) Ďakujem za každú radu.... |
||
larryx Profil |
#24 · Zasláno: 13. 5. 2010, 18:54:19 · Upravil/a: larryx
petr 6:
„Opravdu očekáváš, že ti tam budou uživatelé psát slova o 60 znacích?“ hmm, to myslím, že nie, ale napríklad ak poznáš náš slovenský pokec tak oni to používajú... |
||
panther Profil |
#25 · Zasláno: 13. 5. 2010, 19:08:17
larryx:
„ale napríklad ak poznáš náš slovenský pokec tak oni to používajú...“ slovenský pokec sice neznám, nicméně není nutné tyhle písmenné orgie nechávat. Když každé podobné slovo vytvořené za asistence demence či zaseknuté klávesy zkrátíš na 20 znaků, nic se nestane (nevím, kolik je ve slověnštině slov delších 20 znaků, klidně si ten limit uprav). |
||
ra100 Profil * |
#26 · Zasláno: 13. 5. 2010, 20:00:34
...ako tuším správne, možností je viac.
Ja som to nadstavil na 30 znakov, aj to len "pre istotu". A čo sa týka toho kódu od larryx-a, snaźím sa to dostať do mojho kódu, ktorý je uvedený hore. Jedna vec je dostať ho tam, čo som prekvapený, že mi nehádže chybové hlášky. A druhá vec je rozhýbať ho v tom kóde aby robil, čo má a umiestniť ho tam, kde má byť. S tým už toľko šťastia nemám, nezapadá mi to stále do seba. ....s mojími variáciamy v tom kóde nadnes končím. Keby som si to nazálohoval, tak už ani neviem, ako sa volám...) Ďakujem všetkým, ktorý sa ochotne podujímajú na riešení mojho php začiatočníctva. |
||
Časová prodleva: 14 let
|
0