Autor Zpráva
Hejdouš
Profil *
Vytvářím si hned 3 různé obrázky v PHP za pomocí: obrazek.php?vyber=1 ... 2 ... 3
Chtěl bych se zeptat, zda-li použití IF provádím dobře nebo je lepší použít switch. Doporučte.

Scripty pak vybírám podle IF:

if ($_GET["vyber"] == "1")
{
// scripty pro prvni obrázek
}

if ($_GET["vyber"] == "2")
{
// scripty pro druhý obrázek
}

if ($_GET["vyber"] == "3")
{
// scripty pro třetí obrázek
}
Amunak
Profil
Použijte spíš switch, nebo alespoň elseif. Anebo lépe - pochybuji, že jsou skripty pro každý obrázek tak odlišné, že je nemožné většinu z toho napsat jen jako jeden kód dohromady. Ukážete nám, jak to vypadá celé?
Hejdouš
Profil *
Script je dost veliký. Do obrázku ještě posílám velikost písma, barvy, font a díky tomu generuji pak obrázek ... na řádek, do sloupce či do obdélníku. Mám ale problém s tím, že ikdyž v každém IF mám použit $sirka ... $vyska, tak velikost na úplném konci scriptu mě vždy hodí nesmysl. Mám strach, aby ta $sirka a $vyska se nevzala ze všech IF.

No prostě potřebuji poradit, zda-li je lepší IF nebo SWITCH ... u použití elseif zase je nutné (?) ukončit script jako else.
Sir Tom
Profil
Hejdouš:
Lepší je switch, ale opravdu nebude nutné rozbíjet skript na podobné části jenom podle hodnoty jedné proměnné. Ukaž nám skript v případě $_GET['vyber'] == 1 a v případě $_GET['vyber'] == 2.
Amunak
Profil
Hejdouš:
Do obrázku ještě posílám velikost písma, barvy, font a díky tomu generuji pak obrázek
A co ti brání udělat něco jako:
$conf = array();
//obrazek 1
$conf[1] = array(
  'sirka' => 80,
  'vyska' => 120,
  'barva' => array(80,255,0),
  'font' => 'Comic Sans MS'
);
//obrazek 2
$conf[2] = array(
  'sirka' => 42,
  'vyska' => 42,
  'barva' => array(255,255,255),
  'font' => 'Arial'
);

//kod pro generovani...
//predpokladam, ze vypisText vezme text, barvu a font a vykresli to do obrazku
vypisText('nejaky text', $conf[$_GET['vyber']]['barva'], $conf[$_GET['vyber']]['font']);
//...

dalsi kod generovani...

zda-li je lepší IF nebo SWITCH
To právě záleží na použití. Tady spíš switch. Ale určitě použij alespoň if - elseif (else na konci je nepovinné, stejně jako default u case), protože je jasné, že když je v $_GET["vyber"] 1, tak tam není 2 nebo 3. Jo, a čísla se zadávají bez uvozovek okolo.
Hejdouš
Profil *
Chápu, děkuji moc.
Poslední dotaz na mySQL. Pro ukládání šířky a výšky (čísla) mám použít tinyint(3) unsigned ?
juriad
Profil
Hejdouš:
Klidně použij obyčejný INT; pochybuji, že jsi v situaci, že musíš šetřit každým bytem. Navíc práce s běžnějším typem bude nejspíš o zlomek nanosekundy rychlejší :)
Amunak
Profil
Hejdouš:
Amunak: „A co ti brání udělat něco jako...
Skutečně to chápeš? Je zbytečné, aby sis to komplikoval.

juriad:
Nevím, jestli je mezi tinyint a int rozdíl v rychlosti, ale určitě bych použil unsigned. Máš pak jistotu, že z databáze nedostaneš záporné rozměry, ať děláš cokoliv.

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: