Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ograniczanie liczby pobieranych znaków...
The Night Shadow
post
Post #1





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W jaki sposób pobrać z bazy np jedynie 50 znaków...? (w przypadku gdy chodzi o ukazanie części artykułu)
Go to the top of the page
+Quote Post
Neotion
post
Post #2





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 13.09.2004

Ostrzeżenie: (0%)
-----


Możesz je uciąć po pobraniu tzn
  1. <?
  2. $short = substr($str,0,50);
  3. ?>


lub też jak nie chcesz ucinać w połowie
  1. <?
  2. // Troszke trywialne...
  3. $pos = strchr(substr($str,0,50),' ');
  4. $str = substr($str,0,$pos).'...';
  5. ?>


o tym chyba wiedziałeś...
Pobrać z bazy jedynie 50 znaków to się chyba nie da...
Go to the top of the page
+Quote Post
NuLL
post
Post #3





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Cytat
Pobrać z bazy jedynie 50 znaków to się chyba nie da...

Nie gadaj bzur.
  1. SELECT LEFT(pole,50)
  2. FROM tabela

Pozatym jaki ma to zwiazek z php

Przenosze na MySQL
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #4





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


$ostatnipost = mysql_query("SELECT LEFT(tresc,50) FROM priv_tresc WHERE

dalej jest zmienna

$osttatnipost = mysql_fetch_assoc($ostatnipost);

Która ma być gdzieś tam wyświetlana np.: ".$osttatnipost['tresc']."

Nie wyświetla się nic
Go to the top of the page
+Quote Post
NuLL
post
Post #5





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Moze bys laskawie bbCode zaczal uzywac (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

  1. SELECT LEFT(pole,50) AS krotkaTresc
  2. FROM tabela

Zrob sobie print_r dla tablicy wynikowej i wszystko zobaczysz.
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #6





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Wystąpił jeszcze jeden mały problem:

  1. <?php
  2. $ostatnipost = mysql_query("SELECT LEFT(tresc,50) AS 'oost' FROM priv_tresc WHERE (((nadawca='$zkim' and odbiorca='".$_SESSION["login"]."') and (id_tematu=".$wiersz["id_tem"].")) or ((odbiorca='$zkim' and nadawca='".$_SESSION["login"]."') and (id_tematu=".$wiersz["id_tem"]."))) ORDER by 'data' DESC LIMIT 1");
  3. $osttatnipost = mysql_fetch_assoc($ostatnipost);
  4. $statnipost = mysql_query("SELECT LEFT(tresc,50) AS 'osta' FROM priv_tresc WHERE (((nadawca='$zkim' and odbiorca='".$_SESSION["login"]."') and (id_tematu=".$wiersz["id_tem"].")) or ((odbiorca='$zkim' and nadawca='".$_SESSION["login"]."') and (id_tematu=".$wiersz["id_tem"]."))) ORDER by 'data' LIMIT 1");
  5. $sttatnipost = mysql_fetch_assoc($statnipost);
  6. ?>


Są dwa zapytania ponieważ jedno czerpie ostatni post a drugie pierwszy napisany w temacie.

Teoretycznie zmienne ".$osttatnipost["oost"]." ".$sttatnipost["osta"]." powinny wyświetlać ostatni i pierwszy z postów. Wyświetlają dwukrotnie pierwszy. Dlaczego?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zapytania wydają się prawidlowe. moze tylko jeden rekord spelnia twoje warunki i dlatego jest on jednoczesnie pierwszy i ostatni ? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

ps: gratuluję nazewnictwa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
$ostatnipost - $statnipost
oost - osta
w ten sposob pewnego pieknego dnia zdasz sobie sprawę, ze nie wiesz co jest co (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
a moze to jest twoj problem? przez pomylkę wyswietlasz ciaggle z tej samej zmiennej
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #8





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Z pewnością nie jest to ta sama zmienna, a tego rodzaju zmienne

costam - ostam zdarzają sę w obrębie najwyżej 22- linii i wykorzystywane są nawjyeżej w 10-15 a stosuję je świaodmie, bo na dłuzsza metę wymyślanie za kązdym razm innej jest męczące... a co do rekordów to jest ich znacznie więcej bo blisko 50 w przypadku który osberwuję z czego pierwszy i ostatni powiny być wyświeltnae
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




spokojnie, nie denerwuj się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Cytat
wymyślanie za kązdym razm innej jest męczące
eee, bez przesady: first.... - last....
I to jest męczące?

co do problemu. moze wpisz jawnie ze ma tam byc asc. bo teraz uzywasz domsylnego asc, i moze cos mu sie zle widzi... no nie wiem. bo zapytania wydają sie w porządku.
a na pewno jest ich 50? wyrzuc moze limita i zobacz ile jest ich naprawde
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #10





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


asc?

Ten post edytował The Night Shadow 19.02.2006, 23:58:35
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




tu mnie rozlozyles...
kto ci pisal te zapytania?

w jednym z nich uzyles order by pole desc a wdrugim nie podales desc. domyslnie jest to wiec asc. daj wiec jawnie: order by pole asc

desc/asc - okreslają sortowanie (malejąco/rosnąco)
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #12





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Skoro w jednym było DESC (malejąco) a w drugim domyślnie ASC to po co pisać ASC? Chodzi o to, że przecież jeden ma włąsnie sortować malejąco drugi rosnąco.

No dobrze więc zmodyfikowałem nieco kod, by byl bardziej przejżysty na coś takiego:

  1. <?php
  2. $ostatnipost = mysql_query("SELECT LEFT(tresc,50) AS 'last' FROM priv_tresc WHERE id_tematu='".$wiersz["id_tem"]."' ORDER by 'data' DESC LIMIT 1");
  3. $ostatnipostt = mysql_fetch_assoc($ostatnipost);
  4. $pierwszypost = mysql_query("SELECT LEFT(tresc,50) AS 'first' FROM priv_tresc WHERE id_tematu='".$wiersz["id_tem"]."' ORDER by 'data' ASC LIMIT 1");
  5. $pierwszypostt = mysql_fetch_assoc($pierwszypost);
  6. ?>


TO:

  1. <?php
  2. ".$ostatnipostt['nadawca']." //nadawca ostatniego postu (nie jest pobierany)
  3. ".$ostatnipostt['last']." // Treść ostatniego postu (zamiast niego pobierana jest treść pierwszego)
  4. ".$pierwszypostt['nadawca']." //Nadawca pierwszego postu (NIE JEST pobierany)
  5. ".$pierwszypostt['first']." //Treść pierwszego postu (JEST pobierana)
  6. ?>


Co robić?

DODATEK:

W momencie kiedy usuwam LEFT z wszystkim powiazaniami, wyswietla poprawnie... tak jakby LEFT powodował ignorowanie sortowania. Dlaczego?

Ten post edytował The Night Shadow 20.02.2006, 19:38:07
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




znalazlem, znalazlem , huraaaa (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)

a na powaznie: ORDER by 'data'
dopiero teraz to u Ciebie zauwazylem. w mysql gdy bierzesz cos w ciapki, traktowane jest to jako tekst. tak wiec ty nie sortujesz po polu data, ale po tekscie 'data', w wyniku czego te sortowanie jest do ... bani (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

daj tak: ORDER by data
albo tak: ORDER by `data`

ps:
Cytat
a w drugim domyślnie ASC to po co pisać ASC?
a tak dla zabawy. czasami najglupsze sprawy mogą okazac sie przydatne, gdy nie wiesz co moze byc nie tak (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) w tym przypadku to bylo zbędne, ale zawsze mozna bylo sprowbowac, a nóż widelec (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ps2: aaa, i usun te ciapki z aliasow: as 'last', as 'first'. daj po prostu : as last, as first
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #14





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nospor JESTEŚ WIELKI! :- )

Tylko jedna kwestia... dlaczego nadal nie pobiera mi autorów postów?

I jeszcze jedno... czy da się coś zrobić, by nie ucinał wyrazów w połowie?

Zuważyłem, że kiedy usunąć LEFT pobierane są dane NADAWCY, wraz z całą treścią postu...

Ten post edytował The Night Shadow 21.02.2006, 14:05:48
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
dlaczego nadal nie pobiera mi autorów postów
a zastanow się przez chwilę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. SELECT LEFT(tresc,50) AS last FROM...
czy widzisz gdzies w tym zapytaniu, bys żadąl by ci podano autora? ty tylko pytasz o treść (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Cytat
Zuważyłem, że kiedy usunąć LEFT pobierane są dane NADAWCY, wraz z całą treścią postu
eeee.... to ty nadawce trzymasz w tresci?

Cytat
czy da się coś zrobić, by nie ucinał wyrazów w połowie
Chyba mozna. trzeba by sie chyba wyrazeniami regularnymi pobawic (chyba (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ), albo w php to skracac
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #16





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. SELECT LEFT(tresc,50) AS last FROM...
  3. ?>


Sądziłem, że to pobiera wszystkei kolumny, z uwzgldnieniem skracania tej jednej. No dobrze, kombinowałem z tym i nie bardzo wiem jakie sa wobec tego zasady pobierania innych kolum?
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) uzywaj odpowiedniego bbcode
2) no bez jaj... manuala nie widzial na oczy? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. SELECT LEFT(tresc,50) AS last, innepole1, innepole2 FROM...

jest jeszcze * . ale o tym to se w manulau doczytaj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #18





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Cytat
Chyba mozna. trzeba by sie chyba wyrazeniami regularnymi pobawic (chyba smile.gif ), albo w php to skracac


http://dev.mysql.com/doc/refman/5.1/en/regexp.html
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 03:46