Skip to content

SAE202

C'était un projet réalisé au sein d'une agence, où notre objectif était de concevoir un site web de covoiturage. Chaque membre de l'équipe était responsable d'une partie spécifique, incluant le graphisme, la communication, l'audiovisuel et le développement.

En collaboration avec Melvin Becue, nous avons créé deux dépôts GitHub : l'un pour stocker les polices de caractères à distance, et l'autre pour centraliser l'ensemble de nos fichiers. Cette approche nous permettait de travailler facilement en utilisant Git, et d'être synchronisés efficacement.

Une fois cette étape terminée, nous avons entamé la construction du site. J'ai personnellement pris en charge le développement côté backend. J'ai commencé par créer la base de données, que j'ai ensuite connectée à mon code PHP. J'ai ensuite réalisé toutes les pages nécessaires, en veillant à leur bon fonctionnement.

En PHP j'ai réalisé tout les systèmes de connexion, d'inscription et de calcul des trajets. J'ai aussi mis en place un système de notification pour informer les utilisateurs des nouvelles offres de covoiturage.

Mon collaborateur Melvin Becue s'est quant à lui occupé du CSS et du JavaScript, qui étaient essentiels pour rendre les pages esthétiquement attrayantes et pour assurer leur interactivité.

Voici un extrait de code sur lequel j'ai travaillé, il s'agit d'une fonction qui permet de calculer les trajets les plus intéressants selon d'ou vous partez en fonction de la distance.

php
$depart = $_POST['depart'];
$arrivee = $_POST['arrivee'];
$datetime = $_POST['date'];
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$lat2 = $_POST['lat2'];
$lng2 = $_POST['lng2'];


$datetime = date("Y-d-m H:i:s", strtotime($datetime));

echo '<h1>Recherche de trajet entre '. $depart. ' et '. $arrivee .'</h1>';

$dbh = connect();

$sql = "SELECT * FROM trajet WHERE date > ? AND place <= ?";
$stmt = $dbh->prepare($sql);
$stmt->bind_param("si", $datetime, $_POST['place']);
$stmt->execute();
$result = $stmt->get_result();
$num_rows = $result->num_rows;

if($num_rows == 0){
echo 'Aucun trajet n\'a été trouvé';
exit();
}

$trajetInteressant = null;
$distancePlusInteressante = null;

while ($trajet = $result->fetch_assoc()) {


    $apiUrl = 'https://maps.googleapis.com/maps/api/directions/json?origin='.$lat.','.$lng.'&destination='.$lat2.','.$lng2.'&waypoints='.$trajet['lat'].','.$trajet['lng'].'|'.$trajet['lat2'].','.$trajet['lng2'].'&key=AIzaSyCd8vcZ5809PqtE13gop5pdAKe2gRezwGo';
    $response = file_get_contents($apiUrl);
    $directions = json_decode($response, true);



    if ($directions['status'] === 'OK') {
        $distance = $directions['routes'][0]['legs'][2]['distance']['value'];
        $distance = $distance / 1000;

if ($distance <= 20) {
if ($trajetInteressant === null || abs($distance) < $distancePlusInteressante) {
$trajetInteressant = $trajet;
$distancePlusInteressante = abs($distance);
}
}
} else {
echo 'Erreur lors de la récupération du trajet.';
}
}


if ($trajetInteressant !== null) {
echo '<h2>Trajet intéressant :</h2>';
echo 'Lieu de départ : '.$trajetInteressant['lieu_depart'].'<br>';
echo 'Lieu d\'arrivée : '.$trajetInteressant['lieu_arrivee'].'<br>';
echo 'Distance :'.round($trajetInteressant['km']).'km<br>';
echo 'Temps de trajet : '. $trajetInteressant['duree'].'<br>';


    $sqls = "SELECT * FROM passager WHERE trajet_id = ?";
    $stmts = $dbh->prepare($sqls);
    $stmts->bind_param("i", $trajetInteressant['id']);
    $stmts->execute();
    $results = $stmts->get_result();
    $num_rows = $results->num_rows;

    echo 'Place restante :'.$num_rows.'/'.$trajetInteressant['place'].'<br>';

    if($num_rows == $trajetInteressant['place']){
        $complete = 'disabled';
    } else {
        $complete = '';
    }




    if(isset($_SESSION['AMIMAIL']) || isset($_SESSION['AMIID'])){
        echo '<button onclick="window.location.href=\'/reserv/'.$trajetInteressant['id'].'\'" '.$complete.'>S\'inscrire à ce trajet</button>';
    } else {
        echo '<button onclick="window.location.href=\'./connexion.php\'">Connectez-vous pour vous inscrire à ce trajet</button><br><br>';
    }

    $result->data_seek(0); 
    while ($trajet = $result->fetch_assoc()) {
        if ($trajet === $trajetInteressant) {
            continue;
        }

        $apiUrl = 'https://maps.googleapis.com/maps/api/directions/json?origin='.$lat.','.$lng.'&destination='.$lat2.','.$lng2.'&waypoints='.$trajet['lat'].','.$trajet['lng'].'|'.$trajet['lat2'].','.$trajet['lng2'].'&key=AIzaSyCd8vcZ5809PqtE13gop5pdAKe2gRezwGo';
        $response = file_get_contents($apiUrl);
        $directions = json_decode($response, true);

        

        if ($directions['status'] === 'OK') {

            $distance = $directions['routes'][0]['legs'][2]['distance']['value'];
            $distance = $distance / 1000;

            if($distance == 0) {
                continue;
            }

Ce projet m'a appris à réaliser un site web complet, en travaillant en collaboration avec d'autres personnes. Mais aussi à gérer une base de données et à réaliser des requêtes SQL pour récupérer des informations. J'ai également appris à utiliser des API pour récupérer des informations externes, et à les traiter pour les afficher sur le site.

Parks