2016-08-09 101 views
0

mein Titel ist confusing..sorry über that..anyway..kindly Blick auf meinem Code:php/mysql - while-Schleife ..pass Ergebnis in Array?

{ ":

<?php 
include('../connectDB.php'); //connect to db 

echo '{ '; 
    echo '"success": 1, '; 
     echo '"result": [ '; 
      $result = mysql_query("SELECT * FROM roominventory"); 
      while($row = mysql_fetch_array($result)) { //start while 
       $getId = $row['id']; //get value 
       $getRoomId = $row['room']; 

       echo '{ '; 
        $ar = $row['arrival']; //assign value to variable 
        $dep = $row['departure']; 

        $date = str_replace('-', '/', $ar); //format the date 
        $formatArr = date('m/d/Y', strtotime($date)); 

        $date2 = str_replace('-', '/', $dep); //format the date 
        $formatDep = date('m/d/Y', strtotime($date2)); 

        $mSt = strtotime($formatArr) * 1000; //convert to milliseconds 
        $mEd = strtotime($formatDep) * 1000; 

        echo '"id": ' . '"' . $getId. '"' . ', '; 

        $resulta = mysql_query("SELECT * FROM rooms_amenities WHERE id='$getRoomId'"); 
        while($rowa = mysql_fetch_array($resulta)) { 
         $getName = $rowa['name']; 
        } 

        echo '"title": ' . '"' . $getName . '"' . ', '; 
        echo '"url": ' . '"' . 'http://example.com' . '"' . ', '; 
        echo '"class": ' . '"' . 'event-warning' . '"' . ', '; 
        echo '"start": ' . '"' . $mSt . '"' . ', '; //echo the converted date 
        echo '"end": ' . '"' . $mEd . '" '; 
       echo '} '; 
       echo ', '; //comma (should only in between entries and not in the very end of the very last entry) 
      } //end while 
    echo '] '; 
echo '}'; 
?> 

jetzt dies das Ergebnis der Datei ist Erfolg ": 1," Ergebnis ": [{" id ":" 254 "," title ":" Standardraum 202 "," url ":" exampledotcom "," class ":" event-warning "," start " : "1470693600000", "Ende": "1471384800000"}]}

kein Problem damit. Jetzt, Problem ist, dass, wenn es mehr als 1 Zeile in der Tabelle in meiner Datenbank das Ergebnis wird so:

{"Erfolg": 1, "Ergebnis": [{"id": "255", " title ":" Standardraum 201 "," url ":" beispieldotcom "," klasse ":" event-warning "," start ":" 1471903200000 "," end ":" 1472076000000 "}, {" id ":" 256 "," title ":" Standardraum 202 "," url ":" beispieldotcom "," klasse ":" event-warning "," start ":" 1471903200000 "," end ":" 1472076000000 "},]}

notive das "Komma" auf dem letzten Eintrag "1472076000000"} ,]}

was mein Wunsch/erwartete Ergebnis sollte so sein:

{"Erfolg": 1, "Ergebnis": [{"id": "255", "title": "Standard Zimmer 201", "url": "exampledotcom", "Klasse": "Ereigniswarnung", "Start": "1471903200000", "Ende": "1472076000000"} , {"id": "256", "title": "Standardraum 202", "url ":" exampledotcom "," class ":" ereigniswarnung "," start ":" 1471903200000 "," end ":" 1472076000000 "}]}

beachten Sie das" Komma "nach dem ersten Eintrag und zwischen dem zweiter Eintrag {"id:" ...}, {"id:" ...} und kein Komma nach dem allerletzten Eintrag.

Ich habe versucht, das Komma außerhalb/Ende der While-Schleife zu echo. aber im Ergebnis ist das Komma nur beim allerletzten Eintrag, keine dazwischen

Wenn die letzte Zeile erreicht ist, dann sollte beim letzten Eintrag kein Komma stehen. Ich weiß nicht, wie ich das gewünschte Ergebnis erzielen kann.

Gibt es einen anderen Weg? wie mit array/json_encode? ..aber ich weiß nicht, wie es tun

+2

json_encode() ist dein Freund, du solltest niemals JSON-Strings wie diese erstellen – Borjante

+0

mach einfach ein Array und danach codiere es einfacher. –

+0

Um Ihren Code zu korrigieren, sollten Sie echo ','; vor dem ersten "Echo" {'; " in der while, in einer if staement if (isset ($ ar) {echo ';';} –

Antwort

0

können Sie entweder die json_encode dafür verwenden, um die richtige json Ausgabe zu erhalten oder Sie dieses loswerden können „“ (Komma) von dieser Technik.

//first use an variable $cnt=0; 
//then check into the while loop 
//whether the $cnt==0 then not to put the , before the making of an entry 
//for example, 
<?php 
include('../connectDB.php'); //connect to db 
$cnt=0; 

echo '{ '; 
echo '"success": 1, '; 
    echo '"result": [ '; 
     $result = mysql_query("SELECT * FROM roominventory"); 
     while($row = mysql_fetch_array($result)) { //start while 
      $getId = $row['id']; //get value 
      $getRoomId = $row['room']; 
      if($cnt==0) 
      { 
       echo '{ '; 
      } 
      else 
      { 
       echo ',{'; 
      } 
       $ar = $row['arrival']; //assign value to variable 
       $dep = $row['departure']; 

       $date = str_replace('-', '/', $ar); //format the date 
       $formatArr = date('m/d/Y', strtotime($date)); 

       $date2 = str_replace('-', '/', $dep); //format the date 
       $formatDep = date('m/d/Y', strtotime($date2)); 

       $mSt = strtotime($formatArr) * 1000; //convert to milliseconds 
       $mEd = strtotime($formatDep) * 1000; 

       echo '"id": ' . '"' . $getId. '"' . ', '; 

       $resulta = mysql_query("SELECT * FROM rooms_amenities WHERE id='$getRoomId'"); 
       while($rowa = mysql_fetch_array($resulta)) { 
        $getName = $rowa['name']; 
       } 

       echo '"title": ' . '"' . $getName . '"' . ', '; 
       echo '"url": ' . '"' . 'http://example.com' . '"' . ', '; 
       echo '"class": ' . '"' . 'event-warning' . '"' . ', '; 
       echo '"start": ' . '"' . $mSt . '"' . ', '; //echo the converted date 
       echo '"end": ' . '"' . $mEd . '" '; 
      echo '} '; 
      //echo ', '; //comma (should only in between entries and not in the very end of the very last entry) 
      $cnt=1; 
     } //end while 
echo '] '; 
echo '}'; 
+1

dieses funktioniert perfekt! Danke. wirklich zu schätzen :) – silver01

+0

Sie sind herzlich willkommen. @ silver01 –

0

Sie können diese Ausgabe mit json_encode leicht erhalten. versuchen Sie diesen Code, der für Sie gut funktionieren sollte.

<?php 
include('../connectDB.php'); //connect to db 

$result = mysql_query("SELECT * FROM roominventory"); 
while($row = mysql_fetch_array($result)) 
{ //start while 
    $getId = $row['id']; //get value 
    $getRoomId = $row['room']; 

    $ar = $row['arrival']; //assign value to variable 
    $dep = $row['departure']; 

    $date = str_replace('-', '/', $ar); //format the date 
    $formatArr = date('m/d/Y', strtotime($date)); 

    $date2 = str_replace('-', '/', $dep); //format the date 
    $formatDep = date('m/d/Y', strtotime($date2)); 

    $mSt = strtotime($formatArr) * 1000; //convert to milliseconds 
    $mEd = strtotime($formatDep) * 1000; 

    $resulta = mysql_query("SELECT * FROM rooms_amenities WHERE id='$getRoomId'"); 

    while($rowa = mysql_fetch_array($resulta)) 
    { 
     $getName = $rowa['name']; 
    } 

    $new_list= array('id'=>$getId,'title'=>$getName,'url'=>'http://example.com','class'=>'event-warning','start'=>$mSt,'end'=>$mEd); 
    $response = array("success"=>1,"result"=>$new_list);  
} 
echo json_encode($response); 
?> 

können Sie die Ausgabe erhalten, die Sie

+0

es funktioniert, aber es entfernt/wird die weißen Räume los, die ich auch brauchte. Danke dafür :) – silver01

0
$result = mysql_query("SELECT * FROM roominventory"); 
$jsonData = ''; 
while($row = mysql_fetch_array($result)) { //start while 
    $jsonData .= json_encode($row); 
} 
echo $jsonData; 

Versuchen Sie diese in Ihrem questions..thanks gezeigt.