RundesBalli/tankersparnis

Vergleichspreis selbst eintragen und Radius selbst wählen

Closed this issue · 1 comments

if(!empty($_POST['geo']) AND preg_match('/^(-?\d{1,3}\.\d+);(-?\d{1,3}\.\d+)$/', defuse($_POST['geo']), $matches) === 1) {
/**
* Wenn ein Geo Punkt übergeben wurde, wird dieser an die API übergeben und die Tankstellen im Umkreis werden abgerufen.
*/
$response = apiCall(
"https://creativecommons.tankerkoenig.de/json/list.php",
array(
'lat' => floatval($matches[1]),
'lng' => floatval($matches[2]),
'rad' => 10,
'type' => $row['symbol'],
'sort' => 'price'
)
);
/**
* Preisfindung anhand der nächstgelegenen Tankstelle. Sofern keine Tankstelle geöffnet hat oder keine Tankstelle in der Umgebung
* den Vergleichskraftstoff führt, wird kein Vergleichspreis gespeichert und der bundesweite Median wird genommen.
*/
if(!empty($response) AND is_array($response['stations']) AND $response['ok'] === TRUE) {
foreach($response['stations'] AS $key => $val) {
$content.= "<div class='row'>".
"<div class='col-s-0 col-l-0'>".var_export($val, TRUE)."</div>".
"</div>";
if($val['isOpen'] === TRUE AND $val['price'] !== NULL) {
$priceCompare = $val['price'];
$pricing = $val;
break;
}
}
}
}
if(empty($priceCompare)) {
/**
* Geo Auswertung wurde nicht übergeben oder konnte nicht erfolgen. Nehme bundesweiten Durchschnittspreis.
*/
$response = apiCall(
"https://creativecommons.tankerkoenig.de/api/v4/stats",
NULL
);
if($response !== FALSE) {
$response = array_change_key_case($response, CASE_LOWER);
$priceCompare = $response[$row['symbol']]['median'];
$pricing = $response[$row['symbol']];
} else {
$ok = 0;
}
}

$content.= "<form action='/addEntry' method='post' autocomplete='off'>";
$content.= "<input type='hidden' name='token' value='".$sessionhash."'>";
if(mysqli_num_rows($result) == 1) {
$row = mysqli_fetch_assoc($result);
$content.= "<input type='hidden' name='car' value='".output($row['id'])."'>";
$cars = output($row['name'])." - ".output($row['fuel']);
} else {
$cars = "<select name='car' id='car' tabindex='".$tabindex++."' required><option value='' selected disabled hidden>-- Bitte auswählen --</option>";
while($row = mysqli_fetch_assoc($result)) {
$cars.= "<option value='".output($row['id'])."'>".output($row['name'])." - ".output($row['fuel'])."</option>";
}
$cars.= "</select>";
}
$content.= "<section>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='car'>Fahrzeug</label></div>".
"<div class='col-s-12 col-l-9'>".$cars."</div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='fuel'>Gas Liter/kg</label></div>".
"<div class='col-s-12 col-l-9'><input type='number' name='fuel' id='fuel' step='0.01' min='0.01' tabindex='".$tabindex++."' required placeholder='Getankte Menge Gas'></div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='range'>Reichweite</label></div>".
"<div class='col-s-12 col-l-9'><input type='number' name='range' id='range' step='0.1' min='0.1' tabindex='".$tabindex++."' required placeholder='Gefahrene Kilometer'></div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='cost'>Kosten in €</label></div>".
"<div class='col-s-12 col-l-9'><input type='number' name='cost' id='cost' step='0.01' min='0.01' tabindex='".$tabindex++."' required placeholder='Für diesen Tankvorgang bezahlt'></div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='geoButton'>Standort<br><span class='small'>Optional</span></label></div>".
"<div class='col-s-12 col-l-9'><input type='button' id='geoButton' value='Standort ermitteln' tabindex='".$tabindex++."'><br><span class='small'>Dein genauer Standort wird nicht gespeichert, sondern nur die Tankstelle im Umkreis von 15km, die am günstigsten ist.<br>Dein Standort wird ohne Zuweisung zu deiner Person an unseren Kraftstoffpreis Dienstleister <a href='https://creativecommons.tankerkoenig.de/' target='_blank' rel='noopener'>Tankerkönig</a> gesendet.</span></div>".
"</div>";
$content.= "<script type='text/javascript' src='/src/geolocation.js'></script>";
$content.= "<input type='hidden' name='geo' id='geo' value=''>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='submit'>Hinzufügen</label></div>".
"<div class='col-s-12 col-l-9'><input type='submit' id='submit' name='submit' value='Hinzufügen' tabindex='".$tabindex++."'></div>".
"</div>";
$content.= "</section>";
$content.= "</form>";

Per Mail kam der Vorschlag, dass es gut wäre, wenn man einen Vergleichspreis selbst eintragen und/oder den Radius der Vergleichstankstellen im Umkreis selbst wählen könnte.

Ich mache mir darüber mal Gedanken, wie man das im Frontend schön umsetzen kann, damit es möglichst wenig für Verwirrung sorgt.

Werde ich nicht umsetzen, da ich die Seite möglichst einfach halten will, um so wenig wie möglich unverständliche Dinge darauf zu haben. Die Möglichkeit über die Umkreissuche bzw die Durchschnittsvariante ist ausreichend.