Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Licznik graficzny, cos nie dziala ;-)
Forum PHP.pl > Forum > Gotowe rozwiązania
Guardian
[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
scanner
Skoro nie ma tak jak byc powinno to jak jest?
adwol
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.
dzieciol4
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
MoD
[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
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-2024 Invision Power Services, Inc.