Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Limit pobieranych znakow w mysql
Forum PHP.pl > Forum > PHP
telepawel
Witam

Pisze wlasnie system artykulow wyswietlanych na stronie.
Beda pojawialy sie w po lewej stronie w kolumnie.

Chce umiescic caly artykul w bazie w jednym polu, na stronie
jednak chce wyswietlac czesc. Powiedzmy do 3 zdan, internauta klika w link i widzi caly artykul na stronie pobierajacej calosc

Reasumujac:
Jak wprowadzic limit/ograniczenie znakow pobieranych/wyswietlanych.


[php:1:21d346573b]<?php
$news = 'SELECT * ';
$news .= 'FROM `informacje` ';
$news .= 'WHERE 1 ';
$news .= 'ORDER BY `id` DESC';
$newsq = mysql_query($news) or die('Query error'.mysql_error());

while($czytaj=mysql_fetch_array($newsq)) {
$ktekst = $czytaj['tresc'];
$id = $czytaj['id'];
?>


<p class="text" style="padding-left:20;padding-right:20" align="justify">
<? echo $ktekst; ?><br><br>
<img src="images/icon.jpg" width="12" height="12">&nbsp;&nbsp;<a href="artykuly.html?id=<? echo $id; ?>" class="a1">Więcej informacji...</a><br><br>


?>[/php:1:21d346573b]
dob
Możesz pobbrac całą treść i skrocic ją do jakiejś ilosci znaków używajac funkcji substr

Przykład z manuala:
[php:1:2c22990799]<?php
$rest = substr("abcdef", 1); // returns "bcdef"
$rest = substr("abcdef", 1, 3); // returns "bcd"
$rest = substr("abcdef", 0, 4); // returns "abcd"
$rest = substr("abcdef", 0, 8); // returns "abcdef"

// Accessing via curly braces is another option
$string = 'abcdef';
echo $string{0}; // returns a
echo $string{3}; // returns d
?>[/php:1:2c22990799]

edit
a jak chcesz zrobic po kilku zaniach - podziel cały string za pomocą funkcji explode (podziel używając do dzielenia spacje czy kropki [wyrazy/zdania]) i wyswiet sobie w pętli tyle ile potrzebujesz
kicaj
poszukaj na forum, sam pamietam podawalem funkcje skrocajaca do kilkunastu znakow...

albo poczytaj w php.net o pracy na stringach smile.gif
telepawel
pamietasz moze kilka slow z tematu smile.gif ?
Bardzo ulatwi mi to poszukiwanie.
telepawel
Dob WIELKIE DZIĘKUJE smile.gif

mala poprawka i mam to co chcialem.

Gdyby ktos poszukiwal w przyszlosci podaje pelen kod:

[php:1:94a5172525]<?php

//wymagane w bazie mysql tabela z polami id/tresc

//tworzymy funkcje informacje()
//pobiera dane ostatniej wpisanej informacji
function informacje(){
$news = 'SELECT * ';
$news .= 'FROM `informacje` ';
$news .= 'WHERE 1 ';
$news .= 'ORDER BY `id` DESC';
$newsq = mysql_query($news) or die('Query error'.mysql_error());

//na przykladzie petli pobiera ostatnie dane
while($czytaj=mysql_fetch_array($newsq)) {
$ktekst = $czytaj['tresc'];
$id = $czytaj['id'];

//z calosci pobiera 400 znakow
$rest = substr($ktekst, 0, 400);
?>

//tworzy html gdzie rest to nasz ograniczony wynik - skrocony opis+link do pelnego artykulu
<p class="text" style="padding-left:20;padding-right:20" align="justify">
<? echo $rest; ?><br><br>
<img src="images/icon.jpg" width="12" height="12">&nbsp;&nbsp;<a href="artykuly.html?id=<? echo $id; ?>" class="a1">Więcej informacji...</a><br><br>
<?
}
}

?>[/php:1:94a5172525]

funkcje uruchamiamy poprzez wpisanie informacje(); w pliku php.
spenalzo
[sql:1:d1264ce374]SELECT SUBSTRING(nazwa_pola,1,400) AS tresc FROM ...[/sql:1:d1264ce374]
Przytnie 'nazwa_pola' do 400 znaków długości. Nie warto zrzucać to na php skoro można obciąć w MySQLu i nie pobierać całości - szkoda pamięci.
kicaj
Cytat
Przytnie 'nazwa_pola' do 400 znaków długości. Nie warto zrzucać to na php skoro można obciąć w MySQLu i nie pobierać całości - szkoda pamięci.


Tak, ale jesli bedzie chcial najpierw wyswietlic te 400 znakow a potem po kliknieciu w "wiecej" wyswietlic reszte znakow? To bedzie musial robic drugie zapytanie - wysiwetlajace calos, lepiej zostac przy skracaniu przez php smile.gif
spenalzo
Cytat
Tak, ale jesli bedzie chcial najpierw wyswietlic te 400 znakow a potem po kliknieciu w "wiecej" wyswietlic reszte znakow? To bedzie musial robic drugie zapytanie - wysiwetlajace calos, lepiej zostac przy skracaniu przez php smile.gif

Co ty pieprzysz? Przestań wreszcie nabijać posty - szczególnie takie bzdurne.Przeczytaj jeszcze raz co napisałem i co ty napisałeś...
Jeżeli kliknie w więcej to musi przeładowac strone, no nie?



Update: nawet nie można powiedzieć piep.rzysz - co to za autocenzura?!?
Bakus
OT: Takie już hamskie czasy nastały, że człowiek drugiemu człowiekowi publicznie nie nawtyka, bo mu usta zamienią na ciąg gwiazdek...

Jestem za MySQLem - sprawdziłem to na jednym z moich skryptów, który pobiera artykóły z bazy... Im większy artykół, tym szybsze wydaje się rozwiązanie z MySQLem... winksmiley.jpg
Jako, że dane były pobierane z tego samego serwera, przy takim samym obciążeniu uważam pomiar za obiektywny zarówno dla php jak i MySQla
winksmiley.jpg winksmiley.jpg winksmiley.jpg
Wedle mnie cała sprawa szybkości jest w przesyle danych z bazy.
Wysłać przez sieć 400 znaków, a 400 000 znaków - jest różnica...

UpDated: Trzeba było napisać "piepszysz"...
spenalzo
Cytat
Wysłać przez sieć 400 znaków, a 400 000 znaków - jest różnica...

Serwery chodzą przeważnie na localhoscie więc... zez - nie trafiłeś tongue.gif
BzikOS
Cytat
Wysłać przez sieć 400 znaków, a 400 000 znaków - jest różnica...
Przez sieć? Czyżbyś miał server baz danych i server www na oddzielnych maszynach?
Bakus
I tak i nie...
TZN: Korzystam z:[list]Przy teście skorzystałem z bazki (i PeHaPa) na szczęśliwym numerku 3...
winksmiley.jpg

UpDate: Posiadanie kilku maszyn przydaje się do rozmyślań nad rozkładaniem obciążeń serwerów z poziomu skryptów...

Przez zastanawianie się nad tym problemem KAB.CMS jest [paused]...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.