[PHP][JS] wyswietlanie obrazka po kliknięciu w formularz

0

Witam!
Mój problem polega na tym, że chciałbym wyświetlić obrazek w drugiej kolumnie, po kliknięciu w pierwszej kolumnie, w formularzu daną pozycję.
Formularz jest generowany z pętli, która pobiera dane z mysql.
Kiedyś chyba miał coś takiego plus na swojej stronie, w sklepie: po kliknięciu na nazwę telefonu pojawiało się obok jego zdjęcie.

<? include("top_gui.php"); ?>
 <form action="dane.php" method="POST">
<table cellpadding="4" cellspacing="4"><tr><td> <select name="jaki_tel" size="20">
<? 
echo($_POST["taryfa"]);
echo($_POST["promocja"]);
 
 
function lacz_bd()
{  
  include("config.php"); 
    if (! $db)
      return false;
   $db->autocommit(TRUE);
   return $db;
}
//połaczenie z bazą
$db = lacz_bd();
//zapytanie sql do bazy określające jakie dane mają zostać pobrane
$taryfa=$_POST["taryfa"];
$promocja=$_POST["promocja"];
$oferta=($promocja. " w abonamencie: " .$taryfa);
 
$zapytanie = "select tel, id," .$taryfa." from ".$promocja;
//pobranie wyniku zapytania
$wynik = $db->query($zapytanie);
//obliczanie ilości rekordów
$it = $wynik->num_rows;
 
$i='0';
#$wiersz=$wynik->fetch_assoc();
#$it=$it-'1';
 
