/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Søjle
Fra : Andre


Dato : 26-03-02 11:38

Jeg forsøger at lave en søjle, der skal vise temperaturen. Jeg kan bare ikke
få den til at passe. Jeg har lavet den i en tabel hvor højden er fastlagt og
så gange jeg temperaturen så det skulle passe med højen, det gør det bare
ikke. Er det nogle som kan hjælpe mig ??

Er der evt. nogen som kender et sted hvor man kan hente sådan en funktion
??? (så slipper jeg jo for at lave den selv....)

Koden til min egen er:


<?php
function tegn_soejle($andel){
echo "<IMG SRC=\"sojle.bmp\" BORDER=1 WIDTH=10 HEIGHT=$andel>";
}
?>

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR ALIGN="center" VALIGN="bottom">
<TD>
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5">
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">30</FONT></TD>
</TR>
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">25</FONT></TD>
</TR>
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">20</FONT></TD>
</TR>
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">15</FONT></TD>
</TR>
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">10</FONT></TD>
</TR>
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">05</FONT></TD>
</TR>
<TR HEIGHT="20" VALIGN="bottom">
<TD><FONT SIZE="-1">00</FONT></TD>
</TR>
</TABLE>
</TD>
<TD>
<?
$fil = fopen("Termometer1.txt","r");
$streng = fgets($fil,4096);
tegn_soejle($streng*6);
fclose($fil);
?>
</TD>
</TR>
</TABLE>

<p><p>

<?
$fil = fopen("Termometer1.txt","r");
$streng = fgets($fil,4096);
echo $streng;
fclose($fil);
?>ºC



 
 
Svenne Krap (26-03-2002)
Kommentar
Fra : Svenne Krap


Dato : 26-03-02 13:19

On Tue, 26 Mar 2002 11:37:52 +0100, "Andre" <andre21@ofir.dk> wrote:

>Jeg forsøger at lave en søjle, der skal vise temperaturen. Jeg kan bare ikke
>få den til at passe. Jeg har lavet den i en tabel hvor højden er fastlagt og
>så gange jeg temperaturen så det skulle passe med højen, det gør det bare
>ikke. Er det nogle som kan hjælpe mig ??

Den nemmeste måde er at lave en søjle-funktion.

Den funktion laver en tabel med tre rækker / kolonner (afhængigt af om
søljen skal stå eller ligge).

Og du laver tre gif'er .. en top og bund og et midterstykke (hvis
søljen er liggende er det hhv. højre,venstre og midte).
Midterstykket kan du så "strække" ved at sætte en anden heigth/width
på <img>.

Det burde kunne laves på ca. 20 minutter plus tid forbrugt i
billedprogram (hvilket er væsentligt mere for mig).

Svenne
--
Job-offerings with more than a googolplex* USD a year are instantly accepted.
* = http://www.fpx.de/fp/Fun/Googolplex/

Svenne Krap (28-03-2002)
Kommentar
Fra : Svenne Krap


Dato : 28-03-02 00:52

On Tue, 26 Mar 2002 13:18:33 +0100, Svenne Krap <usenet@krap.dk>
wrote:

>On Tue, 26 Mar 2002 11:37:52 +0100, "Andre" <andre21@ofir.dk> wrote:
>
>>Jeg forsøger at lave en søjle, der skal vise temperaturen. Jeg kan bare ikke
>>få den til at passe. Jeg har lavet den i en tabel hvor højden er fastlagt og
>>så gange jeg temperaturen så det skulle passe med højen, det gør det bare
>>ikke. Er det nogle som kan hjælpe mig ??
>
>Den nemmeste måde er at lave en søjle-funktion.
>
>Den funktion laver en tabel med tre rækker / kolonner (afhængigt af om
>søljen skal stå eller ligge).
>
>Og du laver tre gif'er .. en top og bund og et midterstykke (hvis
>søljen er liggende er det hhv. højre,venstre og midte).
>Midterstykket kan du så "strække" ved at sætte en anden heigth/width
>på <img>.
>
>Det burde kunne laves på ca. 20 minutter plus tid forbrugt i
>billedprogram (hvilket er væsentligt mere for mig).

