MYSQL in combinatie met een dropdown box

Status
Niet open voor verdere reacties.
Niet werkt in de zin van? Wat hoort er te gebeuren en wat gebeurt er nu?
 
Hij hoort precies hetzelfde te doen als met de ''case'' functie. En op het moment blijven de velden wit, hij haalt dus waarschijnlijk niks uit de database wanneer ik een moederbord selecteer want ik krijg ook geen errors...
 
Het punt is dat je nu een extra $_GET mee moet geven, je wilt een selectie maken op een type, maar ook wil je specifieke gegevens terug geven.
Je wilt dus van geheugen (type) weten welke er DDR2 (specifiek) ondersteunen.

Daarvoor zul je in het javascript wat aan moeten passen, ik denk dat je het zo kunt doen door gewoon dat in vast te stellen in de functie
Code:
function getCityList(sel)
{
	var eigenschap = sel.options[sel.selectedIndex].value;
	document.getElementById('dhtmlgoodies_processor').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajax.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajax.onCompletion = createProcessor;	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function	
	}
	document.getElementById('dhtmlgoodies_geheugen').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajaxTwo.requestFile = 'search.php?type=geheugen&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxTwo.onCompletion = createGeheugen;	// Specify function that will be executed after file has been found
		ajaxTwo.runAJAX();		// Execute AJAX function		
	}
}
Ik heb nu de requestFile aangepast naar search.php?type={...}&eigenschap={...}

Je kunt nu in search.php het volgende doen (Je kunt nu weer gewoon een case gebruiken, die doet hetzelfde als een ELSEIF)
PHP:
include('config.php');
if(isset($_GET['type']) && isset($_GET['eigenschap']])) {
  switch($_GET['type']){
    case "processor":
      $cpuQuery = "SELECT * FROM processors WHERE type='". $_GET['eigenschap'] ."'";
      $cpuResult = mysql_query($cpuQuery) or die(mysql_error());
      while($cpuRow = mysql_fetch_array($cpuResult)){
        echo "obj.options[obj.options.length] = new Option('$cpuRow[naam]','$cpuRow[id]');\n";
      }
    break;
    case "geheugen":
      
    break;
  }
}
 
Hoezo search.php? Het gaat om deze pagina.

Op het moment lijkt het alsof het werkt maar dat is omdat ik bij videokaart en geheugen ook ''am2'' heb ingevuld bij type, maar hier klopt natuurlijk geen zak van.
 
Oh laat maar, ik snap hem al :p sorry... eventjes proberen.
 
Die pagina heette eerst processor.php (De pagina waarop je die SELECT deed) maar aangezien het niet alleen meer om de processor gaat leek het mij handiger om hem search.php te noemen...

Je kunt het zelf anders nog aanpassen, gewoon bij het JS de requestFile aanpassen.

Maar fijn dat je er zelf achter kwam... Nu nog de knop Aanpassen leren gebruiken :D:p
 
Laatst bewerkt:
Het script voert helaas weer niets uit :(

Ik heb nu dit:

build.php
PHP:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Your website</title>
<link rel="stylesheet" href="indexs.css" type="text/css" />

<script type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript">

var ajax = new sack();
var ajaxTwo = new sack();
var ajaxThree = new sack();

function getCityList(sel)
{
	var countryCode = sel.options[sel.selectedIndex].value;
	document.getElementById('dhtmlgoodies_processor').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajax.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajax.onCompletion = createProcessor;	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function	
	}
	document.getElementById('dhtmlgoodies_geheugen').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajaxTwo.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxTwo.onCompletion = createGeheugen;	// Specify function that will be executed after file has been found
		ajaxTwo.runAJAX();		// Execute AJAX function		
	}
		document.getElementById('dhtmlgoodies_videokaart').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajaxThree.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxThree.onCompletion = createVideokaart;	// Specify function that will be executed after file has been found
		ajaxThree.runAJAX();		// Execute AJAX function		
	}
}

function createProcessor()
{
	var obj = document.getElementById('dhtmlgoodies_processor');
	eval(ajax.response);	// Executing the response from Ajax as Javascript code	
}	

function createGeheugen()
{
	var obj = document.getElementById('dhtmlgoodies_geheugen');
	eval(ajaxTwo.response);	// Executing the response from Ajax as Javascript code	
}

function createVideokaart()
{
	var obj = document.getElementById('dhtmlgoodies_videokaart');
	eval(ajaxThree.response);	// Executing the response from Ajax as Javascript code	
}		
</script>

</head>
<body>
<center>
<div id="surround">
      <div id="wrap">
          <div id="logo"><img src="images/logo.gif" alt="Your website" /></div>
          <div id="header"><img src="images/header.jpg" alt="" /></div>
      <div id="left">
	  <img src="images/gradnav.jpg" alt="" />
	  <div id="nav">
            <div class="subnav"><a href="#" class="navlink">Home page</a></div>
            <div class="subnav"><a href="#" class="navlink">About Us</a></div>
            <div class="subnav"><a href="#" class="navlink">Products and Services</a></div>
            <div class="subnav"><a href="#" class="navlink">Customer Services</a></div>
            <div class="subnav"><a href="#" class="navlink">F.A.Q.</a></div>
            <div class="subnav"><a href="#" class="navlink">Contat us</a></div>
          </div>
          <div id="news">
		<br /><br />
                <span id="newsheadline">07-02-05 - News headline</span><br />
                <p>
                Etiam at quam non enim luctus pharetra. Aenean vel dui. Donec varius hendrerit nunc. Maecenas facilisis libero sit amet arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
                </p><br />
          </div>
          <div id="search">
                <form action="#"> 
                <b>Site search</b><br />
                <input type="text" name="q" />
                <input type="image" name="searchbttn" src="images/search.jpg" /><br /><br />
                </form>
          </div>
	</div>
          <div id="main">

<form action="" method="post">
<table>
	<tr>
		<td>Moederbord:</td>
		<td>

			<?
			
			include("config.php");
			
			$sql="SELECT * FROM moederbord"; 
			$result=mysql_query($sql); 
			
			$options=""; 

			while ($row=mysql_fetch_array($result)) { 

			$id=$row["id"];
			$type=$row["type"];
			$videokaart=$row["videokaart"];
			$prijs=$row["prijs"];  
			$naam=$row["naam"]; 
			$options.="<OPTION VALUE=\"$type\">".$naam. "&nbsp;&nbsp;&nbsp;€".$prijs. '</option>';
			} 
			?>
			
			<SELECT id="dhtmlgoodies_country" name="dhtmlgoodies_country" onchange="getCityList(this)"> 
			<OPTION VALUE=0>Choose 
			<?=$options?> 
			</SELECT> 
	<tr>
		<td>Processor: </td>
		<td><select id="dhtmlgoodies_processor" name="dhtmlgoodies_processor">
		</select>
		</td>
	</tr>
	<tr>
		<td>Geheugen: </td>
		<td><select id="dhtmlgoodies_geheugen" name="dhtmlgoodies_geheugen">
		</select>
		</td>
	</tr>
	<tr>
		<td>Videokaart: </td>
		<td><select id="dhtmlgoodies_videokaart" name="dhtmlgoodies_videokaart">
		</select>
		</td>
	</tr>	
	
</table>
</form> 

<? $kosten = $prijs + 0; 

echo'

€'. $kosten .'

';

?>

			
          </div>
<div style="clear:both"></div>
</div>


</div>
<a class="linkback" href="http://www.spykadesign.com">Free Template by Spyka Design</a>
</center>
</body>
</html>

search.php
PHP:
<?

include('config.php'); 
if(isset($_GET['type']) && isset($_GET['eigenschap']])) { 
  switch($_GET['type']){ 
    case "processor": 
      $cpuQuery = "SELECT * FROM processors WHERE type='". $_GET['eigenschap'] ."'"; 
      $cpuResult = mysql_query($cpuQuery) or die(mysql_error()); 
      while($cpuRow = mysql_fetch_array($cpuResult)){ 
        echo "obj.options[obj.options.length] = new Option('$cpuRow[naam]','$cpuRow[id]');\n"; 
      } 
    break; 
    case "geheugen": 
      $geheugenQuery = "SELECT * FROM geheugen WHERE type='". $_GET['eigenschap'] ."'"; 
      $geheugenResult = mysql_query($geheugenQuery) or die(mysql_error()); 
      while($geheugenRow = mysql_fetch_array($geheugenResult)){ 
        echo "obj.options[obj.options.length] = new Option('$geheugenRow[naam]','$geheugenRow[id]');\n"; 
    break; 
	case "videokaart": 
      $videokaartQuery = "SELECT * FROM videokaart WHERE type='". $_GET['eigenschap'] ."'"; 
      $videokaartResult = mysql_query($videokaartQuery) or die(mysql_error()); 
      while($videokaartRow = mysql_fetch_array($videokaartResult)){ 
        echo "obj.options[obj.options.length] = new Option('$videokaartRow[naam]','$videokaartRow[id]');\n"; 
    break; 
  } 
} 

?>

Wat o wat doe ik verkeerd?
 
Laatst bewerkt:
Klopt dat hij niets doet... Zoek de fout :D
build.php
PHP:
<script type="text/javascript">

var ajax = new sack();
var ajaxTwo = new sack();
var ajaxThree = new sack();

function getCityList(sel)
{
	var countryCode = sel.options[sel.selectedIndex].value;
	document.getElementById('dhtmlgoodies_processor').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajax.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajax.onCompletion = createProcessor;	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function	
	}
	document.getElementById('dhtmlgoodies_geheugen').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajaxTwo.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxTwo.onCompletion = createGeheugen;	// Specify function that will be executed after file has been found
		ajaxTwo.runAJAX();		// Execute AJAX function		
	}
		document.getElementById('dhtmlgoodies_videokaart').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajaxThree.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxThree.onCompletion = createVideokaart;	// Specify function that will be executed after file has been found
		ajaxThree.runAJAX();		// Execute AJAX function		
	}
}

function createProcessor()
{
	var obj = document.getElementById('dhtmlgoodies_processor');
	eval(ajax.response);	// Executing the response from Ajax as Javascript code	
}	

function createGeheugen()
{
	var obj = document.getElementById('dhtmlgoodies_geheugen');
	eval(ajaxTwo.response);	// Executing the response from Ajax as Javascript code	
}

function createVideokaart()
{
	var obj = document.getElementById('dhtmlgoodies_videokaart');
	eval(ajaxThree.response);	// Executing the response from Ajax as Javascript code	
}		
</script>
De hints zijn: Type en requestFile ;)

Mocht je het niet weten selecteer dan vanaf hier naar beneden ;)
-->Je hebt telkens als type processor, dat schiet natuurlijk niet op wanneer je naar geheugen of een videokaart zoekt <--
 
Laatst bewerkt:
Klopt, had dat niet goed gezien.. maar hij zoekt óók geen processor. Het script doet gewoon niets.

Ook na het editten gebeurt er niks :confused:
 
Kijk anders zelf even op search.php?type=processor&eigenschap=AM2 en de rest. Dan kun je in ieder geval zeker zijn dat het niet aan het PHP gedeelte ligt.
 
Als ik naar search.php ga krijg ik deze fout:

Code:
Parse error: syntax error, unexpected ']', expecting ',' or ')' in C:\Xampp\htdocs\sell\search.php on line 4

Edit: Er zat een dubbele bracket ergens waar dat niet hoorde... nu krijg ik dit:

Code:
Parse error: syntax error, unexpected T_CASE in C:\Xampp\htdocs\sell\search.php on line 19
 
Laatst bewerkt:
Ik zag het net ook ja (vermoedde al dat je hem online aan het testen bent)

Ik heb je een haakje teveel gegeven :eek:

In het IF statement bij eigenschap

(Maar dat had je zelf vast ook wel kunnen achterhalen)

Edit: je hebt de WHILE niet afgesloten voor regel 19. Unexpected betekent meestal dat je iets niet hebt afgesloten
 
Laatst bewerkt:
Ok we komen al iets verder... nu krijg ik dit als ik naar de pagina ga met de GET values:

obj.options[obj.options.length] = new Option('AMD Athlon X2 4000+','1'); obj.options[obj.options.length] = new Option('lol','2');

hij vult dus wel degelijk iets in... maar het script doet nog steeds niks.
 
Logisch wanneer je niet alles overneemt zoals ik het had gedaan :p
Code:
var countryCode = sel.options[sel.selectedIndex].value;
	document.getElementById('dhtmlgoodies_processor').options.length = 0;	// Empty city select box
	if(countryCode.length>0){
		ajax.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajax.onCompletion = createProcessor;	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function
Ik had geen var countryCode maar var eigenschap
 
Laatst bewerkt:
Ik heb

Code:
var countryCode = sel.options[sel.selectedIndex].value;

Nu veranderd in

Code:
var eigenschap = sel.options[sel.selectedIndex].value;

Maar er gebeurt nogsteeds niets :eek:
 
Bij een implementatie moet je wel alles juist overnemen en wanneer je iets wijzigt moet je dat ook wijzigen waar je het gebruikt :rolleyes:

HTML:
<SELECT id="dhtmlgoodies_country" name="dhtmlgoodies_country" onchange="getCityList(this)">
Gek dat hij het niet doet *zucht*, je zoekt naar een dhtmlgoodies_processor

Tja dan gaat dat niet werken he :rolleyes:
 
Ehm nee, die lijn zoekt naar de moederborden, en moet volgens mij ongewijzigd blijven? :confused:
 
Klopt, mijn fout. Ik keek naar de verkeerde regels :eek:

Ik merk trouwens deze fout op:
Code:
if(countryCode.length>0){
Die staat in het JS maar moet dus ook eigenschap.length (Staat bij alle opties)

Hoezo de pot verwijt de ketel dat hij zwart ziet :shocked: Die heb ik niet zien staan toen in countryCode heb gewijzigd in eigenschap
 
Hahaha ja met zo'n bergje code zie je al snel dingen over het hoofd he :D

Maargoed, nu doet het processor-gedeelte het wel want het type moederbord heeft dezelfde naam als het type processor, en dat wordt in deze regel mooi aangegeven:

Code:
$options.="<OPTION VALUE=\"$type\">".$naam. "&nbsp;&nbsp;&nbsp;€".$prijs. '</option>';

Hier staat dus dat hij naar $type moet kijken bij het selecteren van een moederbord. Maar hoe zorg ik dat hij ook naar geheugentype en videokaart gaat kijken?
 
Dit wordt gokwerk... JS is mij niet zo bekend...

Code:
function getCityList(sel)
{
	var eigenschap = sel.options[sel.selectedIndex].value;
	document.getElementById('dhtmlgoodies_processor').options.length = 0;	// Empty city select box
	if(eigenschap.length>0){
		ajax.requestFile = 'search.php?type=processor&eigenschap='+eigenschap;	// Specifying which file to get
		ajax.onCompletion = createProcessor;	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function

        ajaxTwo.requestFile = 'search.php?type=geheugen&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxTwo.onCompletion = createGeheugen;	// Specify function that will be executed after file has been found
		ajaxTwo.runAJAX();		// Execute AJAX function

		ajaxThree.requestFile = 'search.php?type=videokaart&eigenschap='+eigenschap;	// Specifying which file to get
		ajaxThree.onCompletion = createVideokaart;	// Specify function that will be executed after file has been found
		ajaxThree.runAJAX();		// Execute AJAX function	
	}
}
Waarschijnlijk kun je daar beter over praten in het topic dat je al eerder had aangemaakt in de sectie JS. Egel weet het antwoord vast wel :D
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan