Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: podzial wyciagnietych danych
Forum PHP.pl > Forum > PHP
Fo
mhm mam troche zonka bo niewiem jak zrobic takie cus :
wyciagac sobie dane textowe z bazy - dokladnie zawartosc jedengo pola w jednej tabeli... no i chcialbym aby (bo text jest dlugi) ten tekst rozlozyl sie na dwie kolumny
-> 1wsza | 2ga
mhm tylko jak to zrobic, ma ktos jakis niecny plan jak sie do tego zabrac ?
cahe
Podzielić tekst na wyrazy. Potem podzielić na połowe. Pierwszą połowe umieścić w pierwszej kolumnie - drugą w drugiej :-).
adwol
Cytat
mhm mam troche zonka bo niewiem jak zrobic takie cus :
wyciagac sobie dane textowe z bazy - dokladnie zawartosc jedengo pola w jednej tabeli... no i chcialbym aby (bo text jest dlugi) ten tekst rozlozyl sie na dwie kolumny
-> 1wsza | 2ga
mhm tylko jak to zrobic, ma ktos jakis niecny plan jak sie do tego zabrac ?

No, wypadałoby chyba podzielić go na dwie części w połowie. O to Ci chodzi?
Jak tak to może się przydać chunk_split() i wordwrap(), albo zwykły substr().
cahe
Cytat
No, wypadałoby chyba podzielić go na dwie części w połowie. O to Ci chodzi?
Jak tak to może się przydać chunk_split() i wordwrap(), albo zwykły substr().


Substr raczej odpada - potnie nam słowa na kawałki. Wordwrap tez się wywala przy dłuższych słowach. chunk_split to samo...
spenalzo
Nie wiem czy o to chodziło:
[php:1:fdc0e3fe58]<?php
function podziel($res)
{
$tmp=explode(" ",$res);
$polowa=ceil(count($tmp);
$txt ="<table border="0" width="400">";
$txt.="<tr><td width="50%">";
$txt.=implode(" ",array_slice($tmp,$polowa));
$txt.="</td><td width="50%">";
$txt.=implode(" ",array_slice($tmp,(0-$polowa))); // ***
$txt.="</td></tr></table>";
return($txt);
}
?>[/php:1:fdc0e3fe58]
Nie jestem pewien co do miejsca oznaczonego "***" (być może trzeba tam będzie dać '1' zamiast '0'), ale powinno działać.
Zwróci tabelkę z dwiema kolumnami ładnie wypełnionymi tekstem.
spenalzo
Sorry zamień tamtą linijkę numer 5 na poniższą:
[php:1:66652e941c]<?php
$polowa=ceil(count($tmp)/2);
?>[/php:1:66652e941c]
Fo
hmm ponizszy kodzik : [php:1:f26019e8bb]function podziel($res)
{
$tmp=explode(" ",$res);
$polowa=ceil(count($tmp)/2);
$txt ="<table border="0" width="400">";
$txt.="<tr><td width="50%">";
$txt.=implode(" ",array_slice($tmp,$polowa));
$txt.="</td><td width="50%">";
$txt.=implode(" ",array_slice($tmp,(0-$polowa))); // ***
$txt.="</td></tr></table>";
return($txt);
}
mysql_connect("localhost","root","admin");
mysql_select_db("baza");

$query = mysql_query("SELECT * FROM tabela;");
while ($record = mysql_fetch_array($query)) {
$dane = $record[3];
echo podziel($dane);
}[/php:1:f26019e8bb] ladnie dzieli na dwie kolumny wyciagniete dane ale jest jeden problem ze to sa takie same dwie kolumny... i tak samo sa og gory przyciete.. tzn text ktory ma jakias cala strone w 1024x768 on jakby zostal od pewnego momentu ucienty... mhm :|
spenalzo
Zamień linijkę nr 8 na tą:
[php:1:4d1d48ebb7]
$txt.=implode(" ",array_slice($tmp,0));
[/php:1:4d1d48ebb7]
a linijkę nr 10 na tą:
[php:1:4d1d48ebb7]<?php
$txt.=implode(" ",array_slice($tmp,$polowa));
?>[/php:1:4d1d48ebb7]
KaMeLeOn
Cytat
ladnie dzieli na dwie kolumny wyciagniete dane ale jest jeden problem ze to sa takie same dwie kolumny... i tak samo sa og gory przyciete.. tzn text ktory ma jakias cala strone w 1024x768 on jakby zostal od pewnego momentu ucienty... mhm :|

Szczerze mówiąc ciężko jest osiągnąć dokładnie coś takiego samym php. Różnie to może wyglądać w różnych rozdzielczościach więc to bardziej zadanie dla języka client-side. php nie jest w stanie przewidzieć jakiej rozdzielczości używa klient, jak rozłożone są tabelki na stronie i jakiej są długości.
spenalzo
Cytat
php nie jest w stanie przewidzieć jakiej rozdzielczości używa klient, jak rozłożone są tabelki na stronie i jakiej są długości.

Ale można mniej więcej "na sztywno" określić szerokość tabelki, i ewentualnie zastosować wordwrap
[php:1:ce2aa7c9a3]<?php
wordwrap(wyraz,20,"-<br>");
?>[/php:1:ce2aa7c9a3]
co spowoduje podzielenie słowa i zakończenie myślnikiem, coś jak w gazetach na przykład.
spenalzo
Linijka 8:
[php:1:75abaf3c45]<?php
$txt.=implode(" ",array_slice($tmp,0,$polowa));
?>[/php:1:75abaf3c45]

Linijka 10:
[php:1:75abaf3c45]<?php
$txt.=implode(" ",array_slice($tmp,$polowa,$polowa)); ?>[/php:1:75abaf3c45]
Fo
panie i panowie : brawa dla spenalzo winksmiley.jpg
[php:1:4d0d9c955a]function podziel($res)
{
$tmp=explode(" ",$res);
$polowa=ceil(count($tmp)/2);
$txt ="<table border="0" width="400">";
$txt.="<tr><td width="50%" valign="top">";
$txt.=implode(" ",array_slice($tmp,0,$polowa));
$txt.="</td><td width="50%" valign="top">";
$txt.=implode(" ",array_slice($tmp,$polowa,$polowa));
$txt.="</td></tr></table>";
return($txt);
}
mysql_connect("localhost","root","admin");
mysql_select_db("test");

$query = mysql_query("SELECT * FROM tabela;");
while ($record = mysql_fetch_array($query)) {
$dane = $record[0];
echo podziel($dane);
}[/php:1:4d0d9c955a] nio teraz chodzi gucio ... smile.gif
spenalzo
Cytat
panie i panowie : brawa dla spenalzo winksmiley.jpg

A jednak nowy avatar Inżyniera coś dał laugh.gif
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.