Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Licznik graficzny, cos nie dziala ;-)
Guardian
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 22.07.2003

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


[php:1:37062781e2]<?

function printliczba ($numer) {

$liczbacyfr=1; $1 = $numer;
while ($1 >=10) {
$liczbacyfr++
$1=floor($1/10);

}

header("Content-type: image/gif");
for ($i=$liczbacyfr; $i>=1; $i--) {
$cyfra = floor($numer % pow(10,$1-1));
$numer = $numer % pow(10,$i-1);
$rysunekcyfra = imagecreatefromgif ("cyfry/$cyfra.gif");
imagedestroy ($rysunekcyfra);
}
imagegif ($rysunek);
}


if (!(file_exists("licznik.txt")))
$plik = fopen ("licznik.txt", "w+");
fpust ($plik, "-");
fclose ($plik);
}

printliczba (filesize ("dane/licznik.txt"));
$plik = fopen ("licznik.txt", "a");
flock ($plik, 2);
fpust ($plik, "-");
flock ($plik, 3);
fcoles ($plik);



?>[/php:1:37062781e2]

Oto kod, w którym jest zapisany licznik. Na stronie jest tylko komenda IMG SRC i licznik.php i pow9nien wstawiac rysunek z licznikiem. Dlaczego tak nie jest?questionmark.gif angrysmiley.gif angrysmiley.gif angrysmiley.gif


--------------------
('') Q(' ')Q
Ops!
Go to the top of the page
+Quote Post
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Skoro nie ma tak jak byc powinno to jak jest?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
adwol
post
Post #3





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Cytat
[php:1:b612657647]<?
for ($i=$liczbacyfr; $i>=1; $i--) {
$cyfra = floor($numer % pow(10,$1-1));
$numer = $numer % pow(10,$i-1);
?>[/php:1:b612657647]

Po pierwsze masz błąd w linii 3 (chyba chodziło Ci o $i a nie $1). Po drugie rozumiem, że $numer nie jest puste (vide register_globals)?

Poza tym co chciałeś osiągnąć tym fragmentem? Rozbić liczbę na cyfry możesz za pomocą substr traktując ją jak zwykły string, a i do wypchnięcia odpowiedniego obrazka do klienta nie potrzebujesz funkcji image*. Zresztą teraz to wysyłasz naraz wszystkie pliki z obrazkami.
Sprawdź sobie taki kod:
[php:1:b612657647]<?php
if (preg_match('/^d+$/', $numer))
{
for ($i = 0; $i < strlen($numer); $i++)
{
$cyfra = substr($numer, $i, 1);
print "<img src="cyfry/$cyfra.gif">";
}
}
?>[/php:1:b612657647]a obrazki cyfr po prostu wrzuć do katalogu.

PS. Uprzedzając pytania czemu użyłem preg_replace a nie is_numeric odpowiadam, że is_numeric łapie również liczby postaci 1.23e+4, a tego nie chcemy.
Go to the top of the page
+Quote Post
dzieciol4
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 5.11.2003

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


Czesc!
Zobacz sobie to (zadanie na kolokwium musialem zrobic):
Kod
<?

class counter

{



var $font;

var $font_size;

var $txt;

var $coun;







  function add($file_name="visit.txt",$mode="r+")

   {

    $fp=fopen ($file_name, $mode);

    flock($fp, 1);

    $count=fread ($fp, 4096);

    $count += 1;

    $this->coun= $count;

    fseek($fp,0);

    fputs($fp, $count);

    flock($fp, 3);

    fclose($fp);      

   }

  

  function conf($font,$font_size)

  {

  $this->font= $font;

  $this->font_size= $font_size;

  $this->txt= $this->coun;

  }  

  



   function image()

   {

   $dim= imagettfbbox($this->font_size, 0, $this->font, $this->txt);

   $min_x= min($dim[0], $dim[2], $dim[4], $dim[6]);

   $max_x= max($dim[0], $dim[2], $dim[4], $dim[6]);

   $width= $max_x-$min_x+3;

   $min_y= min($dim[1], $dim[3], $dim[5], $dim[7]);

   $max_y= max($dim[1], $dim[3], $dim[5], $dim[7]);

   $height= $max_y-$min_y+3;

  

   $img= imagecreate($width, $height);

   $bgcolor= imagecolorallocate($img, 224, 224, 224);

   $txtcolor= imagecolorallocate($img, 0, 0, 0);

   imagettftext($img, $this->font_size, 0, -$min_x+$dim[0], -$min_y+$dim[1], $txtcolor, $this->font,      $this->txt);

   header("Content-type: image/png");

   imagepng($img);

   imagedestroy($img);

   }

}

?>

<?

$counter= new counter;

$counter->add();

$counter->conf("arial.ttf",'20');

$counter->image();

?>

licznik korzystajacy z dowolnej czcionki
Go to the top of the page
+Quote Post
MoD
post
Post #5





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

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


[php:1:0431d69e82]<?php
function printliczba ($numer) {

$liczbacyfr=1; $1 = $numer;
while ($1 >=10) {
$liczbacyfr++
$1=floor($1/10);

}

header("Content-type: image/gif");
for ($i=$liczbacyfr; $i>=1; $i--) {
$cyfra = floor($numer % pow(10,$1-1));
$numer = $numer % pow(10,$i-1);
$rysunekcyfra = imagecreatefromgif ("cyfry/$cyfra.gif");
imagedestroy ($rysunekcyfra);
}
imagegif ($rysunek);
}


if (!(file_exists("licznik.txt")))
$plik = fopen ("licznik.txt", "w+");
fpust ($plik, "-");
fclose ($plik);
}

printliczba (filesize ("dane/licznik.txt"));
$plik = fopen ("licznik.txt", "a");
flock ($plik, 2);
fpust ($plik, "-");
flock ($plik, 3);
fcoles ($plik);
?>
[/php:1:0431d69e82]
Znam ten kodzik. To jest z książki "PHP4. Ćwiczenia praktyczne" wydawnictw Helion. Tak się złożyło, że sobie kupiłem niedawno aaevil.gif aaevil.gif aaevil.gif A tak wogóle też nie wyświetla rysunku u mnie. Jak odpalam skrypt to widzę:

Fatal error: Call to undefined function: imagegif() in c:usrkrasnalwwwlicznik graficznylicznik.php on line 23

angrysmiley.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 09:54