Jeg fandt lige lidt gammel kode.
Både en og to barer sammen både liggende og stående:

1 Liggende :

<?php
if (!$DEFINED_SINGLEVBAR) {
   $DEFINED_SINGLEVBAR=true;
   function singlevbar($amount, $color="yellow") {
      ?>
      <table border="0" cellspacing="0" cellpadding="0">
         <tr>
            <td><img
src="/images/singlevbar-top.gif" width="12" height="1" alt=""
border="0"></td>
         </tr>
         <tr>
            <td><img src="/images/singlevbar-<?php
echo $color; ?>.gif" width="12" height="<?php echo $amount; ?>" alt=""
border="0"></td>
         </tr>
         <tr>
            <td><img
src="/images/singlevbar-bot.gif" width="12" height="1" alt=""
border="0"></td>
         </tr>
      </table>
      <?php
   }
}
?>

1 stående :

<?php
if (!$DEFINED_SINGLEHBAR) {
   $DEFINED_SINGLEHBAR=true;
   function singlehbar($amount, $color="yellow") {
      ?>
      <table border="0" cellspacing="0" cellpadding="0">
         <tr>
            <td><img
src="/images/singlebar_leftend.gif" width="1" height="12" alt=""
border="0"></td>
            <td><img src="/images/singlebar_<?php
echo $color; ?>mid.gif" width="<?php echo $amount; ?>" height="12"
alt="" border="0"></td>
            <td><img
src="/images/singlebar_rightend.gif" width="1" height="12" alt=""
border="0"></td>
         </tr>
      </table>
      <?php
   }
}
?>

2 liggende :

<?php
class doublevbar {
   var $scaling_factor=0.1;
   var $img_path="/images/";
   var $l_label="Antal click trough's";
   var $r_label="Antal eksponeringer";
   function sethitsprpix($hpp) {
      if ($hpp>0) {
         $this->scaling_factor=1/$hpp;
         return true;
      } else {
         return false;
      }
   }
   function setscalingfactor($sf) {
      if ($sf>0) {
         $this->scaling_factor=$sf;
         return true;
      } else {
         return false;
      }
   }
   function draw($lvalue, $rvalue) {
      if ($lvalue>$rvalue) $lvalue=$rvalue;
      if ($lvalue < 0 ) return false;
      if ($rvalue < 0 ) return false;
      $lpix=round($this->scaling_factor * $lvalue);
      $rpix=round($this->scaling_factor * $rvalue);
?>
      <table cellspacing="0" cellpadding="0" border="0">
         <tr>
          <td><img src="<?php echo $this->img_path;
?>bar1lt2.gif" width="12" height="1" alt="<?php echo $this->r_label;
?>" border="0"></td>
          <td><img src="<?php echo $this->img_path;
?>bar2rt.gif" width="3" height="1" alt="<?php echo $this->r_label; ?>"
border="0"></td>
         </tr>
<?php if ($rpix>=1) { ?>                  
         <tr>
          <td><img src="<?php echo $this->img_path;
?>bar1lm2.gif" width="12" height="<?php echo $rpix-$lpix; ?>"
alt="<?php echo $this->r_label; ?>" border="0"></td><!-- &nbsp; -->
          <td><img src="<?php echo $this->img_path;
?>bar2rm.gif" width="3" height="<?php echo $rpix-$lpix; ?>" alt="<?php
echo $this->r_label; ?>" border="0"></td><!-- &nbsp; -->
         </tr>
<?php }
if ($lpix>=1) { ?>         
         <tr>
          <td><img src="<?php echo $this->img_path;
?>bar1lt.gif" width="12" height="1" alt="<?php echo $this->l_label;
?>" border="0"></td>
          <td><img src="<?php echo $this->img_path;
?>bar2rm.gif" width="3" height="1" alt="<?php echo $this->r_label; ?>"
border="0"></td>
         </tr>
<?php
}
if ($lpix>=2) { ?>
         <tr>
          <td><img src="<?php echo $this->img_path;
?>bar1lm.gif" width="12" height="<?php echo $lpix-1; ?>" alt="<?php
echo $this->l_label; ?>" border="0"></td>
          <td><img src="<?php echo $this->img_path;
?>bar2rm.gif" width="3" height="<?php echo $lpix-1; ?>" alt="<?php
echo $this->r_label; ?>" border="0"></td>
         </tr>
<?php } ?>
         <tr>
          <td><img src="<?php echo $this->img_path;
?>bar1lb.gif" width="12" height="2" alt="<?php echo $this->l_label;
?>" border="0"></td>
          <td><img src="<?php echo $this->img_path;
?>bardot.gif" width="3" height="2" alt="<?php echo $this->r_label; ?>"
border="0"></td>
         </tr>
      </table>
      <?php
   }
}
?>

