Skip to content

Instantly share code, notes, and snippets.

@jdeniau
Created August 20, 2014 07:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdeniau/0c3df8a498787dc30078 to your computer and use it in GitHub Desktop.
Save jdeniau/0c3df8a498787dc30078 to your computer and use it in GitHub Desktop.
Classe model
<?php
function search($date = null, $departure = null, $arrival = null)
{
if ($departure == null || $arrival == null)
return null;
if ($date != null) {
$day_time = strtotime($date);
$day_time_end = $day_time + 86400;
$sql = 'SELECT * FROM `ride` as r, `user` as u
WHERE r.`user_id` = u.`id`
AND r.`towndeparture` LIKE "%'.urldecode($departure).'%"
AND r.`townarrival` LIKE "%'.urldecode($arrival).'%"
AND r.`timestamp` >= "'.$day_time.'"
GROUP BY `id_ride`';
}
else
$sql = 'SELECT * FROM `ride` as r, `user` as u
WHERE r.`user_id` = u.`id`
AND r.`towndeparture` LIKE "%'.urldecode($departure).'%"
AND r.`townarrival` LIKE "%'.urldecode($arrival).'%"
AND r.`timestamp` > NOW() + 3600
GROUP BY `id_ride` ;';
$query = $this->db->query($sql);
if ($query->num_rows() > 1) {
$result = array();
foreach ($query->result() as $row)
$result[] = $row;
return $result;
}
if ($query->num_rows() == 1)
return array($query->row());
return null;
}
@jdeniau
Copy link
Author

jdeniau commented Aug 20, 2014

Refactoring

Voila comment je l'aurais fais moi:

<?php
function search($departure, $arrival, $date = null)
{
    if (!$date) {
        $dayTime = time() + 3600;
        } else {
        $dayTime = strtotime($date);
    }

    $sql = 'SELECT * FROM `ride` as r, `user` as u
        WHERE r.`user_id` = u.`id`
        AND r.`towndeparture` LIKE "%:departure%"
        AND r.`townarrival` LIKE "%:arrival%"
        AND r.`timestamp` >= ":dayTime"
        GROUP BY `id_ride`';

    $params = ['departure' => $departure, 'arrival' => $arrival, 'dayTime' => $dayTime];
    $preparedQuery = $this->db->prepareQuery($sql, $params); // pseudo code
    $query = $this->db->query($preparedQuery);

    $result = [];
    foreach ($query->result() as $row) {
        $result[] = $row;
    }
    return $result;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment