Hallo,

De volgende simple while array toont cijfers van 1 tot 10

$i=1;

while($i<=10)
  {
  echo $i . "<br />";
  $i++;
  }


Hoe kan je dan ook aangeven dat bv 5 niet getoond mag worden of bv waardes uit een mysql array mogen niet getoond worden.

Alvast bedankt.
Dat heet een while-loop, of while-lus. Als je waarden wilt uitsluiten zal je binnen de loop moeten controleren of de waarde niet een uitgesloten waarde is. Als je een lijst (aha, een echte array) met uitgesloten waarden hebt, is [php]in_array[/php] een gemakkelijke manier.

Voorbeeldje:
<?php

$i = 1;

$uitgesloten = array(3, 7, 14);

while($i <= 10) {
if(!in_array($i, $uitgesloten)) {
echo $i . '<br>';
}

$i++;
}
?>
(1x te vaak gedrukt :P)
Hallo Jelmer bedankt voor je snelle reactie.

Werkt inderdaad goed het enige wat ik dan nog niet snap is hoe ik $uitgesloten kan vullen met de waardes uit een mysql array.

Onderstaand heb ik geprobeerd maar werkt niet

$html = "<select name='formfield'";

$sql = mysql_query("SELECT `row` FROM `table`");

while($row = mysql_fetch_array($sql)) {
		$k = $row['poort'];
}
$i = 1;

$uitgesloten = array($k);

while($i <= 48) {
    if(!in_array($i, $uitgesloten)) {
    	
    	
		if($i == $selected) {
				$html .= '<option value='.$i.' selected>'.$i.'</option>"';

		} else {
				$html .= '<option value='.$i.'>'.$i.'</option>"';

		}

    }
    
    $i++;
}

		$html .= '</select>';

	return $html;
Aan een array voeg je elementen toe door de ruimte tussen de twee haakjes erachter leeg te laten. Normaal staat daar de index. Bijv. $array[0] is het eerste element uit de array. In mijn geval van $uitgesloten was $uitgesloten[0] dus 3. Wil ik 6 aan $uitgesloten toevoegen, dan doe ik $uitgesloten[] = 6. $uitgesloten is nu de array(3, 7, 14, 6). Die 6 kan ook een nummer uit de database zijn.

Voorbeeldje:

<?php

$uitgesloten = array();

$sql_result = mysql_query('SELECT column FROM table');

if(!$sql_result) {
trigger_error('Query failed: ' . mysql_error(), E_USER_WARNING);
}
else {
while($row = mysql_fetch_assoc($sql_result)) {
$uitgesloten[] = $row['column'];
}
}

?>
Even een paar opmerkingen:
- De while() die je grbuikt in het voorbeeld is eigenlijk gewoon een for.
- Je herschrijft $k de hele tijd en op het einde verander je $k in een array (dus er zit maar een waarde in?)
- Gebruik duidelijke namen, die je later ook nog snapt ($k is niet duidelijk?)

<?php

# Array aanmaken
$uitgesloten = array();

# Select box aanmaken
$html = "<select name='formfield'>";

# Query uitvoeren
$query = mysql_query("SELECT `row` FROM `table`") or die(mysql_error());

# Alle regels los uitvoeren
while($row = mysql_fetch_assoc($sql)) {

# Array vullen
$uitgesloten[] = $row['poort'];
}

# 48x uitvoeren
for($i=1;$i<=48;$i++) {

# Controleren of hij uitgesloten is
if(!in_array($i, $uitgesloten)) {

# Controleren of hij geselecteerd moet zijn
if($i == $selected) {

# Optie toevoegen en selecteren
$html .= '<option value='.$i.' selected>'.$i.'</option>"';
} else {

# Optie toevoegen
$html .= '<option value='.$i.'>'.$i.'</option>"';
}
}
}

# Select box sluiten
$html .= '</select>';

# Html teruggeven
return $html;

?>
-> Moest edit knop zijn.
Thanks yelmer en rupie

buiten een klein foutje

while($row = mysql_fetch_assoc($sql)) {

$sql moet $query zijn

Werkt het perfect ik kan nu mijn functie afmaken :)

Reageren