og 2 stående :

<?php
class doublehbar {
   var $scaling_factor=0.1;
   var $img_path="/images/";
   var $t_label="Antal click trough's";
   var $b_label="Antal eksponeringer";
   function sethitsprpix($hpp) {
      if ($hpp>0) {
         $this->scaling_factor=1/$hpp;
         return true;
      } else {
         return false;
      }
   }
   function setscalingfactor($sf) {
      if ($sf>0) {
         $this->scaling_factor=$sf;
         return true;
      } else {
         return false;
      }
   }
   function draw($tvalue, $bvalue) {
      if ($tvalue>$bvalue) $tvalue=$bvalue;
      if ($tvalue < 0 ) return false;
      if ($bvalue < 0 ) return false;
      $tpix=round($this->scaling_factor * $tvalue);
      $bpix=round($this->scaling_factor * $bvalue);
?>
   
      <table cellspacing="0" cellpadding="0" border="0">
         <tr>
            <td><img src="<?php echo
$this->img_path; ?>hbar1l.gif" width="2" height="12" alt="<?php echo
$this->t_label; ?>" border="0"></td>
<?php if($tpix>=1) { ?>
            <td><img src="<?php echo
$this->img_path; ?>hbar1m.gif" width="<?php echo $tpix-1; ?>"
height="12" alt="<?php echo $this->t_label; ?>" border="0"></td>
<?php } ?>
<?php if($tpix>0) { ?>
            <td><img src="<?php echo
$this->img_path; ?>hbar1r.gif" width="1" height="12" alt="<?php echo
$this->t_label; ?>" border="0"></td>
<?php } ?>
<?php if ($bpix>$tpix) { ?>
            <td><img src="<?php echo
$this->img_path; ?>hbar1m2.gif" width="<?php echo $bpix-$tpix; ?>"
height="12" alt="<?php echo $this->b_label; ?>" border="0"></td>
<?php } ?>            
            <td><img src="<?php echo
$this->img_path; ?>hbar1r2.gif" width="1" height="12" alt="<?php echo
$this->b_label; ?>" border="0"></td>            
         </tr>
         <tr>
            <td><img src="<?php echo
$this->img_path; ?>hbar2l.gif" width="2" height="3" alt="<?php echo
$this->b_label; ?>" border="0"></td>
<?php if($tpix>=1) { ?>            
            <td><img src="<?php echo
$this->img_path; ?>hbar2m.gif" width="<?php echo $tpix-1; ?>"
height="3" alt="<?php echo $this->b_label; ?>" border="0"></td>
<?php } ?>
<?php if($tpix>0) { ?>
            <td><img src="<?php echo
$this->img_path; ?>hbar2m.gif" width="1" height="3" alt="<?php echo
$this->b_label; ?>" border="0"></td>
<?php } ?>            
<?php if ($bpix>$tpix) { ?>
            <td><img src="<?php echo
$this->img_path; ?>hbar2m.gif" width="<?php echo $bpix-$tpix; ?>"
height="3" alt="<?php echo $this->b_label; ?>" border="0"></td>
<?php } ?>
            <td><img src="<?php echo
$this->img_path; ?>hbar2r.gif" width="1" height="3" alt="<?php echo
$this->b_label; ?>" border="0"></td>            
         </tr>
      </table>
      <?php
   }
}
?>
--
Job-offerings with more than a googolplex* USD a year are instantly accepted.
* = http://www.fpx.de/fp/Fun/Googolplex/

Thomas Lindgaard (26-03-2002)
Kommentar
Fra : Thomas Lindgaard


Dato : 26-03-02 13:57

Halløjtaler

"Andre" <andre21@ofir.dk> wrote in message
news:3ca050a3$0$88711$edfadb0f@dspool01.news.tele.dk...
> Jeg forsøger at lave en søjle, der skal vise temperaturen. Jeg kan bare
ikke
> få den til at passe. Jeg har lavet den i en tabel hvor højden er fastlagt
og
> så gange jeg temperaturen så det skulle passe med højen, det gør det bare
> ikke. Er det nogle som kan hjælpe mig ??

Jeg tror ikke du skal satse på at få en tabel og en gif til at stemme
overens - folk indstilling af skriftstørrelse kan vist hurtigt få den slags
til at se knap så elegant ud.

Du skulle nok hellere lave din skala som en gif osse, og så bruge din
"termometer-stand-funktion" til at vise temperaturen.

/Thomas



Andrew Engels Rump (~ (26-03-2002)
Kommentar
Fra : Andrew Engels Rump (~


Dato : 26-03-02 14:06

After drinking 3 Pan Galactic Gargle Blasters, "Andre" <andre21@ofir.dk>
mumbled in news:3ca050a3$0$88711$edfadb0f@dspool01.news.tele.dk:
> Jeg forsøger at lave en søjle, der skal vise temperaturen. Jeg kan
> bare ikke få den til at passe. Jeg har lavet den i en tabel hvor
> højden er fastlagt og så gange jeg temperaturen så det skulle passe
> med højen, det gør det bare ikke. Er det nogle som kan hjælpe mig ??

Allerførst tror jeg ikke at bitmap (bmp) formatet er det bedste at
bruge. Brug i stedet GIF/PNG der er platform (Windows/Unix/...)
uafhængigt.

> Er der evt. nogen som kender et sted hvor man kan hente sådan en
> funktion ??? (så slipper jeg jo for at lave den selv....)

Dernæst bliver dine problemer skabt af en blanding af din BORDER
og CELLPADDING's. Hvis du sætter IMG SRC BORDER=0 og CELLPADDING=0
over hele linien er det pludselig meget nemmere! Jeg tror faktisk
ikke at du kan få det til at virke uafhængigt af browser, hvis du
vil have en border/padding, for tykkelsen er vist browser afhængig!

Og så kommer PHP-koden. For at lave den HTML-uafhængig, bør du
udnytte at du laver det i PHP og lade PHP-lave arbejdet! Rent
faktisk kunne du få PHP til at lave hele skalaen, m.m., men det
vil jeg overlade til læseren!

I stedet for af foretage nogle beregninger i kaldet til tegn_soejle
vil jeg overføre alle oplysninger til tegn_soejle og lade den lave
dem. Oplysningerne er: værdien der skal tegnes, mindsteværdien for
søjlen, forskellen i værdien mellem de enkelte trin, antal af trin
og højden for hvert trin i pixel.

Derved kan koden nemt og overskueligt opdateres med nogle få nemme
ændringer i stedet for at "gætte" sig til at man vist skal gange
med 6 - 7 stykker!

PS: Du behøver ikke at læse indholdet af filen 2 gange. Du har
allerede værdien i $streng

Herunder er koden. For at anskueliggøre de ændringer jeg har lavet
står koden både før og efter mine ændringer. Der står et lighedstegn
(=) foran den kode, som kan forblive uforandret, et minus (-) foran
den kode der skal fjernes og et plus (+) foran den kode der skal
indsættes. En del af TABEL-HTML-koden er uændret så der står tre
punktummer (...). Jeg håber det giver mening.

= <?php
- function tegn_soejle($andel){
+ function tegn_soejle($andel, $start, $hop, $antal, $højde){
- echo "<IMG SRC=\"sojle.bmp\" BORDER=1 WIDTH=10 HEIGHT=$andel>";
+ echo "<IMG SRC=\"sojle.gif\" BORDER=0 WIDTH=10 HEIGHT=" .
+ intval((($andel - $start) * $højde) / $hop) . ">";
=}
= ?>
=
= <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
= <TR ALIGN="center" VALIGN="bottom">
= <TD>
- <TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5">
+ <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
....
= <?
= $fil = fopen("Termometer1.txt","r");
= $streng = fgets($fil,4096);
- tegn_soejle($streng*6);
+ tegn_soejle($streng, 0, 5, 7, 20);
= fclose($fil);
= ?>
= </TD>
= </TR>
= </TABLE>
=
= <p><p>
=
= <?
- $fil = fopen("Termometer1.txt","r");
- $streng = fgets($fil,4096);
= echo $streng;
- fclose($fil);
= ?>ºC

Andrew
--
*** The opinions expressed are not necessarily those of my employer. ***
* Software Engineer Andrew Engels Rump * BLIK og ROERarbejderforbundet *
* Immerkaer 42, 2650 Hvidovre * Tlf: +45 3638 3638, Fax: +45 3638 3639 *
Home: N55°41'38.9" E12°29'08.6" (WGS 84) Work: N55°39'50.9" E12°27'47.4"
E-mail: mailto:newandrew@rump.dk WWW http://www.rump.dk/homepage/andrew/

Jannick Rosenlund (27-03-2002)
Kommentar
Fra : Jannick Rosenlund


Dato : 27-03-02 14:22


"Andre" <andre21@ofir.dk> skrev i en meddelelse
news:3ca050a3$0$88711$edfadb0f@dspool01.news.tele.dk...
> Jeg forsøger at lave en søjle, der skal vise temperaturen. Jeg kan bare
ikke
> få den til at passe. Jeg har lavet den i en tabel hvor højden er fastlagt
og
> så gange jeg temperaturen så det skulle passe med højen, det gør det bare
> ikke. Er det nogle som kan hjælpe mig ??
>
> Er der evt. nogen som kender et sted hvor man kan hente sådan en funktion
> ??? (så slipper jeg jo for at lave den selv....)
>
> Koden til min egen er:
>
>
> <?php
> function tegn_soejle($andel){
> echo "<IMG SRC=\"sojle.bmp\" BORDER=1 WIDTH=10 HEIGHT=$andel>";
> }
> ?>
>
> <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
> <TR ALIGN="center" VALIGN="bottom">
> <TD>
> <TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5">
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">30</FONT></TD>
> </TR>
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">25</FONT></TD>
> </TR>
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">20</FONT></TD>
> </TR>
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">15</FONT></TD>
> </TR>
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">10</FONT></TD>
> </TR>
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">05</FONT></TD>
> </TR>
> <TR HEIGHT="20" VALIGN="bottom">
> <TD><FONT SIZE="-1">00</FONT></TD>
> </TR>
> </TABLE>
> </TD>
> <TD>
> <?
> $fil = fopen("Termometer1.txt","r");
> $streng = fgets($fil,4096);
> tegn_soejle($streng*6);
> fclose($fil);
> ?>
> </TD>
> </TR>
> </TABLE>
>
> <p><p>
>
> <?
> $fil = fopen("Termometer1.txt","r");
> $streng = fgets($fil,4096);
> echo $streng;
> fclose($fil);
> ?>ºC
>
>


Hold da fast en masse...
Jeg har bare lavet et forsøg med <img>...

<?
$width = 10;
?>
<img src="1x1.jpg" height="10" width="<?echo $width;?>">

Og det virker fint...

Du kan selvfølgelig også lave det hele i php: <?

<?
$width = 10;
echo "<img src=\"1x1.jpg\" height=\"10\" width=\"$width\">";
?>

Billedet jeg bruger er et 1x1 pixel jpeg, som bliver gentaget...

Jeg sider og overvejer om jeg skal lave en statestik-side, men en masse
søjler om. Der har jeg benyttet GD_Lib, hvilket også fungere fint, men jeg
tror den ovenfor beskrevne metode er hurtigere...

MVH



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste