Autor Zpráva
Andres
Profil *
Zdravím,
jsem úplný php začátečník. Mohl by mi prosím někdo poradit, s tím jak v php nadefinovat co bude dělat jednotlivá vybraná hodnota v select?
můj formulář vypadá asi takhle
<select name="statimage" size="1"> 
<option value="prazdne">
<option value="gol">gol
<option value="zluta">zluta
<option value="cervena">cervena
<option value="stridani">stridani
</select>


Chtěl bych, aby každá value pokud je zvolena zobrazila nějaký obrázek.

Našel jsem neco jako:
  { 
    case 'prazdne': echo "" ;
    case 'gol': echo "<img src=\"1.gif\"  />"; 
    case 'zluta': echo "<img src=\"2.gif\"  />"; 
    case 'cervena': echo "<img src=\"3.gif\"  />"; 
    case 'stridani': echo "<img src=\"4.gif\"  />"; 
  }  


Jenže nevím, co mám dát před ten začátek...
Sir Tom
Profil
Andres:
Také zdravím,
a máš oba dva kódy na jedné stránce nebo ten druhý kód je na stránce, kam se odesílá formulář?

Pokud máš oba kódy na jedné stránce, tak to nejde. PHP nedokáže měnit obsah (část) aktuálně zobrazené stránky (je to serverový jazyk). K tomu slouží JavaScript (jazyk klienta).

Pokud máš formulář, který se pak odešle na stránku se druhým kódem, tak tento druhý kód uprav na:
switch($_POST["statimage"]){ //zjistí jakou hodnotu má prvek se jménem statimage
    case 'prazdne': echo "" ;
    case 'gol': echo "<img src=\"1.gif\"  />"; 
    case 'zluta': echo "<img src=\"2.gif\"  />"; 
    case 'cervena': echo "<img src=\"3.gif\"  />"; 
    case 'stridani': echo "<img src=\"4.gif\"  />"; 
  }

(V tagu <form> musíš mít atribut method="post")
Andres
Profil *
díky,
select mám v adminu a obrázek se má zobrazovat na stránce...
a je to v úplně jiných php souborech, takže nemusím nějak definovat co má to $_POST["statimage"] dělat? nebo to má zjistit hodnotu i z jiného php souboru? Protože mi to nefunguje...
Sir Tom
Profil
Pokud je ten select a obrázek na jedné stránce (tzn. vidím je oba dva zároveň - nezáleží, že to jsou různé soubory), tak to udělat nelze. PHP neumí zjistit hodnotu v selectu. Na to je JS (google najde spoustu výsledků na "change image select javascript" - např.: www.rgagnon.com/jsdetails/js-0057.html se živou ukázkou pod 'Try it here'.).
Jediné PHP řešení je to, že by se formulář někam odesílal - při odeslání se totiž do $_POST["statimage"] uloží vybraná hodnota v elementu se jménem 'statimage'.
Andres
Profil *
Nene, to jsi mě špatně pochopil, select mám v adminu a obrázek se má zobrazit na stránce, kterou vidí návštěvníci, tam by právě problém být neměl.
Andres
Profil *
Kdyby se na to chtěl někdo podívat...
Tady je soubor, který to má zobrazit http://pastebin.com/zGcbz8tc
Tady ten, ve kterém je ten select http://pastebin.com/7Z5YwpAn formulář začíná na řádku 65 a select na řádku 87
Moderátor Alphard: Obarvené verze http://pastebin.com/svgKj0CB, http://pastebin.com/XJi58nM1.
Sir Tom
Profil
Andres:
Na to, že píšeš, že jsi PHP začátečník, je ten kód poměrně složitý. Vypadá to, že se asi jedná o nějaký CMS (redakční) systém (možná bych dotaz směřoval přímo tam.) Myslel jsem, že onu hodnotu pro obrázek má vybírat sám uživatel a ne administrátor. Nedovedu si moc představit, jak by šlo udělat, aby se změnil obrázek na základě změny hodnoty v selectu u admina.
Ano, jde to - řešil bych to tak, že bych udělal formulář. Až by admin zde vybral nějakou hodnotu v select, tak by klikl na tlačítko submit, stránka by se přesměrovala na stránku, kde se zpracuje onen formulář, právě vybranou hodnotu od select bych uložil do nějaké globální proměnné ($_SESSION[...] nebo $_COOKIE[...]) a pak tuto stránku bych přesměroval zpět na původní rozhraní pro adminy. Nakonec bych aktualizoval stránku, kde se zobrazuje obrázek, a podle hodnoty v globální proměnné by se na ní zobrazil správný obrázek.
Andres
Profil *
Tak to je jeden plugin do wordpressu, já jsem se ho jenom snažil trochu doladit. Kontaktoval bych vývojáře, ale ten už se na tom nepracuje...Tam tlačítko submit právě je, po něm se uloží ty hodnoty. Pokud ses díval na ten formulář, tak je tam právě i text input a ten funguje normálně...
Alphard
Profil
Váš select je součástí prvního formuláře, zpracovává ho metoda
$lmStats->save($_POST['match_id'], $_POST['stats']);
hádám, že výsledky ukládá někam do databáze. Musel byste rozšířit tu třídu a databázovou tabulku o další sloupec, kam budete ukládat vybranou hodnotu.
Sir Tom
Profil
Andres:
Ano, omlouvám se. Alphard se svojí poznámkou o databázi to napsal lépe. Moje řešení je použitelné pouze tehdy pokud admin a návštěvník je jedna a tatáž osoba na jednom počítači. Doplnil bych jenom, že hodnota v selectu se dá uložit také i do nějakého souboru...

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:

0