2016-12-09 8 views
0

データを返すPHP/MySQLリクエストがあります(例:「my_request」)。 結果をフェッチして問題が発生します... 値がハードコードされた配列(つまり:my_array ")であるかどうかを確認する必要があります。 予想される結果が得られますが、それは二回エコーされますクエリ結果をループしながら配列をループする

を私が持っている必要があります。 - my_request - 結果 ている間/ループ - データがmy_arrayで中

でない場合は0エコー - 1エコーデータがmy_arrayで である場合。

so:00110000

私が手:0010000000010000

あちこちserchingした後、私が試した: を - /結果を格納配列を通してクエリループ/その後、ループ終了:なし結果ここ

は、コードの一部です:

$my_array = array('Monday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00'), 'Tuesday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00') /* and so on 'til saturday */); 

$query = " SELECT date, start FROM table WHERE id=2 AND date='2016-12-08' ORDER BY start "; 
$resultats = $conn->query($query) or die ("Error :" . mysql_error()); 

while ($hours = mysqli_fetch_assoc($resultats)) 
{ 
extract($hours); 

echo" ($date/$start) "; /* results are ok , let's say I have 2 resultst ie: 9:00 and 10:00 */ 

foreach ($my_array as $hour) { 
    if($hour == $start) { echo"done"; } else { "fail"; } 
} 
} 

これは私が二重の結果を得る場所です!私が間違っている箇所を見つけることはできません... リクエストの結果を保存するために戻ってアレイループに使用する必要がありますか?しかしどうですか?それとも何か? 手掛かりはありますか?おかげ

+0

'$ my_array'は2次元であることに注意してください。 –

+0

これはどのように出力を変更しますか? (私は配列やデータから要求を読んでも何の問題もないので、1つだけ取得する必要がある複数の結果を得るには何が間違っているのか理解できないのです...) – OldPadawan

答えて

0

は私が...私はそれが誰かへの助けになることができますので、もし、私自身今ワーキングものを^^作るために(バディムによって)その答えを回避するために管理し、このWhile and for loop not working を発見した

/* query used below has been prepared at the beginning of the script */ 
$not_available_hours = array(); 
$myday = $specialHours[$theday]; 

$results = $stmt1->execute(); 
$stmt1->bind_result($date, $start); 
$stmt1->store_result(); 

if ($stmt1->num_rows > 0) { 

while($stmt1->fetch()){ 

$start = strtotime($start); 
$debut = date("G:i", $start); 

$not_available_hours[] = $debut; 
} 

foreach ($myday as $hour) { 
    if (in_array($hour, $not_available_hours)) { 
    $finish = strtotime($hour) + 3600; 
    $fin = date("G:i", $finish); 
    echo"already booked !"; /* grey line */ 
    } else { 
$finish = strtotime($hour) + 3600; 
$fin = date("G:i", $finish); 
echo"get it !"; /* available -> green line */ 
} 
} 
関連する問題