javascript var in php

Status
Niet open voor verdere reacties.

Tha Devil

Moderator
Forumleiding
Moderator
Lid geworden
1 sep 2002
Berichten
16.494
Besturingssysteem
macOS Sequoia
Ik wil graag een dynamische selectie box hebben waarbij het 2e selectiemenu zich aanpast aan het eerste, ik heb hier al uren naar gezocht en kwam uiteindelijk op deze uit:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function setOptions(chosen) {
var selbox = document.myform.opttwo;

selbox.options.length = 0;
<?php
mysql_connect("localhost", "****", "******");
mysql_select_db("beta_bball");
// Get the makes
$make_query = "SELECT * FROM courts";
$make_result = mysql_query($make_query);
while($make_row = mysql_fetch_array($make_result))
{
	echo"selbox.options[selbox.options.length] = new Option('$make_row[court1]','$make_row[id]');";
}
?> 

}
</script>
</head>
<form name="myform"><div align="center">
<select name="optone" size="1"
onchange="setOptions(document.myform.optone.options[document.myform.optone.selectedIndex].value);">
<option value=" " selected="selected"> </option>
<option value="1">Test1</option>
<option value="2">Test2</option>
<option value="3">Test3</option>
</select><br /> <br />
<select name="opttwo" size="1">
<option value=" " selected="selected">Please select one of the options above first</option>
</select>
<input type="button" name="go" value="Value Selected"
onclick="alert(document.myform.opttwo.options[document.myform.opttwo.selectedIndex].value);">
</div></form> 
<body>
</body>
</html>

Maar ik krijg dus nu alle sporthallen (courts) van de teams terwijl ik dus alleen die van het team dat ik in het eerste selectiemenu heb gekozen.

Ik moet dus een WHERE functie aan de query vastplakken, maar de variabele die ik moet hebben is de chosen van de javascript functie...

Mocht iemand een beter script hebben, dan ben ik daar uiteraard in geinteresserd.
 
Er bestaan javascripts die dit doen zonder php.
Even geduld en je hebt er een.

Greetz : Jer:cool:en.
 
Code:
<form>
<script language="JavaScript">
 <!-- **** Vervolgkeuzelijst - Egel :) 050818 ****

  var data = new Array(
   'provincie:regio',
   'overijsel:regio:oost:west',
   'noord-holland:regio:noord:zuid',
   'friesland:regio:noord:oost:zuid:west',
   '');

  var max = data.length -1;
  for (var i = 0; i < max; i++) { data[i] = data[i].split(':');};

  function makesub() {
   var r = document.forms[0].regio;
   for (var i = r.options.length -1; i >= 0; i--) { r.options[i] = null;};
   var n = document.forms[0].provincie.selectedIndex;
   for (var i = 1; i < data[n].length; i++) { r.options[i-1] = new Option(data[n][i],data[n][i]);};
   r.selectedIndex = 0;
   };

  document.writeln('<select name="provincie" onchange="makesub()">');
  for (var i = 0; i < max; i++) { document.writeln('<option value="' + data[i][0] + '">' + data[i][0]);};
  document.writeln('</select>\n<select name="regio">');
  var n = document.forms[0].provincie.selectedIndex;
  for (var i = 1; i < data[n].length; i++) { document.writeln('<option value="' + data[n][i] + '">' + data[n][i]);};
  document.writeln('</select>');

 // -->
</script>
</form>
Je hoeft alleen maar de variabele data aan te passen, bij <select name=" kun je de 2 boxjes een naam geven. Zie Bijlage.


Vr.Gr. Egel
 

Bijlagen

Laatst bewerkt:
Het script van Egel werkt precies hetzelfde als wat ik snel in mekaar stak.

PHP:
<html>
<head>
<title>Untitled Document</title>
<script language="javascript">
<!-- meerkeuzelijst JeroenE -->
<!--
var Test1 = new Array("een","twee","drie");
var Test2 = new Array("vier","vijf","zes","zeven");
var Test3 = new Array("acht","negen","tien","elf","twaalf");
// je kan zoveel array's gebruiken als je opties kan kiezen, met zoveel nieuwe gegevens als je wilt.
function setOptions(de_test) {
var the_array = eval(de_test);
setOptionsText(window.document.myform.opttwo, the_array);
}
function setOptionsText(the_select, the_array) {
document.myform.opttwo.length = 0;
for (var i = 0; i < the_array.length; i++) {
document.myform.opttwo.length += 1;
the_select.options[i].text = the_array[i];
};
};
-->
</script>
</head>
<body>
<form name="myform"><div align="center">
<select name="optone" size="1" onchange="setOptions(document.myform.optone.options[document.myform.optone.selectedIndex].text);">
<option selected="selected"> </option>
<option>Test1</option>
<option>Test2</option>
<option>Test3</option>
</select><br /> <br />
<select name="opttwo" size="1">
<option value=" " selected="selected">Please select one of the options above first</option>
</select>
<input type="button" name="go" value="Value Selected"
onclick="alert(document.myform.opttwo.options[document.myform.opttwo.selectedIndex].text);">
</div></form> 
</body>
</html>

Als je nog vragen hebt, stel ze gerust.

Greetz : Jer:cool:en.
 

Bijlagen

Laatst bewerkt:
Bedankt voor de reacties,

@JeroenE: Dus als ik deze code ga gebruiken, kan ik dan de var test1 = new Array("een", "twee", "drie");
wijzigen in var test1 = new Array("sporthal 1", "sporthal2", "sporthal3");?

Dit zou ik dan mooi kunnen doen met PHP (Ik heb php nodig omdat ik zooi uit een database moet halen)
 
Dat moet lukken.
Je hebt echter geen php nodig met deze twee scripts (van mij en van Egel), maar ik weet natuurlijk niet welke informatie je uit de database wilt halen. Ik veronderstel dat het andere info is die je aan de hand van de var's uit het scriptje hier wilt bepalen.

Greetz : Jer:cool:en.
 
Laatst bewerkt:
Ken je PHP? Als je het wel kent dan zou je ook moeten weten dat je javascript in PHP kan echoen.

Ik zal het ff testen en laat het je zo weten.
 
Geplaatst door Egel
Ik ga je script eens kritisch bekijken :)

Doe gerust. Jouw script ziet er trouwens veel intelegenter uit.
:thumb:

Greetz : Jer:cool:en.
 
Laatst bewerkt:
PHP:
<html>
<head>
<title>Untitled Document</title>
<script language="javascript">
<!-- meerkeuzelijst JeroenE -->
<!--
<?
mysql_connect("localhost", "****", "******");
mysql_select_db("beta_bball");

$query = "SELECT * FROM clubs";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
	$query2 = "SELECT * FROM courts WHERE team_id='$row[id]'";
	$result2 = mysql_query($query2);
	$row2 = mysql_fetch_array($result2);
	echo" var Test$row[id] = new Array(\"$row2[court1]\",\"$row2[court2]\",\"$row2[court3]\");";
}
?>
// je kan zoveel array's gebruiken als je opties kan kiezen, met zoveel nieuwe gegevens als je wilt.
function setOptions(de_test) {
var the_array = eval(de_test);
setOptionsText(window.document.myform.opttwo, the_array);
}
function setOptionsText(the_select, the_array) {
document.myform.opttwo.length = 0;for (var i = 0; i < the_array.length; i++) {
document.myform.opttwo.length += 1;
the_select.options[i].text = the_array[i];
};
};
-->
</script>
</head>
<body>
<form name="myform"><div align="center">
<select name="optone" size="1" onchange="setOptions(document.myform.optone.options[document.myform.optone.selectedIndex].text);">
<option selected="selected"> </option>
<option>Test1</option>
<option>Test2</option>
<option>Test3</option>
</select><br /> <br />
<select name="opttwo" size="1">
<option value=" " selected="selected">Please select one of the options above first</option>
</select>
<input type="button" name="go" value="Value Selected"
onclick="alert(document.myform.opttwo.options[document.myform.opttwo.selectedIndex].text);">
</div></form> 
</body></html>

:thumb: Perfect, werkt als een tierelier! Bedankt :)

[En toch PHP gebruikt :p ]
 
Als een tierelier ? Pfuu ! Voeg eens 200 clubs toe, dat vertraagd de boel al aardig wat denk ik :p

Je voert nu voor elke club een query uit, wat de totale laadtijd aardig kan doen ophogen. Wat je ook kan doen is een INNER JOIN gebruiken bij je eerste query, dan heb je maar één query die het werk veel sneller doet dan wat je nu hebt :)
PHP:
$query = 'SELECT * FROM clubs INNER JOIN courts ON (clubs.id = courts.team_id)';
$result = mysql_query( $query ) or die( mysql_error() );

while( $row = mysql_fetch_assoc( $result ) )
{
  echo ' var Test' . $row['id'] . ' = new Array("' . $row['court1'] . '","' . $row['court2'] . '","' . $row['court3'] . '");';
}
 
Laatst bewerkt:
Heb ik ook weer iets bijgeleerd sie. Thx Tha Devil :thumb:.

Greetz : Jer:cool:en.
 
Auw! Net dat je denkt het licht te hebben gevonden krijg je meteen weer een dreun die je naar beneden helpt :p

Bedankt JP! Mijn kennis in MySQL statements is nog niet van jou niveau ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan