Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Poziomy "słupek"
Forum PHP.pl > Forum > Przedszkole
fredzio90
otóż chciałbym się zapytać jak można w łatwy sposób zrobić coś takiego... mam panel administracyjny do bazy dodaje jakąś liczbę<100 niech to będzie 50

i kod przerabia to na nie wiem co.. i pokazuje mi mi tą wartość ( w tym wypadku 50 ) na wykresie..... na dowolnym rozmiarze strony..... biorąc że będzie plik o wymiarach 5x1 px..

poprostu wpisuje 50 to pokazuje połowę całego wykresu itp.. bez żadnych liczeń podobnych do sondy....

to bedzie mi potrzebne do napsiania modułu do systeu CMS o nazwie projekty.. wpisujemy nazwe projektu i pokazuje jaką część całego projektu wykonaliśmy
Łukasz O.
  1. <?php $procent=rand(0,100); ?>
  2. <div style='width:300px;background-color:#000;height:5px;'>
  3. <div style='height:5px;background-color:#f00;width:<?=$procent?>%;'>
  4. </div>
  5. </div>
najszybszy i najładniejszy sposób, ponieważ pierwszego div'a możesz sobie dowolnie skonfigurować (procentowo, pikselami), a drugi sam z siebie dostosuje się do niego

PS. końcowo powinno wyglądać tak (aby się dobrze w IE wyświetlało)
  1. <div class="pasek"><!-- -->
  2. <div class="postep"><!-- --></div>
  3. </div>

klasa postep powinna zawierać właściwość width z przypisanym wyliczonym przez Ciebie procentem
fredzio90
ale ty mnie zle zrozumiales.. ja chce takie coś że jest zapytanie przykkładowe:

  1. <?php
  2. $sql = mysql_query("SELECT * FROM tabela");
  3. while($r = mysql_fetch_array($sql)) {
  4. ?>


w tabeli są takie pola:

nazwa, postep

i zeby wylapywalo z pola postep liczbe ktorą administrator samemu wpisał... i żeby na podstawie tej liczby rysowało pasek poziomy...
.radex
WHERE id = id admina tongue.gif i jeśli jeden słupek, a nie seria - to fetch array może nawalać... a możesz zrobić nawet z apomocą prostego ajaxa....
fredzio90
oj nie chodiz mi o zapytanie. przedstawie to tak:

Ktoś wykonuje tłumaczenie napisów do filmu a NAG na PL..
Prowadzi przy tym stronę na która wystawi powyższe napisy.. i Chce informować internautów o steni postępu wykonania prac... Powyższy przykład możemy zobaczyć na:

Zobacz

po prawej stronie.. te dane są pobierane z bazy danych... te całkowite liczby np 30, 45, 70, 90
Łukasz O.
pofatygowałeś się podpiąć to co Ci pokazałem? czy tylko zerknąłeś?

  1. CREATE TABLE `postep` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(32) DEFAULT NULL,
  4. `postep` int(11) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
  7. INSERT INTO `postep` VALUES ('1', 'first', '30');
  8. INSERT INTO `postep` VALUES ('2', 'second', '42');
  9. INSERT INTO `postep` VALUES ('3', 'third', '86');

  1. <style type="text/css">
  2. .pasek{
  3. width:100px; /* może być też np. 60% - byle by się zmieścił tam gdzie chcesz to wetknąć*/
  4. border:1px solid #999; //kolor obramowania
  5. height:5px;}
  6. .pasek div{
  7. background-color:#090; //kolor paska
  8. height:5px;}

  1. <?php
  2. function progress($width){
  3. ?>
  4. <div class='pasek'><div style='width:<?=$width?>%'><!-- --></div></div>
  5. <?php
  6. }
  7. require_once('mysql.php');
  8. $db=new db('localhost','root','root','test');
  9. $db->query('SELECT nazwa,postep FROM postep');
  10. foreach($db->fetch_row() as $a){
  11. print $a['nazwa'];
  12. progress($a['postep']);
  13. }
  14. ?>

wynik:


to tak ode mnie jako bonus - chciałeś coś łatwego - jak nie odpowiada to możesz za każdym razem męczyć serwer, żeby Ci generował dynamiczny obrazek - Twój wybór - tyle tylko, że moje rozwiązanie jest o wiele bardziej elastyczne

PS. ktoś jeszcze uważa, że ten sposób jest nieodpowiedni?
plisek
chyba nie do końca wiesz co chcesz zrobić ;/

jeżeli chcesz wyciągnąć z bazy tylko jedno pole o nazwie np postęp dla danego użytkownika i np filmu to zamiast:
  1. SELECT * FROM tabela

po prostu
  1. SELECT "postep" FROM tabela WHERE user=1
oczywiście to przykład bo nie wiemy jak wygląda Twoja baza.

Następnie gdy wyciągniesz juz wartość liczbową tego postępu możesz narysować np za pomocą prostych divów (btw czytaj kilka postów wyżej ;P)pasek postępu.

nic trudnego, po prostu czytaj ze zrozumieniem, co napisali inni winksmiley.jpg
lub inaczej sformułuj pytanie

pozdrawiam
fredzio90
zrobiłem taką funkcje:

  1. <?php
  2. function show() {
  3. global $projekty_tbl, $PHP_SELF;
  4.  
  5. $sql = mysql_query("SELECT * FROM $projekty_tbl WHERE postep<='100'");
  6. while($r = mysql_fetch_array($sql)) {
  7.  
  8. $skonczono = $r['postep'];
  9. $reszta = 100 - $skonczono;
  10.  
  11. <b>'.$r['nazwa'].'</b><br>
  12. <div class="pasek">
  13. <img src="images/wprod_bar_1.gif" title="'.$skonczono.'%" border="0" height="4" width="'.$skonczono.'"><img src="images/wprod_bar_0.gif" title="'.$skonczono.'%" border="0" height="4" width="'.$reszta.'">
  14. </div>
  15.  
  16. ';
  17.  
  18.  
  19. }
  20. }
  21. ?>


i działa...
Łukasz O.
ciekawe co będzie jak będziesz chciał dać jako pasek postępu np. ukośne linie -> wiem czepiam się, ale to dlatego, że sam chciałeś coś prostego i elastycznego, co zresztą dostałeś, a teraz jakieś dziwne funkcje wymyślasz

PS. pokaż mi jak robisz swoją funkcją dwukolorowy pasek postępu od czerwonego(początek) do zielonego (koniec) i jak go dostosowujesz do różnych szerokości, np. 70% i 234px w jakimś bloku
fredzio90
właśnie nad tym pomyślałem i mam takie funkcje css:

  1. <?php
  2. .pasek_blok{
  3. width: 100px;
  4. border:1px solid #999;
  5. height:5px;
  6. }
  7.  
  8. .pasek{
  9. width: 50%;
  10. border:0px solid #999;
  11. height:5px;
  12. }
  13. ?>


i mam 2 funckje ktorą jedną używam w bloku, drugiej w środku menu ( pomiędzy blokami...)

i sprawuje się doskonale!

PS to nie są nazwy kolorów..
z - zielony
c - kremowy ;D

tak jak na tej stornie kinomania.org.. tak samo zrobiłem..
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.