2016-05-20 14 views
0
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<select> 
<?php 
include 'connection.php'; 
$q = "SELECT * FROM rooms WHERE duration='first lecture' and day='Sunday'"; 
$r = mysql_query($q); 
$ro = mysql_num_rows($r); 
if($ro==0) { 
for($i=1; $i<=14; $i++) { ?> 
<option value=""><?php echo $i; ?></option> 
<?php 
} } 
else { 
while($row = mysql_fetch_array($r)){ 

for ($i=1; $i<=14; $i++) 
{ 
$exclude = array($row['name']); 
if(in_array($i, $exclude)) continue; 
?> 
<option value="<?php echo $i; ?>"><?php echo $i; ?></option> 
<?php 
} 
} 
} 
?>   
</select> 
</body> 
</html> 

FOR LOOPを使用して配列で取り出された要素を1つのループで削除したいと考えています。 $ rowの値(4,5)を取得したとします。FOR LOOPで必要なのは、(4,5)を除く1から14までの数字を表示することです。ループで配列を検索する番号を削除する

私は何度も試してみましたが、初めて成功しましたが、最初のループでは(4)がなくなり、2回目では(5)が除かれます。

一度に両方を削除する方法はありますか?

それは空の部屋の可用性をチェックするので、私は私が試したので、1から14までの範囲で、私は(4,5)を選択した場合、それは私が動的に

+0

なぜクエリで除外しないのですか? – Epodax

+0

私はすでに予約した部屋がわからないので、お勧めしません –

答えて

0

を、それを必要とする静的メソッドになります$行[「name」を]必要あなたのコードを使用して、私はそれが正しいと思います。

$exclude = array(4,5); 
for ($i=1; $i<=14; $i++) { 
    if (in_array($i, $exclude)) continue; 
    echo $i.'<br/>'; 
} 

ところで、クエリの結果を表示できますか?おそらくそこに問題があるかもしれません。

0

2つの配列を比較できます。

$array1 = range(1,14); // Your 14 rooms 
$array2 = array(4, 5); // The rooms taken 
$result = array_diff($array1, $array2); // Find the rooms not taken 

echo "<select>"; 
foreach($result as $rooms) { 
    echo "<option value=''>" . $rooms . "</option>"; 
} 
echo "</select>"; 
+0

私はそれを試してみました –

+0

どうしたのですか? array_diffは正しい順序で配列を持つ必要があることに注意してください。この場合、array_diff($ array2、$ array1)は動作しません。 – Guyra

関連する問題