Est-ce une bonne pratique de préparer ses requêtes depuis le controller?
abisko
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour les Amis,
Avec mon niveau intermédiaire en PHP; j'aimerais savoir si ma façon de préparer mes requêtes depuis mon controller est une bonne pratique!
Voici un extrait de mon controller :
Et dans mon fichier model.php, la fonction se présente ainsi :
Je sollicite votre regard d'expert SVP!!
Avec mon niveau intermédiaire en PHP; j'aimerais savoir si ma façon de préparer mes requêtes depuis mon controller est une bonne pratique!
Voici un extrait de mon controller :
if ( isset($_POST['table']) && isset($_POST['carId']) && isset($_POST['carActuStatus']) && isset($_POST['actionAuthor']) && isset($_SESSION[ $_POST['actionAuthor'] ]) ) { $table = htmlspecialchars($_POST['table']); $carId = htmlspecialchars($_POST['carId']); $carActuStatus = htmlspecialchars(trim($_POST['carActuStatus'])); $carAvailability=''; $actionAuthor = htmlspecialchars($_POST['actionAuthor']); if ($carActuStatus == 'Indisponible') { $carAvailability='non'; }else{ $carAvailability='oui'; } //je vérifie si la variable $table est correcte avant de l'insérer dans ma requête if ( $table != 'car_to_sell' AND $table != 'car_to_rent' ) { echo 'Inpossible d\'effectuer cette action'; return; } $reqMessage = " UPDATE $table SET car_availability = :car_availability WHERE car_id = :car_id "; $valueArray = ['car_id' => $carId, 'car_availability' => $carAvailability ]; //si l'action ne vient pas d'un administrateur if ( $actionAuthor != 'admine') { $authorPseudo = $_SESSION['partener_members']['pseudo']; $reqMessage = $reqMessage." AND owner_pseudo = :owner_pseudo "; $valueArray['owner_pseudo'] = $authorPseudo; //pour être sûr que le véhicule appartient vraiment à cet utilisateur } //je passe ensuite en argument la requête préparée ainsi que mon array d'exécution à ma fonction $carManager = new CarManager(); $reponse = $carManager->UpdateCarWithCustomableReq($reqMessage, $valueArray); }
Et dans mon fichier model.php, la fonction se présente ainsi :
public function UpdateCarWithCustomableReq($reqMessage, $valueArray){ $req = $this->db->prepare(" $reqMessage "); $result = $req->execute( $valueArray ); return $result; }
Je sollicite votre regard d'expert SVP!!
A voir également:
- Est-ce une bonne pratique de préparer ses requêtes depuis le controller?
- Fiche pratique tableau croisé dynamique - Guide
- Fan controller - Télécharger - Optimisation
- Votre envoi est en préparation pour sa distribution. ✓ - Forum Consommation & Internet
- Votre envoi est en préparation pour sa distribution ✓ - Forum Consommation & Internet
- Realtek gaming 2.5gbe family controller wifi - Forum WiFi
1 réponse
Bonjour,
Donc non, ce n'est pas une bonne pratique.
De plus, la fonction htmlspecialchars ne dois servir que pour l'affichage des données dans le code html.. et jamais en "traitement" des variables à insérer (ou requêter) en bdd
Et pour finir, connais tu l'écriture ternaire ? ça simplifie un peu l'écriture du code
par exemple
en ternaire, donne
Donc non, ce n'est pas une bonne pratique.
De plus, la fonction htmlspecialchars ne dois servir que pour l'affichage des données dans le code html.. et jamais en "traitement" des variables à insérer (ou requêter) en bdd
Et pour finir, connais tu l'écriture ternaire ? ça simplifie un peu l'écriture du code
par exemple
if ($carActuStatus == 'Indisponible') { $carAvailability='non'; }else{ $carAvailability='oui'; }
en ternaire, donne
$carAvailability = ($carActuStatus == 'Indisponible' ) ? 'non' : 'oui';
Cependant comment m'y prendre pour adapter mes requêtes en fonction de chaque situation? surtout les situation que je ne peux pas parfaitement contrôler? Par exemple lorsque l'utilisateur souhait filtrer les résultats sur la liste des produits avec plusieurs paramètres!
je m'y prenais comme cela :
Comment pourrai-je gérer une telle situation en créant des requêtes prédéfinies dans mon model?
Ben.. tu déplaces dans ton modèle le bout de code qui te permet de créer ta requête...
Au passage : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.