elseif werkt niet

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Heyhey, bij het volgende script doet de láátste elseif het niet. De eerste if en elseif doen het wel. Iemand enig idee wat er mankeert aan de derde?

PHP:
<?

include("config.php");

$compo = $_GET[component];
$typ = $_GET[type];
$typ2 = $_GET[type2];

if (($_GET['component'] = cddvd) && ($_GET['type2'] = dvdrom)) {

  $detailQuery = "SELECT * FROM $compo WHERE type='$typ' and type2='$typ2'";
  $detailResult = mysql_query($detailQuery) or die (mysql_error()); 
  
  {
    while($detailRow = mysql_fetch_array($detailResult))
    {
      extract($detailRow); 
	  
	  echo'
	  
	  '. $naam .'<br>
	  
	  ';
}
}
}

elseif (($_GET['component'] = cddvd) && ($_GET['type2'] = dvdbrander)) {

  $detail2Query = "SELECT * FROM $compo WHERE type='$typ' and type2='$typ2'";
  $detail2Result = mysql_query($detail2Query) or die (mysql_error()); 
  {
    while($detail2Row = mysql_fetch_array($detail2Result))
    {
      extract($detail2Row); 
	  
	  echo'
	  
	  '. $naam .'<br>
	  
	  ';
}
}
}

elseif ($_GET['component'] = behuizing) {

  $detail3Query = "SELECT * FROM $compo WHERE type='$typ'";
  $detail3Result = mysql_query($detail3Query) or die (mysql_error()); 
  {
    while($detail3Row = mysql_fetch_array($detail3Result))
    {
      extract($detail3Row); 
	  
	  echo'
	  
	  '. $naam .'<br>
	  
	  ';
}
}
}

else
	  echo'
	  Nothing found.
';
?>
 
je wilt in je if en elseif toch dingen vergelijken? Als je iets wilt vergelijken moet je niet = gebruiken maar == (is gelijk aan). Zie bijvoorbeeld dit voorbeeldje: Klik.

En als dat niet de oplossing is, wat doet hij niet? Geeft hij een error?
 
Ook heb je extra brackets terwijl die helemaal niet nodig zijn:
PHP:
if (($_GET['component'] = cddvd) && ($_GET['type2'] = dvdrom)) { 
//begin IF
  $detailQuery = "SELECT * FROM $compo WHERE type='$typ' and type2='$typ2'"; 
  $detailResult = mysql_query($detailQuery) or die (mysql_error()); 
  //{ begin wat? 
    while($detailRow = mysql_fetch_array($detailResult)) {
    //begin WHILE 
      extract($detailRow);     
      //dit heb je nu: echo'  '. $naam .'<br>';
      //Dit is makkelijker
      echo $naam. '<br />';
    } //end WHILE
  //} end wat? 
} //end IF
Hopelijk red je het met het commentaar.

Om even op Rimsic's punt te komen:

= is een toewijzing
PHP:
$a = 1;
== is een vergelijking

PHP:
if($a == 1){

}
 
Bedankt voor het reageren, maar ik snap nu nog steeds niet wat ik moet doen om die andere elseif werkende te krijgen...

En Tha_Devil, hoezo heb ik teveel brackets? Ik gebruik er op het eind gewoon 3 om de WHILE, extract($detailRow); en IF af te sluiten :eek:
 
De functie extract haalt hetgeen weg wat jij defineert, dat is niet bracket-gebonden...

Zie ook mijn commentaar, ik heb aangegeven wanneer er iets begint en wanneer het eindigt.

edit: even antwoord op je vraag:

Je moet in de IF-statements even dubbele = gebruiken
 
Laatst bewerkt:
Je commentaar is duidelijk maar ik zit eerlijk gezegt niet met te veel brackets, het kan toch geen kwaad :D

Het script werkt nu maar er is toch iets raars...

Ik heb een tabelletje gemaakt voor de resultaten van de volgende IF statement:

dvdrom
PHP:
if (($_GET['component'] == cddvd) && ($_GET['type2'] == dvdrom)) {

echo'

<TABLE BORDER=0 WIDTH=100% ALIGN=CENTER>
  <TR BGCOLOR=#666666 ALIGN=CENTER>
    <TD><FONT COLOR=#FFFFFF><B>Naam</B></TD>
    <TD><FONT COLOR=#FFFFFF><B>Type</B></TD>
    <TD><FONT COLOR=#FFFFFF><B>Snelheid</B></TD>
    <TD><FONT COLOR=#FFFFFF><B>Prijs</B></TD>
  </TR>

';

  $detailQuery = "SELECT * FROM $compo WHERE type='$typ' and type2='$typ2'";
  $detailResult = mysql_query($detailQuery) or die (mysql_error()); 
  
    while($detailRow = mysql_fetch_array($detailResult))
    {	  
	  echo'
<body link="#0000FF" vlink="#00FF00" alink="#FF0000">
<TR BGCOLOR="#999999" ALIGN=LEFT>	  
  <TD><B>'. $detailRow['naam'] .'</B></TD>
    <TD><B>'. $detailRow['type'] .'</B></TD>
	  <TD><B>'. $detailRow['snelheid'] .'x</B></TD>
	    <TD><B>'. $detailRow['prijs'] .'</B></TD>
  </TR>';
	    
  }
  {
  }

	  echo'
	  
	  </TABLE>
	  
	  ';	

}

En daarop volgt:

dvdbrander
PHP:
elseif (($_GET['component'] == cddvd) && ($_GET['type2'] == dvdbrander)) {

  $detail2Query = "SELECT * FROM $compo WHERE type='$typ' and type2='$typ2'";
  $detail2Result = mysql_query($detail2Query) or die (mysql_error()); 
  {
    while($detail2Row = mysql_fetch_array($detail2Result))
    {
      extract($detail2Row); 
	  
	  echo'
	  
	  '. $naam .'<br>
	  
	  ';
}
}
}

Nu zou dus alleen als ''dvdrom'' wordt opgevraagd de tabel weergegeven moeten worden.. maar hij wordt ook weergegeven in ''dvdbrander''. Ook heb ik bij ''dvdbrander'' duidelijk aangegeven dat alleen ''naam'' geëcho'd moet worden, maar hij echo'd ook de query's die bij ''dvdrom'' zijn aangegeven. Waarom doet ie dat? :eek: Bij ''behuizing'' laat die de tabel, zoals het hoort, namelijk niet zien.

EDIT: Ik weet niet precis wát ik heb gedaan, maar nu ineens werkt ie wel... appart, maargoed :D
 
Laatst bewerkt:
Ten eerste even deze tip: Gebruik altijd maar 1x een <body> wil je voor de rest kleurtjes veranderen dan zul je andere dingen moeten verzinnen (Lees: CSS gebruiken)

Daarnaast is het waarschijnlijk handiger dat je het hele script even plaatst
 
Achja, ik heb die tabel van een ouder script gekopieerd en geplakt en daar zat die body dus nog in :p

Maar hij deed eerst denk ik zo gek omdat ik ergens toch nog vergeten was een dubbele = neer te zetten ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan