2012-08-17 7 views
7

dies ist mein Code:fetch_array() Erhaltung ORDER BY nicht aus Abfrage

<?php 
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

//TESTING CONNECT 
include 'connect.php'; 
$mysqli = connectDB(); 
getWells(2, $mysqli); 

function getWells($company,$mysqli){ 
//include 'connect.php'; 
define("MAX_TOP", 96);//96 INCHES == 8 FEET 
define("BARRELS_PER_INCH", 1.67); 

//$company = $_GET['company']; 
//$mysqli = connectDB(); 

$count = 0; 
$sql = "SELECT wells.id, name, top, bottom, last_pulled, bbl_per_hour 
     FROM wells, history 
     WHERE company_id ='$company' 
     AND wells.id = well_id 
     AND last_record = 1;"; 

if($result = $mysqli->query($sql)) { 
    while($row = $result->fetch_array()){ 
     $well_name = $row['name']; 
     $well_id = $row['id']; 
     $last_bottom = $row['bottom']; 
     $last_pulled = $row['last_pulled']; 
     $bbl = $row['bbl_per_hour']; 

     $projected_fill = MAX_TOP - $last_bottom; 
     $projected_barrels = $projected_fill * BARRELS_PER_INCH; 
     $time_to_fill = $projected_barrels/$bbl; 
     $exploded_time = explode('.', $time_to_fill); 
     $hours = $exploded_time[0];      
     $frac_hours = '.'.$exploded_time[1]; 
     $minutes = floor($frac_hours*60); 
     $projected = strtotime($last_pulled." +".$hours." hours"." +".$minutes." minutes");    
     $projected_datetime = date("Y-m-d H:i:s",$projected);  

     $insert = "INSERT INTO temp_wells (well_id,well_name,last_pull,hrs_to_fill) 
        VALUES ('$well_id','$well_name','$last_pulled','$projected_datetime');"; 
     if(!$result2 = $mysqli->query($insert)){ 
      return "There was a problem inserting data into databse. Contact Larsoon Computer Services. - GetWells.php, Line 57 ".$mysqli->error; 
     } 
     else{ 
      $get_temp = "SELECT * FROM temp_wells 
         ORDER BY hrs_to_fill ASC;"; 
      if(!$result3 = $mysqli->query($get_temp)){ 
       return "There was a problem retrieving data. Contact Larson Computer Services. - GetWells.php, Line 63 ".$mysqli->error; 
      } 
      else{ 
       //echo var_dump($result3); 
       while ($row1 = $result3->fetch_array()) { 
        $o_well_id = $row1['well_id']; 
        $o_well_name = $row1['well_name']; 
        $o_pull_date = $row1['hrs_to_fill']; 

        //TESTING DATA OUTPUT 
        echo $o_well_id; 
        echo '<br>'; 
        echo $o_well_name; 
        echo '<br>'; 
        echo $o_pull_date; 
        echo '<br>'; 
        echo '<br>'; 

        //CREATE THE COUNTDOWN 
        $date = date('U', strtotime($o_pull_date)); 
        $difference = $date - date('U'); 
        $diff_days = floor($difference/(24*60*60)); 
        $diff_hours = floor($difference % (24 * 60 * 60)/3600); 
        $diff_min = floor(($difference % (24 * 60 * 60) % 3600)/60); 
        $diff_secs = floor((($difference % (24 * 60 * 60) % 3600)%60)/1); 

        if($diff_days <= 0){ 
         $countdown = "$diff_hours hrs $diff_min min"; 
        } 
        else{ 
         $countdown = "$diff_days days $diff_hours hrs $diff_min min"; 
        } 
        if($count == 0) { 
         $data_str = $o_well_id.'|'.$o_well_name.'|'.$countdown; 
         $count++; 
        } 
        else { 
         $data_str = $data_str.'|'.$o_well_id.'|'.$o_well_name.'|'.$countdown; 
        } 
       } 
      } 
     } 
     $truncate = "TRUNCATE TABLE temp_wells;"; 
     if(!$result4 = $mysqli->query($truncate)){ 
      return "There was a problem truncating table. Contact Larson Computer Services. ".$mysqli->error; 
     } 
    } 
}//END OF IF 
if($data_str == null && $data_str == ""){ 
    $data_str = 0; 
} 
return $data_str; 
} 

?> 

Produziert:

1 
ATESTWELL 
2012-08-17 14:55:37 

3 
HAMLET 1-11H 
2012-08-17 17:40:00 

4 
HAMLET 2-11H 
2012-08-17 18:47:14 

8 
DANIEL 1-33H 
2012-08-17 13:15:39 

6 
DANIEL 21-33H 
2012-08-19 13:47:16 

9 
FAVER 1-29H 
2012-08-17 14:31:00 

die Tabelle wie folgt aussieht:

well_id  int(11) 

well_name varchar(50) 

last_pull datetime 

hrs_to_fill datetime 

, die durch nicht bestellt Datetime-Feld wie es sein sollte. Ausführen der Abfrage auf PHPMyadmin funktioniert gut, aber dieser Code ist nicht ... Irgendwelche Gedanken?

Danke,

Luis

+2

Können Sie die Entwurfsansicht der Tabelle, die Sie abfragen, posten? Was ist der Datentyp von hrs_to_fill? – mithilatw

+1

Höchstwahrscheinlich führen Sie einen anderen Code als den von Ihnen geposteten Code aus. Stellen Sie sicher, dass die von Ihnen ausgeführte PHP-Datei die gewünschte ist. Eine andere Option ist die Seite, die vom Browser zwischengespeichert wird. – Andy

+0

was erschreckt dich? – LouieV

Antwort

1

Ihre Daten tatsächlich bestellt ist; Wenn Sie genau hinsehen, werden Sie sehen, dass es für jede Bohrung nach Datum/Uhrzeit sortiert wird. Der Grund dafür ist, dass Sie zwei Schleifen haben, die innere Schleife wird dreimal durchlaufen, eine für jede Vertiefung.

Möglicherweise müssen Sie die innere Schleife nach der äußeren Schleife verschieben, so dass Sie die temp_wells Tabelle in der ersten Schleife auffüllen und in der zweiten abfragen.

+0

Richtig! Für jede "Wanne" ist "hours_to_fill" bestellt (siehe HAMLET und DANIEL) – zessx

+0

Ich hatte einige Male Code von einer Schleife zur anderen bewegt und den Code gemischt. Wie auch immer, vielen Dank für Ihre Anregungen – LouieV