2016-12-09 1 views
0

Ich habe eine PHP/MySQL-Anfrage, die Daten zurückgibt (dh: "my_request" genannt). Ich hole durch die Ergebnisse, und da kommt mein Problem ... Für jedes Ergebnis muss ich überprüfen, ob der Wert auch in einem hartcodierten Array ist (dh: my_array "genannt). Ich bekomme das erwartete Ergebnis, aber es wird zweimal wiederholteSchleife durch ein Array beim Durchlauf durch ein Abfrageergebnis

sollte ich: - my_request - während/Schleife durch die Ergebnisse - echo 1, wenn die Daten in my_array - echo 0, wenn die Daten nicht in my_array

.

also: 00110000

ich: 0010000000010000

Nach hier und da serching, habe ich versucht: - speichern Sie das Ergebnis/beenden die Abfrage Schleife/dann Schleife durch das Array: kein Ergebnis

Hier ist ein Stück des Codes:

$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"; } 
} 
} 

Hier bekomme ich das doppelte Ergebnis! und kann nicht finden, wo ich falsch mache ... Muss ich zurückgehen, um das Ergebnis der Anfrage zu speichern, und es dann für die Array-Schleife verwenden? Aber wie ? Oder irgendetwas anderes? Irgendwelche Hinweise?

dank
+0

Bitte beachten Sie, dass '$ my_array' zweidimensional ist. –

+0

Wie ändert sich die Ausgabe? (Ich meine, ich habe kein Problem damit, das Array oder die Daten der Anfrage zu lesen, deshalb kann ich nicht herausfinden, was ich falsch mache, um mehrere Ergebnisse zu bekommen, wo ich nur eins bekommen muss ...) – OldPadawan

Antwort

0

Ich hatte diese While and for loop not working ich es geschafft, zu arbeiten, um die Antwort (Vadim), meine eigenen jetzt arbeitende Sachen zu machen ^^ gefunden, so dass, wenn es keine Hilfe für jemanden sein kann ...

/* 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 */ 
} 
}