Ho una chiamata API. La chiamata restituisce il codice XML, lo converto in XML in un array e quindi utilizzo json_encode per inviare la risposta in una chiamata jsonp. Quello che sto facendo funziona, ma l'API non mi consente di filtrare in base a uno stato, di filtrare per ora di inizio e di fine e di verificare che la stanza sia disponibile.Array di filtri o XML con tempo tra l'inizio e l'ora di fine
Diventa pazzo con diverse chiamate jsponp. Ancora una volta, quello che ho sta funzionando, ma ho bisogno di capire un modo per filtrare ancora una volta con i miei risultati. Ho restituito lo stato corretto e la data corretta, ma devo ancora filtrare i tempi. Se l'ora è attualmente alle 10:29, non voglio mostrare le camere prenotate che iniziano alle 10:30 perché non è prenotata fino alle 10:30. Quindi, se il mio orario attuale è 10:29 ho bisogno di filtrare attraverso i miei eventi nel mio array e mostrare solo gli eventi che hanno un tempo di inizio e di fine che hanno l'ora corrente in mezzo.
Una prenotazione tra le 10 e le 11 dovrebbe rimanere nel mio array ma una prenotazione dalle 14.00 non dovrebbe essere mostrata nel mio array. Come ho già detto, l'array è prima un documento XML restituito, quindi un array, quindi JSON, quindi tecnicamente posso utilizzare qualsiasi cosa funzioni per filtrare. PHP per filtrare in XML, PHP per filtrare la matrice. Anche Javascript ammette che il file PHP è pronto per la mia chiamata ajax.
Ecco il mio array prima di trasformarlo in JSON e restituirlo. Le volte in cui filtro sono TimeEventStart e TimeEventEnd. Posso utilizzare l'ora corrente di Javascript o il tempo di funzione della data di PHP. Posso filtrare l'array o usare qualcosa come XMLPath per filtrare. Non sono sicuro di quale sia il più efficiente e funzionerebbe meglio.
$axml = Array{
"Bookings":{
"Data":[
{
"BookingDate":[
"2014-05-09T00:00:00"
],
"RoomDescription":[
"Room06"
],
"TimeEventStart":[
"2014-05-09T14:00:00"
],
"TimeEventEnd":[
"2014-05-09T14:30:00"
],
"EventName":[
"Jake Long"
],
"SetupTypeDescription":[
"(none)"
],
"ReservationID":[
"137"
],
"OpenTime":[
"1900-01-01T00:00:00"
],
"CloseTime":[
"1900-01-01T00:00:00"
],
"EventTypeDescription":[
[
]
],
"BookingID":[
"709"
],
"TimeBookingStart":[
"2014-05-09T14:00:00"
],
"TimeBookingEnd":[
"2014-05-09T14:30:00"
],
"GMTStartTime":[
"2014-05-09T18:00:00"
],
"GMTEndTime":[
"2014-05-09T18:30:00"
],
"TimeZone":[
"ET"
],
"RoomCode":[
"R06"
],
"Room":[
"Room 6"
],
"RoomID":[
"34"
],
"StatusID":[
"3"
],
"EventTypeID":[
"0"
],
"DateAdded":[
"2014-05-09T13:47:29.087"
],
"DateChanged":[
"2014-05-09T13:47:29.087"
],
"ChangedBy":[
"Admin"
]
},
{
"BookingDate":[
"2014-05-09T00:00:00"
],
"RoomDescription":[
"Room06"
],
"TimeEventStart":[
"2014-05-09T18:00:00"
],
"TimeEventEnd":[
"2014-05-09T20:00:00"
],
"EventName":[
"Rob Brown"
],
"SetupTypeDescription":[
"(none)"
],
"ReservationID":[
"142"
],
"OpenTime":[
"1900-01-01T00:00:00"
],
"CloseTime":[
"1900-01-01T00:00:00"
],
"EventTypeDescription":[
[
]
],
"BookingID":[
"714"
],
"TimeBookingStart":[
"2014-05-09T18:00:00"
],
"TimeBookingEnd":[
"2014-05-09T20:00:00"
],
"GMTStartTime":[
"2014-05-09T22:00:00"
],
"GMTEndTime":[
"2014-05-10T00:00:00"
],
"TimeZone":[
"ET"
],
"RoomCode":[
"R06"
],
"Room":[
"Room 6"
],
"RoomID":[
"34"
],
"StatusID":[
"3"
],
"EventTypeID":[
"0"
],
"DateAdded":[
"2014-05-09T14:58:55.71"
],
"DateChanged":[
"2014-05-09T14:58:55.71"
],
"ChangedBy":[
"Admin"
]
},
{
"BookingDate":[
"2014-05-09T00:00:00"
],
"StartBookingDate":[
"2014-05-09T00:00:00"
],
"RoomDescription":[
"Room06"
],
"TimeEventStart":[
"2014-05-09T11:00:00"
],
"TimeEventEnd":[
"2014-05-09T12:00:00"
],
"EventName":[
"Jimmy James"
],
"SetupTypeDescription":[
"(none)"
],
"ReservationID":[
"141"
],
"OpenTime":[
"1900-01-01T00:00:00"
],
"CloseTime":[
"1900-01-01T00:00:00"
],
"EventTypeDescription":[
[
]
],
"BookingID":[
"713"
],
"TimeBookingStart":[
"2014-05-09T11:00:00"
],
"TimeBookingEnd":[
"2014-05-09T12:00:00"
],
"GMTStartTime":[
"2014-05-09T15:00:00"
],
"GMTEndTime":[
"2014-05-09T16:00:00"
],
"TimeZone":[
"ET"
],
"RoomCode":[
"R06"
],
"Room":[
"Room 6"
],
"RoomID":[
"34"
],
"StatusID":[
"1"
],
"EventTypeID":[
"0"
],
"DateAdded":[
"2014-05-09T14:58:15.17"
],
"DateChanged":[
"2014-05-09T14:58:15.17"
],
"ChangedBy":[
"Admin"
]
}
]
}
}
;
Il mio array viene restituito da una chiamata SOAP in XML. Mi è toccato il posteriore e XML usando
$sxml = simplexml_load_string($xml)
Poi sto usando una funzione chiamata xmlToArray di metterlo nella matrice pubblicato.
$axml = xmlToArray($sxml);
Ecco l'XML prima di convertirmi in un array e poi in JSON.
<?xml version="1.0" encoding="utf-8"?><Bookings>
<Data>
<BookingDate>2014-05-13T00:00:00</BookingDate>
<StartBookingDate>2014-05-13T00:00:00</StartBookingDate>
<RoomDescription>Room 06</RoomDescription>
<TimeEventStart>2014-05-13T10:00:00</TimeEventStart>
<TimeEventEnd>2014-05-13T10:30:00</TimeEventEnd>
<EventName>Jake Long</EventName>
<ReservationID>159</ReservationID>
<ClosedAllDay>false</ClosedAllDay>
<OpenTime>1900-01-01T00:00:00</OpenTime>
<CloseTime>1900-01-01T00:00:00</CloseTime>
<BookingID>731</BookingID>
<TimeBookingStart>2014-05-13T10:00:00</TimeBookingStart>
<TimeBookingEnd>2014-05-13T10:30:00</TimeBookingEnd>
<GMTStartTime>2014-05-13T14:00:00</GMTStartTime>
<GMTEndTime>2014-05-13T14:30:00</GMTEndTime>
<RoomCode>R09</RoomCode>
<Room>Room 9</Room>
<RoomID>37</RoomID>
<StatusID>3</StatusID>
<DateAdded>2014-05-13T08:38:22.36</DateAdded>
<DateChanged>2014-05-13T08:38:22.36</DateChanged>
</Data>
</Bookings>
È possibile utilizzare Xpath per recuperare/filtrare nodi XML. – ThW
È possibile fornire l'origine dati originale (XML). Convertirlo in un array significa perdere dati. – ThW
Credo che la matrice sia buona. Ho eliminato alcuni elementi XML extra, non necessari. Rendere questo più difficile per me è che sono Eastern Time e il progetto deve essere Pacifico. Credo che la risposta fornita sia sulla buona strada, ho solo bisogno di avere il tempo corretto. – donlaur