for (;$i<$it;) {
	$wiersz=$wynik->fetch_assoc();
	$do_zaplaty=$wiersz[$taryfa];
	$img=$wiersz["id"];
	$show="'show".$i."()'";
	echo('<option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show'.$i.'()">
	function show'.$i.'()
	{
	var id="'.$img.'"
	var kat="'.$promocja.'"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='.$show.'>' .$wiersz['tel']. ' ' .$wiersz[$taryfa].' zł</span>")
	</script>
	</option>');
	$i++;
   }
 
?>
</select>
<input type="hidden" name="oferta" value="<? echo($oferta); ?>" >
<input type="hidden" name="do_zaplaty" value="<? echo($do_zaplaty); ?>" >
</td><td>   
	<script type="text/javascript" language="JavaScript">
       document.write('<img id="obrazek" src="images/'+kat+'/'+id+'.gif" />');
    </script>
    </td></tr></table>
<label>
      <div align="left">
      <table><tr>
      	<td width="230">&nbsp;</td>
        <td><input type="submit" name="submit" id="submit" value="Dalej"></td>
        </tr></table>
      </div>
      </label>
</form>
<? include("bottom_gui.php"); ?>
0

Yhy. I co temu listingowi dolega? Bo właśnie tą część pominąłeś [rotfl]

0

chodzi mi dokładnie o tę cześć:

for (;$i<$it;) {
        $wiersz=$wynik->fetch_assoc();
        $do_zaplaty=$wiersz[$taryfa];
        $img=$wiersz["id"];
        $show="'show".$i."()'";
        echo('<option>
        <script type="text/javascript" LANGUAGE="JavaScript" onclick="show'.$i.'()">
        function show'.$i.'()
        {
        var id="'.$img.'"
        var kat="'.$promocja.'"        
        document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
        }
        document.write("<span onclick='.$show.'>' .$wiersz['tel']. ' ' .$wiersz[$taryfa].' zł</span>")
        </script>
        </option>');
        $i++;

wyświetlanie obrazka powinno nastapić tutaj:

<td>   
        <script type="text/javascript" language="JavaScript">
       document.write('<img id="obrazek" src="images/'+kat+'/'+id+'.gif" />');
    </script>
    </td>

z w/w petli do której wczytują sie pozycje z db mysql

0

Po pierwsze: Ładne pętle

for (;$i<$it;)

Po drugie: WTF?! Onclick w <script>?

<script type="text/javascript" LANGUAGE="JavaScript" onclick="show'.$i.'()">

Po trzecie: Cały ten skrypt JS wsadzony w <option>.

<option><script type="text/javascript" [...]

Po czwarte: Nie widzę w tym listingu żadnej deklaracji zmiennych kat oraz id, w momencie kiedy dochodzi do tego momentu:

<script type="text/javascript" language="JavaScript">
   document.write('<img id="obrazek" src="images/'+kat+'/'+id+'.gif" />');
</script>

Nie dziwię się że nie widzisz gdzie jest błąd, jeśli w tym listingu jest tak naje****, że ledwo można cokolwiek wyczytać.

0

o to chodzi żeby js było w pętli, każdy jej obieg tworzy nową funkcję show (z numerem obiegu pętli, przez co każdy element ma określone zdarzenie)
zmienne kat i id są deklarowane w w/w pętli.
skrypt działał w prostrzej formie:

<script type="text/javascript" LANGUAGE="JavaScript">
var id="2";
var kat="as";
function show()
{
id="2";
kat="as";
document.getElementById('obrazek').src=kat+'/'+id+'.gif';
}
function show2()
{
id="3"
kat="as"
document.getElementById('obrazek').src=kat+'/'+id+'.gif';
}
</script>

    <div><span onclick="show()">aaaaaaaaaa</span></div>
    <div><span onclick="show2()">bbbbbbbbbb</span></div>
    <div>
    <script type="text/javascript" language="JavaScript">
       document.write('<img id="obrazek" src="'+kat+'/'+id+'.gif" />');
    </script>
    </div>

nie wiem czy w ogóle można to zrobić w formularzu.
Generalnie chodzi mi o to żeby było to co wyżej tylko zamiast tesktu formularz w postaci listy wyboru.

0

You're doing it wrong!

Kilka rzeczy w tym całym skrypcie niestety nie ma sensu. Tego się tak nie robi. W ogóle PHP i JavaScriptu w ten sposób lepiej nie łączyć. Raz, że wynik to pomotane z poplątanym, a dwa, że to po prostu nie działa.

Jeśli PHP ma coś generować, to kod HTML, a nie JavaScript. No dobra, PHP może też generować kod JavaScript, ale wtedy i tylko wtedy, gdy programista naprawdę wie co robi i ma przynajmniej niezłe doświadczenie w PHP i pojęcie o architekturze stron www i dobre (albo lepsze) pojęcie o JavaScripcie. Ty w tym momencie jeszcze najwyraźniej tego nie masz. Szczególnie tego ostatniego -- dobre pojęcie o JS jest wymagane dlatego, byś potrafił wyeliminować te sytuacje, w których da się wszystko zrobić zwykłym, statycznym JavaScriptem. I ograniczyć liczbę dynamicznie generowanego JavaScriptu do minimum (a najlepiej do zera).

Zacząłem Ci nawet pisać, jak to zrobić, ale skasowałem to. Potrzebuję jednak więcej informacji, by móc Ci jak najskuteczniej doradzić.

Od razu mówię, że jeśli chcesz mieć to zrobione porządnie, to cały kod JS, który generujesz, poleci w kosmos i już do nas nie wróci :). A kod, który utworzymy, będzie mniejszy, szybszy, poprawny i bardziej elegancki. I oczywiście będzie działał.

Generalnie chodzi więc o to, by po zmianie listy rozwijanej (element SELECT) zmienił się obrazek w elemencie img od id "obrazek", tak?

Jak wiele może być tych obrazków (5, czy np. ponad 20)? Czy każdy element wybierany przez select/option (w Twoim przykładzie: "każdy telefon") może mieć przypisaną inną kategorię? Rozumiem, że każdy ma inne ID. Ale czy kategorię tez każdy może mieć inną, czy wszystkie zawsze taką samą (zastanów się nad tym, czy to się może zmienić w przyszłości)? Z Twojego kodu wynika, że wszystkie mają taką samą kategorię. Jeśli mają taką samą, to rozumiem, że jest ona dynamiczna, tj. przy jednym wyświetleniu strony wszystkie "telefony" (czy cokolwiek to jest) będą miały kategorię "abc", a przy innym wszystkie mogą mieć "def"?

Czy obrazki, które mają się pojawić po kliknięciu na opcję z selecta, wyświetlasz już gdzieś indziej na stronie? Nie chodzi mi o to, czy przypadkowo gdzieś się wyświetlają. Ale o to, że np. gdzieś indziej na tej samej stronie masz listę wszystkich obrazków telefonów z selecta, a w elemencie img#obrazek chcesz wyświetlać jeden z nich (np. większy).

Ten select jakie ma name i/lub id?

Nie przejmuj się, potrzebny Ci skrypt powinien być prosty. Jeśli potrzebujesz czegoś takiego, co mam w głowie, to napisanie skryptu może być szybsze niż napisanie tego komentarza. Idą Święta, więc jeśli tylko znajdę czas, postaram Ci się pomóc. Gwarancji nie daję, bo ostatnio nie mam czasu tu wchodzić na dłużej, przy czym "nie mam czasu" może też oznaczać, że leniuchuję sobie z rodziną, z czego oczywiście nie mam zamiaru rezygnować. Ale jeśli będę miał chwilę, to Ci pomogę.

0

bswierczynski dzieki za to że chcesz mi pomóc. postarm się to zobrazować:
user image
po prawej stronie, czyli w drugiej kolumie ma się wyświetlić zdjęcie. fotki nigdzie indziej nie używam, tylko na tej stronie.
kategorii jest kilka (ok 7) ale dla danego wywołania będzie jedna. Pozycji w formularzu będzie ok 57.
może jaśniej będzie jak pokaże kod po wygenerowaniu strony:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plus dla Biznesu</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #666;
}
body {
	background-image: url(images/plus_01.jpg);
	background-repeat: repeat-x;
	background-attachment:fixed;
}
-->
</style></head>

<body>
<div align="center">
  <table width="861" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td background="images/plus_03.jpg" width="861" height="62">&nbsp;</td>

    </tr>
    <tr>
      <td bgcolor="#FFFFFF"><img src="http://www.xxx.pl/_skiny/bshop_green/logo.jpg" /></td>
    </tr>
    <tr>
      <td background="images/plus_06.jpg" width="861" height="67" valign="top"><br /> &nbsp; &nbsp; &nbsp; 
	   w promocji:  
      </td>

    </tr>
    <tr>
      <td bgcolor="#FFFFFF"> <form action="dane.php" method="POST">
<table cellpadding="4" cellspacing="4"><tr><td> <select name="jaki_tel" size="20">
TR600rozmowna_do_wszystkichRozmowna do Wszystkich<option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show0()">
	function show0()
	{
	var id="1"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show0()'>Emporia Talk V20 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show1()">
	function show1()
	{
	var id="2"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show1()'>HTC Touch2 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show2()">
	function show2()
	{
	var id="3"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show2()'>Jablotron GDP02 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show3()">
	function show3()
	{
	var id="4"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show3()'>LG KP500 Cookie 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show4()">
	function show4()
	{
	var id="5"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show4()'>LG KU990i Viewty 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show5()">
	function show5()
	{
	var id="6"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show5()'>LG GD330 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show6()">
	function show6()
	{
	var id="7"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show6()'>Motorola Aura 3 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show7()">
	function show7()
	{
	var id="8"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show7()'>Motorola VE66  1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show8()">
	function show8()
	{
	var id="9"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show8()'>Nokia 1680 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show9()">
	function show9()
	{
	var id="10"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show9()'>Nokia 2330 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show10()">
	function show10()
	{
	var id="11"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show10()'>Nokia 2630 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show11()">
	function show11()
	{
	var id="12"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show11()'>Nokia 2680 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show12()">
	function show12()
	{
	var id="13"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show12()'>Nokia 2700 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show13()">
	function show13()
	{
	var id="14"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show13()'>Nokia 3110 Classic 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show14()">
	function show14()
	{
	var id="15"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show14()'>Nokia 3120 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show15()">
	function show15()
	{
	var id="16"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show15()'>Nokia 5130 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show16()">
	function show16()
	{
	var id="17"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show16()'>Nokia 5310 STD 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show17()">
	function show17()
	{
	var id="18"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show17()'>Nokia 5530 XpressMusic 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show18()">
	function show18()
	{
	var id="19"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show18()'>Nokia 5800 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show19()">
	function show19()
	{
	var id="20"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show19()'>Nokia 5800 STD 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show20()">
	function show20()
	{
	var id="21"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show20()'>Nokia 6210 Navigator 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show21()">
	function show21()
	{
	var id="22"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show21()'>Nokia 6300 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show22()">
	function show22()
	{
	var id="23"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show22()'>Nokia 6303 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show23()">
	function show23()
	{
	var id="24"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show23()'>Nokia 6303 z zest. BT (BH 104) 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show24()">
	function show24()
	{
	var id="25"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show24()'>Nokia 6730 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show25()">
	function show25()
	{
	var id="26"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show25()'>Nokia 7100 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show26()">
	function show26()
	{
	var id="27"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show26()'>Nokia E51 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show27()">
	function show27()
	{
	var id="28"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show27()'>Nokia E52 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show28()">
	function show28()
	{
	var id="29"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show28()'>Nokia E66 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show29()">
	function show29()
	{
	var id="30"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show29()'>Nokia E71 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show30()">
	function show30()
	{
	var id="31"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show30()'>Nokia E75 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show31()">
	function show31()
	{
	var id="32"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show31()'>Nokia E75 LUX 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show32()">
	function show32()
	{
	var id="33"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show32()'>Nokia N85 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show33()">
	function show33()
	{
	var id="34"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show33()'>Samsung B2100 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show34()">
	function show34()
	{
	var id="35"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show34()'>Samsung B2700 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show35()">
	function show35()
	{
	var id="36"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show35()'>Samsung B3310 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show36()">
	function show36()
	{
	var id="37"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show36()'>Samsung Omnia 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show37()">
	function show37()
	{
	var id="38"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show37()'>Samsung Omnia Lite (B7300) 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show38()">
	function show38()
	{
	var id="39"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show38()'>Samsung M3510 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show39()">
	function show39()
	{
	var id="40"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show39()'>Samsung S3310 z kart? 1GB 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show40()">
	function show40()
	{
	var id="41"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show40()'>Samsung S3600 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show41()">
	function show41()
	{
	var id="42"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show41()'>Samsung S3650 Corby 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show42()">
	function show42()
	{
	var id="43"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show42()'>Samsung S3650 Corby z kart? 4GB 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show43()">
	function show43()
	{
	var id="44"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show43()'>Samsung S5230 Avila 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show44()">
	function show44()
	{
	var id="45"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show44()'>Samsung S5230 Avila z kart? 4GB 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show45()">
	function show45()
	{
	var id="46"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show45()'>Samsung S7220 Ultra Classic 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show46()">
	function show46()
	{
	var id="47"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show46()'>Samsung S7350i Ultra Style 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show47()">
	function show47()
	{
	var id="48"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show47()'>Samsung S8300 Ultra Touch 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show48()">
	function show48()
	{
	var id="49"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show48()'>Sony Ericsson C902 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show49()">
	function show49()
	{
	var id="50"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show49()'>Sony Ericsson C902 STD 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show50()">
	function show50()
	{
	var id="51"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show50()'>Sony Ericsson C905 1 zł</span>")
	</script>

	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show51()">
	function show51()
	{
	var id="52"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show51()'>Sony Ericsson S312 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show52()">
	function show52()
	{
	var id="53"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show52()'>Sony Ericsson U10i Aino 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show53()">
	function show53()
	{
	var id="54"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show53()'>Sony Ericsson W595 1 zł</span>")
	</script>
	</option><option>

	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show54()">
	function show54()
	{
	var id="55"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show54()'>Sony Ericsson W715 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show55()">
	function show55()
	{
	var id="56"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show55()'>Sony Ericsson W995 1 zł</span>")
	</script>
	</option><option>
	<script type="text/javascript" LANGUAGE="JavaScript" onclick="show56()">
	function show56()
	{
	var id="57"
	var kat="rozmowna_do_wszystkich"	
	document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
	}
	document.write("<span onclick='show56()'>ZTE S302 1 zł</span>")
	</script>
	</option></select>
<input type="hidden" name="oferta" value="Rozmowna do Wszystkich z abonamentem: TanioRozmowne 45" >
<input type="hidden" name="do_zaplaty" value="1" >

</td><td>   
	<script type="text/javascript" language="JavaScript">
       document.write('<img id="obrazek" src="images/rozmowna_do_wszystkich/'+id+'.gif" />');
    </script>
    </td></tr></table>
<label>
      <div align="left">
      <table><tr>
      	<td width="230">&nbsp;</td>
        <td><input type="submit" name="submit" id="submit" value="Dalej"></td>
        </tr></table>
      </div>

      </label>
</form>
</td>
    </tr>
    <tr>
      <td background="images/plus_09.jpg" width="861" height="41">&nbsp;</td>
    </tr>
    <tr>
      <td background="images/plus_10.jpg" width="861" height="5">&nbsp;</td>

    </tr>
    <tr>
      <td background="images/plus_11.jpg"  width="861" height="27" align="center">Copyright &copy; by <b>xxx.pl</b> 2010 | design by Home.pl (product - Business Shop), core by Adrian Koziara</td>
    </tr>
  </table>

</div>
</body>
</html>
0

Ja pi... my ci cały czas próbujemy uświadomić że czas sięgnąć po dobrą książkę i że to co robisz robisz źle, a ty nam dalej tłumaczysz jak działa skrypt i wklejasz listingi złożone z <font size="5">660</span> linijek!

0

@bonio89:
Przed pokazaniem Ci rozwiązania muszę Ci coś napisać. Mam nadzieję, że się nie obrazisz, bo to nic osobistego. Jeśli nawet się obrazisz, ale weźmiesz moje słowa do serca, to i tak wyjdziesz na tym na plus, więc napiszę co chcę napisać.

Tak a propos kodu, który tu wkleiłeś. Ciebie nie znam, więc o Tobie nic nie mówię. Kod jednak widzę. Słuchaj, stary. On jest beznadziejny. Totalnie. Naprawdę. Jest ogromny, nieskuteczny, zapycha łącze, jest niepoprawny. Jest naprawdę bardzo mocno do bani.

Teraz nie ma się czym przejmować... poniekąd. Tzn. inaczej. To, że początkujący koder pisze taki kod, to nie jest nic dziwnego. Ja też pisałem kiedyś gówniany kod (i nadal piszę, choć mam nadzieję, że jest on teraz nieco mniej gówniany niż kiedyś). Sęk w tym, żebyś rozpoznał, że przydałyby Ci się w pewnym miejscu umiejętności, których póki co Ci brakuje. I że jeśli chcesz pisać kod o jakiejkolwiek rozsądnej jakości, to musisz te braki uzupełnić. Tylko to się liczy. Jeśli chcesz być profesjonalistą, to musisz zdawać sobie sprawę z własnych ograniczeń i z tego, że przydałoby się rozwinąć w tym czy w innym kierunku.

Jeśli zrobiło Ci się od tego niemiło, to przepraszam. Nie o to mi chodziło. Chcę raczej zagrzać Cię do walki i zachęcić do nauki. Pokażę Ci propozycję rozwiązania tego problemu. Porównaj ją z tym, co tam masz i sam uznaj, czy warto się uczyć, czy nie. Jesteś chyba młody, na naukę masz mnóstwo czasu. Ale musisz chcieć go dobrze wykorzystać. Naturalnie możesz mieć to gdzieś, może nie wiążesz swojej przyszłości z tworzeniem stron www. W takim wypadku olej to, co tu napisałem wyżej i łap prezent. Rzadko dajemy tu praktycznie gotowe rozwiązania, ale zrobię wyjątek, bo może sama różnica w wyglądzie/ilości kodu zachęci Cię do zgłębienia JavaScriptu. Poza tym są prawie święta :).

OK więc.

Schemat HTML-a wygląda tak:

  <form action="">
    <input type="hidden" name="kat" id="kat" value="NAZWA_KATEGORII" />
    <select name="jaki_tel" id="jaki_tel">
      <option class="data-id-1">Nokya 666</option>
      <option class="data-id-3">Syn Erikson</option>
      <option class="data-id-5">Powinienem nauczyć się JS</option>
    </select>
    <img src="" id="obrazek" alt="" />
  </form>

Musisz pamiętać o kilku rzeczach:

  1. Gdzieś na stronie, najlepiej w obrębie tego formularza, musi się znaleźć pole input[type=hidden]. Powinno mieć ustawiony atrybut id="kat" oraz atrybut value na wartość będącą nazwą kategorii (w powyższym przykładzie wpisałem tam po prostu "NAZWA_KATEGORII").
  2. Elementowi select z opcjami musisz dać id="jaki_tel", czyli takie samo jak atrybut name.
  3. Poszczególne elementy option zrobiły nam się nagle bardzo proste. Mają postać taką:
  <option class="data-id-NUMER_ID_TELEFONU">NAZWA_TELEFONU</option>

W sumie w miejscu oznaczonym NAZWA_TELEFONU możesz wpisać, co chcesz. Musisz jednak pamiętać, żeby każde option miało atrybut class. Wartość tego atrybutu powinna być dokładnie taka: słowo "data", myślnik, słowo "id", myślnik i liczba oznaczająca numer id telefonu. Jak np. wcześniej miałeś telefon "ZTE S302 1 zł" i on miał numer id 57, to zamiast tego, co miałeś:

<!--- tak miałeś -->
<option>
        <script type="text/javascript" LANGUAGE="JavaScript" onclick="show56()">
        function show56()
        {
        var id="57"
        var kat="rozmowna_do_wszystkich"       
        document.getElementById("obrazek").src="images/"+kat+"/"+id+".gif";
        }
        document.write("<span onclick='show56()'>ZTE S302 1 zł</span>")
        </script>
        </option>

Piszesz po prostu tę jedną linijkę:

  <option class="data-id-57">ZTE S302 1 zł</option>

Tak, samo to wystarczy.

Taki wygląd kodu sprawia, że wszystkie niezbędne dane znajdują się w kodzie HTML. Teraz zewnętrzny plik JavaScript może odczytać te dane, podczas gdy on sam (tzn. sam skrypt JS) jest stały. Poniższy kod JavaScript umieść w jakimś pliku np. o nazwie "podglad_telefonu.js":

function init_select_with_image_preview(select, img, category) {      
  if (select && img && category) {
    select.onchange = function() {
      var option     = select.options[select.selectedIndex]
      ,   src        = '' // tu ew. ustaw domyślny obrazek, ew. z komunikatem "podgląd niedostępny"
      ,   id_matches = null
      ;
      if (option) {
        id_matches = /(?:^|\s)data-id-(\d+)(?:\s|$)/.exec(option.className);
        if (id_matches && typeof id_matches[1] !== 'undefined') {
          src = 'images/' + category + '/' + id_matches[1] + '.gif'
        }
      }
      img.src = src;
    };
    select.onchange();
  }
}
var select   = document.getElementById('jaki_tel')
,   img      = document.getElementById('obrazek')
,   category = (document.getElementById('kat')||{}).value || null
;
init_select_with_image_preview(select, img, category);

Następnie NA DOLE DOKUMENTU HTML, zaraz przed zamknięciem taga <body>, dołącz ten plik ze skryptem. Zrób to w poniższy sposób (zamieszczam jeszcze końcówkę dokumentu, czyli zamknięcie tagów body i html, żebyś widział jak to wstawić):

    <script type="text/javascript" src="podglad_telefonu.js"></script>
  </body>
</html>

I tyle. Powinno działać. Skrypt w JS jest napisany jako w miarę reużywalny, czyli jest odrobinę większy niż mógłby być. Ale jest na tyle mały, że to nie problem.

Wymyśliłem, żeby przechowywać wartości id telefonów w atrybucie class elementów option. To IMO dobry sposób. Wartość id jest w atrybucie class poprzedzona prefixem "data-id-" żeby nie kolidowała z niczym innym. Poza tym to jest pewna konwencja z HTML-a 5, który jeszcze się nie ukazał. Skrypt odczytuje atrybut class w sposób prawidłowy, czyli jakbyś chciał do niektórych elementów option dodać jeszcze jakąś inna klasę, to dodaj ją śmiało po spacji -- skrypt i tak wyłuska sobie to ID.

Wymusiłem też na Tobie, byś dodał do dokumentu parę ID. W sumie ta reużywalna część skryptu tego nie wymaga. Część inicjalizacyjna zaś mogłaby użyć innych danych niż ID elementu i normalnie używanie samego getElementById wynika często z nieznajomości innych metod DOM. Ja je znam, ale specjalnie wstawiłem Ci tam ID, bo na stronie ID powinno być unikalne. Gdybyś już gdzieś miał ID "kat" w innym miejscu, to walidator (którego pewnie nie używasz...) Cię przed tym ostrzeże.

Podałem Ci jedynie wymagania odnośnie HTML-a. Nie napiszę Ci kodu PHP, który Ci taki HTML wygeneruje. To zadanie dla Ciebie, ale myślę, że w PHP sobie akurat radzisz, więc nie powinien to być dla Ciebie problem.

Ważniejsze zagadnienia związane z JavaScriptem użyte w tym rozwiązaniu:
-DOM (Document Object Model),
-funkcje anonimowe,
-wyrażenia regularne,
-nietypowe właściwości operatorów || i &&.
Do nauki JavaScriptu polecam książkę "JavaScript -- Mocne strony" Douglasa Crockforda. Będzie tam wszystko to, co powyżej oprócz DOM, który możesz sobie pogooglować.

Jak coś nie działa, to piszcz. Wklej tylko wygenerowany kod HTML żebym zobaczył, czy spełnia wymagania, o których pisałem. Skrypt testowałem w Firefoxie, Operze i IE i wszystko powinno być OK, ale testowałem na sucho, nawet bez przykładowych obrazków.

0

bswierczynski dzięki za wyczerpójącą wypowiedź i czasz poświęcony dla mnie. Słusznie zauważyłeś że jestem początkującym koderem i jako-tako sobie radzę z php. Nie mam więc jakiś żalów bo byłoby to nie na miejscu.
Dzięki za prezent, jak dla mnie najlepszy dopóki nie kupie statywu do lustrzanki :D
pozdrawiam i boiorę się za poprawianie kodu;)

0

@bonio89:
Wiesz, tu nie ma innej możliwości. Jak nie znasz jeszcze dobrze jakiegoś języka, to albo napiszesz w nim bardzo prościutkie rzeczy, albo szarpniesz się na coś większego, a bez doświadczenia wyjdzie Ci to zupełnie nie tak jak trzeba. Cudów nie ma. Dlatego nie mówię, że jesteś nieogarnięty, tylko że potrzebujesz w JavaScripcie jeszcze sporo czasu do nauki. Ważne żeby mieć to w głowie, ale się nie przejmować (w sensie: nie dołować i nie rozpaczać), tylko stopniowo i systematycznie sobie wiedzę kompletować.

Ten skrypt JS jest niby malutki, ale i tak wykorzystałem w nim DOM czy wyrażenia regularne, które same w sobie mają własne specyfikacje i poświęcone im książki (choć ten skrypt używa tylko podstaw). Warto się jednak tego uczyć, bo obie te rzeczy są dostępne w innych językach -- wyrażenia regularne przydają się bardzo również w PHP.

Jakby coś Ci tam nie działało ze strony skryptów, to dobrze by było, jeśli dałbyś radę o tym napisać jeszcze dzisiaj. Dziś na pewno tu zajrzę, a jutro Wigilia, a potem święta, więc... Zanim napiszesz upewnij się tylko, że generowany HTML jest zgodny z moją "specyfikacją" i na wszelki wypadek i tak zamieść wyciąg HTML-a. Najważniejsze są 3 rzeczy: input[type=hidden] z nazwą kategorii, lista elementów option i element img w którym pojawi się podgląd; oczywiście istotne jest też poprawne dołączenie skryptu. Myślę, że takie rzeczy jak wyświetlenie optionów w pętli to dla Ciebie w PHP nie problem.

0

Działa tak jak powinno;) Wielkie dzięki jeszcze raz bardzo mi pomogłeś;)
Wesołych Świąt:)

P.S. Jak będziesz w Sz-nie to stawiam piwo:)
P.S.2 i tak skrypt planuje wdrożyć z początkiem roku, musi jeszcze przejść przez testy działu handlowego:D

1 użytkowników online, w tym zalogowanych: 0, gości: 1