PDA

Prikaži potpunu verziju : Uzimanje vrednosti vrednosti option u select bez klika na submit


vladakg
8.1.2011, 21:42
Ovako, pravim neku admin stranicu za jedan moj sajt, pa ne znam kako da uradim sledece. Naime zeleo bih u jednoj formi da iz select dobijem id iz baze za odabranu galeriju. Ja znam da dobijem kad kliknem na submit ali ja zelim pre toga. Moj kod za select bi bio ovakav:
<?php
connect();
$tbl_name="menu";
$result = mysql_query("SELECT * FROM $tbl_name");
$count=mysql_num_rows($result);
$row=mysql_fetch_array( $result );

echo "<select name=odabir>";
$i=0;
for($i=0;$i<=$count-1;$i++)
{
$tbl_name2="galerija";
$id_menu=$row['id_menu'];
$resultsub = mysql_query("SELECT * FROM $tbl_name2 WHERE id_menu=$id_menu");
$countsub=mysql_num_rows($resultsub);
$rowsub=mysql_fetch_array( $resultsub );
$j=0;
for($j=0;$j<=$countsub-1;$j++)
{
echo "

<option value=".$rowsub['id_gal'].">
".$row['ime']." -- "
.$rowsub['ime'].
"
</option>
";
$rowsub=mysql_fetch_array( $resultsub );
}
$row=mysql_fetch_array( $result );
}
echo " </select>";
?>Pa dalje u kodu imam input gde ubacujem podatke, ali prvo ovde izaberem galeriju. Kako ja da dobijem ovaj id_gal pre nego sto kliknem na submit? Znaci kad izaberem iz padajuce liste neku galeriju da odmah ispod moze da mi ispise i njen id, jel moze neko da mi pomogne?

Remedy
9.1.2011, 0:05
Kad ubacuješ "code" u post, bilo bi dobro da taj "code" bude u odgovarajućem tagu (dugme za PHP tag je treće sa desne strane iznad prozora za pisanje posta). Tako je lakše drugima da ga pročitaju (a ti drugi treba tebi jel, da pomognu :)). Isto, ako ti je "code" iskomentarisan (pretpostavljam da to radiš dok kucaš), ostavi i to da ljudi lakše shavate šta si hteo da uradiš tim delom "code"-a (a ako nije, iskomentariši malo). Što jasnije postaviš pitanje, pre ćeš dobiti odgovor.

E sad, ovo nema veze sa pitanjem, ali ima sa ovim "code"-om koji si postavio. Uvek se trudi da imaš što manji broj upita ka bazi (da bi ti aplikacija radila brže). Znači, kad staviš mysql_query() u "for" loop, pa taj loop krene da vrtiiii.... :nov_guita Nego reši tu situaciju drugačije, tj napiši taj query drugačije ako je moguće (npr izvuci id-je koji su ti potrebni pomoću loop-a, pa onda pošalji jedan query). Drugo, izbegavaj da selektuješ sve (*), osim ako ti stvarno nije potrebno sve. Ovo je samo primer:
SELECT id_gal, ime FROM galerija WHERE id_menu IN(1, 2, 3, 4);

Što se tiče tog id-ja galerije, ne shvatam zašto ti treba (osim ako nećeš da šalješ neki ajax zahtev, ali onda bi ga izvukao pomoću javascripta). Meni ovako deluje da je to admin stranica za upload slike, i da to "select" polje služi za odabir galerije u koju će ići slika.

vladakg
9.1.2011, 1:19
Uspeo sam donekle, tacnije uspeo sam da mi u odredjenom div-u ispise koji je id galerije koju sam izabrao. E sad je pitanje kako da iskoristim taj id za ono sto ja hocu. Da pojasnim jos malo sta ja hocu. Imam select gde mogu da izaberem galeriju koju hocu, I ispod imam 10 input polja za upload slika. Ja hocu da kad izaberem galeriju, dobijem id te galerije kako bi mogao da proverim da li u njoj vec ima slika, I ako ih ima da mi pored input polja za koje vec postoji slika prikaze tu sliku. Za id sam uspeo na sledeci nacin.Prvo sam ubacio js
<script type="text/javascript">
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML=""; //txtHint je div gde mi prikazuje id galerije
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+str,true); //ovde pozivam php kod u kome napisem sta zelim da se prikaze
xmlhttp.send();
}
</script>

Kod za biranje je


<?php
connect();
$tbl_name="menu";
$result = mysql_query("SELECT * FROM $tbl_name");
$count=mysql_num_rows($result);
$row=mysql_fetch_array( $result );

echo "<select name=odabir onchange=showUser(this.value)>";
$i=0;
for($i=0;$i<=$count-1;$i++)
{
$tbl_name2="galerija";
$id_menu=$row['id_menu'];
$resultsub = mysql_query("SELECT * FROM $tbl_name2 WHERE id_menu=$id_menu");
$countsub=mysql_num_rows($resultsub);
$rowsub=mysql_fetch_array( $resultsub );
$j=0;
for($j=0;$j<=$countsub-1;$j++)
{
echo "

<option value=".$rowsub['id_gal'].">
".$row['ime']." -- "
.$rowsub['ime'].
"
</option>
";
$rowsub=mysql_fetch_array( $resultsub );
}
$row=mysql_fetch_array( $result );
}
echo " </select>";
?>
I na kraju kod u kome napisem sta zelim od rezultata

<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'root', '');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("pele", $con);
$sql="SELECT * FROM galerija WHERE id_gal = '".$q."'";
$subject = mysql_query($sql);
$id_gal = mysql_fetch_array($subject);
echo $id_gal['id_gal'] ; //ovde kazem da mi ispise koji je id galerije
mysql_close($con);
?>
Kako ja sad taj id da iskoristim za ono sto sam napisao gore. Znaci pored svakog input polja gde sam prethodno uneo sliku da mi stoji ta ista slika. Ja sam zamislio na ovaj nacin samo mi fali taj id pa da postavim ovakav upit <?php if ($row[slika1]==!null) echo "<img width=120 height=90 src=images/".$row[slika1]." />" ?>

Remedy
9.1.2011, 1:56
Ako hoćeš da tako funkcioniše, onda moraš da uposliš javascript. Ti već imaš id svake galerije kao vrednost "option" taga. Onda npr neka to "select" polje pošalje ajax zahtev sa id-jem odabrane galerije (onChange event handler pretpostavljam), neka ti php pribavi iz baze šta treba za tu galeriju, i onda opet moraš javascriptom da izmeniš stranicu kad dobiješ odgovor od servera.

Bilo bi ti jednostavnije da se nakon izbora galerije učita strana ponovo (ono što ti nećeš koliko shvatam).