Autor Zpráva
svast
Profil
Zdravím, potřeboval bych poradit jestli jde vložit z jednoho souboru proměnnou do druhého. Konkrétně jde o graf, který by měl zobrazit výsledné procenta jednotlivých příspěvků ve tvaru obrázku <img src=graf.php> v souboru index.php. V tomto případě určuje proměnnou náhodné číslo a já bych potřeboval nahradit tohle náhodné číslo proměnnou, která je právě v souboru index.php. Dík

graf.php
$cislo = rand(1, 100);

  $obrazek = imagecreate(80,2);
  $pozadi = imagecolorallocate($obrazek,150,180,180);
  $deset = imagecolorallocate($obrazek,238,23,0);
  $dvacet = imagecolorallocate($obrazek,238,47,0);
...
  $devadesat = imagecolorallocate($obrazek,47,214,0);
  $sto = imagecolorallocate($obrazek,0,238,0);

  imagefilledrectangle($obrazek,0,0,100,2,$pozadi);
  if ($cislo<11) {
   imagefilledrectangle($obrazek,0,0,8,2,$deset);
  }
  elseif ($cislo>10 && $cislo<21) {
  imagefilledrectangle($obrazek,0,0,16,2,$dvacet);
  }
  ...
  elseif ($cislo>80 && $cislo<91) {
  imagefilledrectangle($obrazek,0,0,72,2,$devadesat);
  }
  else {
  imagefilledrectangle($obrazek,0,0,80,2,$sto);
  }

  header("Content-Type: image/jpeg");
  imagejpeg($obrazek);
  imagedestroy($obrazek);
Jozin
Profil *
Ahoj,

no ono to není přesně, jak to píšeš, ale tvůj soubor graf.php bych předělal na funkci, kde $cislo dáváš jako parametr např.: makeGraph($cislo);
v index.php by pak bylo něco ve stylu:
<?php
include_once("graf.php");
makeGraph(10);
?>

v tvém řešení, by to bylo tak, že by si smazal z graf.php řádek s $cislo = rand(1, 100); a v indexu by bylo:
<?php
$cislo = 10;
include("graf.php");
?>

to druhé řešení má problém, kdekoli to chceš použít, musíš zadat hodnotu $cislo a pak includovat soubor, protože se to okamžitě provede. První řešení je lepší v tom, že na začátku includuješ soubor, ve kterém máš tu funkci, aby se nedeklarovala 2x, tak použiješ once a kdykoli to potřebuješ, zavoláš funkci s parametrem toho čísla.

Doufám, že to si hledal. Čauko, Jozin.
Tori
Profil
svast:
Předávejte tu hodnotu jako parametr v URL. Nevím, jak máte udělaný index.php, asi by tam bylo něco jako:
echo 'Číslo je: '. $cislo;
echo "<img src='graf.php?cislo=$cislo'>";

// graf.php
$cislo = abs(intval($_GET['cislo']));


edit: Oprava, vyhozeno zbytečné použití rand().
Jozin
Profil *
Omlouvám se, nekoukl jsem na zdroják. Samozřejmě moje řešení by tedy nefungovalo kvůli příkazu header. Jinak jsem si to zkusil napsat a trošku jsem ti to zjednodušil.
// graf.php
header("Content-Type: image/jpeg");
  $_GET['num'] = (int) $_GET['num']; //zajištění, že vstup je číslo, pokud ne, je vstup nula
  $w = 80; //šířka obrázku
  $h = 2; //výška obrázku
  $num = ceil($_GET['num']/10)*10; //číslo zaokrouhlíme na desítky

  $img = imagecreate($w, $h);
  $bg = imagecolorallocate($img, 150, 180, 180);
  $active = imagecolorallocate($img, 255-(2.55*$num), 255-(2.55*(100-$num)), 0); //přebarvuje se podle $num

  imagefilledrectangle($img, 0, 0, 100, $h, $bg);
  imagefilledrectangle($img, 0, 0, $num, $h, $active);

  imagejpeg($img);
  imagedestroy($img);
  
  //index.php
  $num = 64;
  echo "<img src=\"graf.php?num={$num}\">";
svast
Profil
Tori:
Díky za ochotu, řešil jsem to několik dní, ale na to bych teda nepřišel. Už to funguje.

Jozin:
Super, já jsem původně tohle téma zařadil do fóra "Problémy v začátcích", ale bylo přesunuto sem, tak bych jen upozornil, že jsem začátečník a jak vidím mám se co učit. Hlavně to zjednoduššování a práce s proměnnýma je skvělá. Každopádně jsem tam sám měl chybičku, tak bych to jen trochu doladil:
V pozadí jsem špatně zadal šířku, takže snad takto:
imagefilledrectangle($img, 0, 0, $w, $h, $bg);

a číslo bych nezaokrouhloval na desítky, ale upravil podle šířky obrázku, tzn. 100% = 80, tedy:
$num = $_GET['num']/10*8;

Každopádně moc díky za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: