Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Modifier et Sécuriser des Transactions avec PHP et MySQL
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Modifier et Sécuriser des Transactions avec PHP et MySQL

L'Équipe Alphorm Par L'Équipe Alphorm 24 novembre 2024
Partager
Partager

Modifier des transactions en PHP sans compromettre la sécurité est un défi courant.

Des erreurs peuvent survenir, exposant vos données à des risques de sécurité, ce qui peut être frustrant.

Cet article vous guide à travers les étapes pour sécuriser et adapter votre formulaire de modification en PHP.

Table de matière
Liens pour modifier transaction PHPRequête SQL pour afficher transactionFormulaire modification transaction PHPAdapter formulaire selon type de bienInfos supplémentaires sur la transactionmodifier la transaction #Adapter requête SQL modificationModifier la transaction #Sécuriser formulaire de modificationModifier la transaction #FAQConclusion

Formation PHP 8 : Atelier Complet Débutant

Réalisez votre projet web de A à Z sous PHP 8

Découvrir cette formation

Liens pour modifier transaction PHP

Structure de dossiers et fichiers PHP d'un projet.

Modifier les ligne de chaque enregistrement de chaque transaction :

  • Code PHP pour les ventes :

Affichez chaque vente avec un lien vers la page de modification bien-detail-update.php, en passant l’ID de la transaction dans l’URL.

				
					
 <li><strong><a href="bien-detail-update.php?transactionID=&lt;?= $dataAfficherVente[&#039;transactionID&#039;];?" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer"> "><?= $dataAfficherVente['dateFR'];?> : </a></strong> <?=$dataAfficherVente['quantite'];?> * <?=$dataAfficherVente['pu'];?>&euro; = <span class="rentre"><?=$dataAfficherVente['montant'];?> &euro; </span></li>

				
			
  • Code PHP pour les loyers :

Affichez chaque loyer avec un lien vers la page de modification, en passant l’ID de la transaction.

				
					
 <li><strong> <a href="bien-detail-update.php?transactionID=&lt;?= $dataAfficherLoyer[&#039;transactionID&#039;];?" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer"> "><?= $dataAfficherLoyer['dateFR'];?> : </a></strong> <span class="rentre"><?=$dataAfficherLoyer['montant'];?> &euro; </span></li>

				
			
  • Code PHP pour les Achats :

Affichez chaque achat avec un lien vers la page de modification, en passant l’ID de la transaction.

				
					
 <li><strong><a href="bien-detail-update.php?transactionID=&lt;?= $dataAfficherAchat[&#039;transactionID&#039;];?" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer"> "><?= $dataAfficherAchat['dateFR'];?> : </a></strong> <?=$dataAfficherAchat['quantite'];?> * <?=$dataAfficherAchat['pu'];?>&euro; = <span class="depense"><?=$dataAfficherAchat['montant'];?> &euro; </span></li>

				
			
Infos : essayez de créer le fichier bien-detail-update.php

Requête SQL pour afficher transaction

Pour afficher les détails d’une transaction ainsi que les informations sur le type de transaction et le bien associé, vous devez préparer une requête SQL qui joint plusieurs tables. Cette requête doit extraire les informations de la transaction, du type de transaction, et du bien en question.

Voici comment utiliser cette requête SQL dans un script PHP pour afficher les détails d’une transaction :

Code PHP pour afficher les détails d’une transaction :

Code de fichier bien-detail-update.php

				
					
 <?php
session_start();
 if (isset($_SESSION['pseudo'])) {
     $pseudo = $_SESSION['pseudo'];
 } else {

     header('location:../index.php');
 }
 include('cnx/cnx.php');
 ?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une transaction</title>

<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"226ba09d-76f4-4044-b69c-8c9eadf2f5a8","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<?php
 $sql = 'SELECT * FROM transaction AS t JOIN bien As b ON t.bienID = b.bienID JOIN type As ty ON t.typeID = ty.typeID WHERE t.transactionID = :transactionID';
 $req = $cnx->prepare($sql);
 $req->execute(
     array(
':transactionID' => $_GET['transactionID']
)
 );
 $data = $req->fetch(PDO::FETCH_ASSOC);
 ?>
<article>
<section>
<div class="invest">
<h1><?=$data['bien'];?></h1>
</div>
</section>
</article>
<script src="https://kit.fontawesome.com/50786edb2e.js" crossorigin="anonymous" data-rocket-defer defer></script>
<script>var rocket_beacon_data = {"ajax_url":"https:\/\/blog.alphorm.com\/wp-admin\/admin-ajax.php","nonce":"19d46e9098","url":"https:\/\/blog.alphorm.com\/modifier-transactions-php-mysql","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800}</script><script data-name="wpr-wpr-beacon" src='https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script><script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode-wpr",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script></body>
</html>

				
			
Astuce pratique : Pour compléter et améliorer votre code PHP, il est crucial de vérifier que toutes les parties du script fonctionnent correctement et de gérer les erreurs potentielles.
Gestion des erreurs SQL : Un bloc try-catch est utilisé pour capturer et afficher les erreurs SQL potentielles.

Résultat d’affichage :

Illustration de mise à jour de transaction PHP.

Formulaire modification transaction PHP

Pour mettre en place un formulaire de modification des détails d’une transaction, vous devez suivre plusieurs étapes. Ce formulaire permettra aux utilisateurs de modifier les informations d’une transaction existante et de les mettre à jour dans la base de données. Voici un guide étape par étape pour créer ce formulaire :

Créer la page de modification

Créez un fichier, par exemple bien-detail-update.php, qui affichera le formulaire de modification pour une transaction spécifique. Ce fichier récupérera les détails de la transaction à partir de la base de données et les affichera dans un formulaire pré-rempli.

Code PHP pour bien-detail-update.php :

				
					
 <?php
session_start();
if(isset($_SESSION['pseudo'])){
$pseudo= $_SESSION['pseudo'];
}
else{

header('location:../index.php');
}
include('cnx/cnx.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une transaction</title>

<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"226ba09d-76f4-4044-b69c-8c9eadf2f5a8","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<?php
$sql ='SELECT * FROM transaction AS t JOIN bien As b ON t.bienID = b.bienID JOIN type As ty ON t.typeID = ty.typeID WHERE t.transactionID = :transactionID';
$req = $cnx->prepare($sql);
$req->execute(
array(
':transactionID' =>$_GET['transactionID']
)
);
$data = $req->fetch(PDO::FETCH_ASSOC);
// Liste des variables
$bienID = $data['bienID'];
$bien   = $data['bien'];
$image   = $data['image'];
$typeID  = $data['typeID'];
$type   = $data['type'];
$transactionID   = $data['transactionID'];
$quantite   = $data['quantite'];
$pu   = $data['pu'];
$montant   = $data['montant'];
$dateTransaction = $data['dateTransaction'];
?>
<article>
<section>
<div class="invest">
<h1><?=$bien;?></h1>
<form action="" method="post">
<div>
<label for="quantite">quantité</label>
<input type="number" name="quantite" id="quantite" value="<?= $quantite;?>">
</div>
<div>
<label for="pu">prix unitaire</label>
<input type="number" step="any" name="pu" id="pu" value="<?= $pu;?>">
</div>
<div>
<label for="dateTransaction">date transaction</label>
<input type="date" name="dateTransaction" id="dateTransaction" value="<?= $dateTransaction;?>">
</div>
<div>
<label for="">Modifier</label>
<input type="submit" name="modifier" value="Modifier">
</div>
</form>
</div>
</section>
</article>
<script src="https://kit.fontawesome.com/50786edb2e.js" crossorigin="anonymous" data-rocket-defer defer></script>
<script>var rocket_beacon_data = {"ajax_url":"https:\/\/blog.alphorm.com\/wp-admin\/admin-ajax.php","nonce":"19d46e9098","url":"https:\/\/blog.alphorm.com\/modifier-transactions-php-mysql","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800}</script><script data-name="wpr-wpr-beacon" src='https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script></body>
</html>

				
			

Résultat d’affichage :

Le résultat affiché sera une page avec un formulaire pour modifier les détails d’une transaction spécifique. Les utilisateurs verront le nom du bien et pourront modifier les quantités, le prix unitaire, et la date de la transaction. Le formulaire enverra les données mises à jour lorsque l’utilisateur cliquera sur « Modifier ».

Interface pour modifier transactions PHP

Adapter formulaire selon type de bien

Pour adapter le formulaire de modification au type de bien, il est nécessaire de modifier le formulaire en fonction des caractéristiques spécifiques du bien. Les types de bien peuvent avoir des attributs différents, et vous devrez afficher des champs différents dans le formulaire en fonction du type de bien sélectionné

Modifiez le formulaire pour afficher des champs spécifiques en fonction du type de bien.

Code PHP pour bien-detail-update.php :

Voici le code modifié pour afficher des champs spécifiques en fonction du type de bien :

				
					
 <?php
session_start();
if(isset($_SESSION['pseudo'])){
$pseudo= $_SESSION['pseudo'];
}
else{

header('location:../index.php');
}
include('cnx/cnx.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une transaction</title>

<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"226ba09d-76f4-4044-b69c-8c9eadf2f5a8","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<?php
$sql ='SELECT * FROM transaction AS t JOIN bien As b ON t.bienID = b.bienID JOIN type As ty ON t.typeID = ty.typeID WHERE t.transactionID = :transactionID';
$req = $cnx->prepare($sql);
$req->execute(
array(
':transactionID' =>$_GET['transactionID']
)
);
$data = $req->fetch(PDO::FETCH_ASSOC);
// Liste des variables
$bienID = $data['bienID'];
$bien   = $data['bien'];
$image   = $data['image'];
$typeID  = $data['typeID'];
$type   = $data['type'];
$transactionID   = $data['transactionID'];
$quantite   = $data['quantite'];
$pu   = $data['pu'];
$montant   = $data['montant'];
$dateTransaction = $data['dateTransaction'];
?>
<article>
<section>
<div class="invest">
<h1><?=$bien;?></h1>
<form action="" method="post">
<?php
if($typeID == 3){
?>
<div>
<label for="montant">montant</label>
<input type="number" step="any" name="montant" id="montant" value="<?= $montant;?>">
</div>
<?php
}else{
?>
<div>
<label for="quantite">quantité</label>
<input type="number" name="quantite" id="quantite" value="<?= $quantite;?>">
</div>
<div>
<label for="pu">prix unitaire</label>
<input type="number" step="any" name="pu" id="pu" value="<?= $pu;?>">
</div>
<?php
}
?>
<div>
<label for="dateTransaction">date transaction</label>
<input type="date" name="dateTransaction" id="dateTransaction" value="<?= $dateTransaction;?>">
</div>
<div>
<label for="">Modifier</label>
<input type="submit" name="modifier" value="Modifier">
</div>
</form>
</div>
</section>
</article>
<script src="https://kit.fontawesome.com/50786edb2e.js" crossorigin="anonymous" data-rocket-defer defer></script>
<script>var rocket_beacon_data = {"ajax_url":"https:\/\/blog.alphorm.com\/wp-admin\/admin-ajax.php","nonce":"19d46e9098","url":"https:\/\/blog.alphorm.com\/modifier-transactions-php-mysql","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800}</script><script data-name="wpr-wpr-beacon" src='https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script></body>
</html>

				
			

Résultat d’affichage :

Le formulaire affiché dépendra du type de bien :

  • Pour les biens de type 3, seuls les champs pour le montant seront affichés.
  • Pour les autres types de biens, les champs pour la quantité et le prix unitaire seront affichés, ainsi que la date de transaction.
Interface pour modifier une transaction PHP

Infos supplémentaires sur la transaction

Pour enrichir la page de modification des transactions avec des informations complémentaires, vous pouvez inclure des détails tels que des instructions pour l’utilisateur, des informations supplémentaires sur le bien ou la transaction, et des outils pour faciliter l’édition. Voici comment vous pouvez structurer et ajouter ces informations :

Modification du Fichier bien-detail-update.php

Ajoutez les éléments suivants au fichier pour afficher des informations supplémentaires et des instructions pour l’utilisateur :

				
					
 <div data-bg="http://ergonomie/images/" class="imgBricks rocket-lazyload" style=""></div>
<p><i class="fa-solid fa-angles-left"></i> <a href="bien-detail.php?bienID=&lt;?=$bienID;?" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">">Retour</a></p>
<h2 id="modifier-la-transaction" class="rb-heading-index-9">modifier la transaction #<?=$transactionID;?></h2>
<p><?=$type;?> de <?= $bien;?></p>

				
			

Code CSS

Ajoutez le code CSS suivant dans votre fichier style.css pour styliser les nouvelles sections :

				
					
 .invest p{
text-align: left;
margin-top: 0;
text-transform: capitalize;
margin-left: 15px;
font-style: italic;
padding-bottom: 4px;
border-bottom: 1px dashed #ccc;
}
.invest p a {
display: inline-block;
padding-top: 6px;
}

				
			

Résultat d’affichage :

Avec ces ajouts :

  • La page affichera une image représentative du bien en haut.
  • Un lien pour revenir à la page des détails du bien sera visible.
  • Le formulaire de modification sera précédé d’un titre et d’une description, fournissant un contexte utile à l’utilisateur.

Cela améliore l’expérience utilisateur en fournissant des informations contextuelles et visuelles supplémentaires lors de la modification des transactions.

Interface pour modifier transaction immobilier

Adapter requête SQL modification

Pour mettre en place la requête SQL de modification, vous devez préparer une requête qui mettra à jour les détails de la transaction dans la base de données. Vous aurez besoin de récupérer les données soumises via le formulaire, valider ces données, puis exécuter une requête UPDATE pour mettre à jour les informations.

Étapes pour mettre en place la requête SQL de modification

Étape
Description
Récupérer les données du formulaire
Extraire les données envoyées par le formulaire de modification.
Préparer la requête SQL
Utiliser une requête SQL UPDATE pour modifier les enregistrements dans la table transaction.
Exécuter la requête SQL
Préparer et exécuter la requête SQL en utilisant PDO ou MySQLi.
Rediriger ou afficher un message
Après la mise à jour, rediriger l’utilisateur ou afficher un message de succès.

Tableau 1 : étapes pour mettre en place la requête SQL de modification

Code PHP pour bien-detail-update.php :

Voici le code complet pour gérer la mise à jour des détails d’une transaction avec gestion des types de biens spécifiques :

				
					
 <?php
session_start();
 if (isset($_SESSION['pseudo'])) {
     $pseudo = $_SESSION['pseudo'];
 } else {
     header('location:../index.php');
     exit();
 }
 include('cnx/cnx.php');
 ?><!DOCTYPE html>
<html lang="fr">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une transaction</title>

<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"226ba09d-76f4-4044-b69c-8c9eadf2f5a8","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<?php
 $sql = 'SELECT * FROM transaction AS t
JOIN bien AS b ON t.bienID = b.bienID
JOIN type AS ty ON t.typeID = ty.typeID
WHERE t.transactionID = :transactionID';
 $req = $cnx->prepare($sql);
 $req->execute(array(':transactionID' => $_GET['transactionID']));
 $data = $req->fetch(PDO::FETCH_ASSOC);
 // Liste des variables
 $bienID = $data['bienID'];
 $bien = $data['bien'];
 $image = $data['image'];
 $typeID = $data['typeID'];
 $type = $data['type'];
 $transactionID = $data['transactionID'];
 $quantite = $data['quantite'];
 $pu = $data['pu'];
 $montant = $data['montant'];
 $dateTransaction = $data['dateTransaction'];
 ?>
<article>
<section>
<div class="invest">
<h1><?= $bien; ?></h1>
<div class="bricks">
<div data-bg="http://ergonomie/images/" class="imgBricks rocket-lazyload" style=""></div>
<p><i class="fa-solid fa-angles-left"></i> <a href="bien-detail.php?bienID=&lt;?= $bienID; ?" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">">Retour</a></p>
<h2 id="modifier-la-transaction" class="rb-heading-index-12">Modifier la transaction #<?= $transactionID; ?></h2>
<p><?= $type; ?> de <?= $bien; ?></p>
<?php
if (isset($_POST['modifier'])) {
    $sql = 'UPDATE transaction SET
quantite = :quantite, pu = :pu, montant = :montant, dateTransaction = :dateTransaction
WHERE transactionID = :transactionID';
    $req = $cnx->prepare($sql);
    $data = array(
    'quantite' => $_POST['quantite'],
    'pu' => $_POST['pu'],
    'montant' => $_POST['quantite'] * $_POST['pu'], // Valeur par défaut
    'dateTransaction' => $_POST['dateTransaction'],
    'transactionID' => $_POST['transactionID']
    );
    if ($typeID == 3) {
        $data['montant'] = $_POST['montant']; // Remplace la valeur par défaut
    }
    $req->execute($data);
    echo "<div class='success'>La transaction a été modifiée avec succès.</div>";
}
 ?>
<form action="" method="post">
<?php
if ($typeID == 3) {
    ?>
<div>
<label for="montant">Montant</label>
<input type="number" step="any" name="montant" id="montant" value="<?= $montant; ?>">
</div>
<?php
} else {
    ?>
<div>
<label for="quantite">Quantité</label>
<input type="number" name="quantite" id="quantite" value="<?= $quantite; ?>">
</div>
<div>
<label for="pu">Prix unitaire</label>
<input type="number" step="any" name="pu" id="pu" value="<?= $pu; ?>">
</div>
<?php
}
 ?>
<div>
<label for="dateTransaction">Date transaction</label>
<input type="date" name="dateTransaction" id="dateTransaction" value="<?= $dateTransaction; ?>">
</div>
<div>
<label for="">Modifier</label>
<input type="submit" name="modifier" value="Modifier">
</div>
<input type="hidden" name="transactionID" value="<?= $transactionID; ?>">
<?php
if ($typeID == 3) {
    ?>
<input type="hidden" name="quantite" value="<?= $quantite; ?>">
<input type="hidden" name="pu" value="<?= $pu; ?>">
<?php
} else {
    ?>
<input type="hidden" name="montant" value="<?= $montant; ?>">
<?php
}
 ?>
</form>
</div>
</section>
</article>
<script src="https://kit.fontawesome.com/50786edb2e.js" crossorigin="anonymous" data-rocket-defer defer></script>
<script>var rocket_beacon_data = {"ajax_url":"https:\/\/blog.alphorm.com\/wp-admin\/admin-ajax.php","nonce":"19d46e9098","url":"https:\/\/blog.alphorm.com\/modifier-transactions-php-mysql","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800}</script><script data-name="wpr-wpr-beacon" src='https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script></body>
</html>

				
			

Résultat d’affichage :

  • La page affichera les informations de la transaction avec un formulaire de modification adapté en fonction du type de bien.
  • Un message de succès sera affiché après une mise à jour réussie, confirmant que les modifications ont été effectuées.
Formulaire pour modifier une transaction d'achat

Sécuriser formulaire de modification

Pour protéger le formulaire de modification, vous devez mettre en place plusieurs mécanismes de sécurité afin de garantir l’intégrité et la sécurité des données soumises. Voici quelques pratiques recommandées pour sécuriser le formulaire :

Code PHP pour bien-detail-update.php :

Voici le code mis à jour avec les améliorations de sécurité :

				
					
 <?php
session_start();
 if (isset($_SESSION['pseudo'])) {
     $pseudo = $_SESSION['pseudo'];
 } else {
     header('location:../index.php');
     exit();
 }
 include('cnx/cnx.php');
 ?>
<!DOCTYPE html>
<html lang="fr">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une transaction</title>

<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-226ba09d-76f4-4044-b69c-8c9eadf2f5a8: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"226ba09d-76f4-4044-b69c-8c9eadf2f5a8","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<?php
 $sql = 'SELECT * FROM transaction AS t
JOIN bien AS b ON t.bienID = b.bienID
JOIN type AS ty ON t.typeID = ty.typeID
WHERE t.transactionID = :transactionID';
 $req = $cnx->prepare($sql);
 $req->execute(array(':transactionID' => $_GET['transactionID']));
 $data = $req->fetch(PDO::FETCH_ASSOC);
 // Liste des variables
 $bienID = $data['bienID'];
 $bien = $data['bien'];
 $image = $data['image'];
 $typeID = $data['typeID'];
 $type = $data['type'];
 $transactionID = $data['transactionID'];
 $quantite = $data['quantite'];
 $pu = $data['pu'];
 $montant = $data['montant'];
 $dateTransaction = $data['dateTransaction'];
 ?>
<article>
<section>
<div class="invest">
<h1><?= $bien; ?></h1>
<div class="bricks">
<div data-bg="http://ergonomie/images/" class="imgBricks rocket-lazyload" style=""></div>
<p><i class="fa-solid fa-angles-left"></i> <a href="bien-detail.php?bienID=&lt;?= $bienID; ?" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">">Retour</a></p>
<h2 id="modifier-la-transaction" class="rb-heading-index-12">Modifier la transaction #<?= $transactionID; ?></h2>
<p><?= $type; ?> de <?= $bien; ?></p>
<?php
if (isset($_POST['modifier'])) {
    if (empty($_POST['quantite']) || empty($_POST['pu']) || empty($_POST['montant']) || empty($_POST['dateTransaction'])) {
        $message = '<div class="error">Modification annulée !</div>';
    } else {
        $sql = 'UPDATE transaction SET
quantite = :quantite, pu = :pu, montant = :montant, dateTransaction = :dateTransaction
WHERE transactionID = :transactionID';
        $req = $cnx->prepare($sql);
        $data = array(
        'quantite' => $_POST['quantite'],
        'pu' => $_POST['pu'],
        'montant' => $_POST['quantite'] * $_POST['pu'], // Valeur par défaut
        'dateTransaction' => $_POST['dateTransaction'],
        'transactionID' => $_POST['transactionID']
        );
        if ($typeID == 3) {
            $data['montant'] = $_POST['montant']; // Remplace la valeur par défaut
        }
    }
    $req->execute($data);
    echo "<div class='success'>La transaction a été modifiée avec succès.</div>";
}
 ?>
<?php
if (isset($_POST['cacher'])) {
    echo $message;
} else {
    ?>
<form action="" method="post">
<?php
if ($typeID == 3) {
    ?>
<div>
<label for="montant">Montant</label>
<input type="number" step="any" name="montant" id="montant" value="<?= $montant; ?>">
</div>
<?php
} else {
    ?>
<div>
<label for="quantite">Quantité</label>
<input type="number" name="quantite" id="quantite" value="<?= $quantite; ?>">
</div>
<div>
<label for="pu">Prix unitaire</label>
<input type="number" step="any" name="pu" id="pu" value="<?= $pu; ?>">
</div>
<?php
}
    ?>
<div>
<label for="dateTransaction">Date transaction</label>
<input type="date" name="dateTransaction" id="dateTransaction" value="<?= $dateTransaction; ?>">
</div>
<div>
<label for="">Modifier</label>
<input type="submit" name="modifier" value="Modifier">
</div>
<input type="hidden" name="transactionID" value="<?= $transactionID; ?>">
<input type="hidden" name="cacher">
<?php
if ($typeID == 3) {
    ?>
<input type="hidden" name="quantite" value="<?= $quantite; ?>">
<input type="hidden" name="pu" value="<?= $pu; ?>">
<?php
} else {
    ?>
<input type="hidden" name="montant" value="<?= $montant; ?>">
<?php
}
    ?>
</form>
<?php
}
 ?>
</div>
</section>
</article>
<script src="https://kit.fontawesome.com/50786edb2e.js" crossorigin="anonymous" data-rocket-defer defer></script>
<script>var rocket_beacon_data = {"ajax_url":"https:\/\/blog.alphorm.com\/wp-admin\/admin-ajax.php","nonce":"19d46e9098","url":"https:\/\/blog.alphorm.com\/modifier-transactions-php-mysql","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800}</script><script data-name="wpr-wpr-beacon" src='https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script></body>
</html>

				
			

Résultat d’affichage :

Pour visualiser le résultat d’affichage de la page de modification des transactions, voici à quoi cela pourrait ressembler en fonction des différentes situations :

Cas les champs sont vide

Interface pour modifier une transaction PHP

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment modifier une transaction en PHP ?
Pour modifier une transaction en PHP, vous devez créer un formulaire de modification qui extrait et affiche les données existantes de la transaction. Utilisez une requête SQL SELECT pour récupérer les informations et un formulaire HTML pour présenter les données de manière modifiable. Assurez-vous que le formulaire soumet les données mises à jour via la méthode POST, puis utilisez une requête SQL UPDATE pour enregistrer les modifications dans la base de données.
Comment sécuriser un formulaire de modification en PHP ?
Pour sécuriser un formulaire de modification en PHP, commencez par valider les données de l’utilisateur pour éviter les injections SQL. Utilisez des déclarations préparées avec PDO ou MySQLi pour exécuter les requêtes SQL. Assurez-vous que le formulaire vérifie les données obligatoires avant de les soumettre au serveur. En outre, implémentez une gestion des erreurs pour informer l’utilisateur en cas de données incorrectes ou manquantes.
Comment afficher un formulaire de modification en fonction du type de bien ?
Pour adapter un formulaire de modification en fonction du type de bien, identifiez d’abord le type via une requête SQL. Ensuite, utilisez des conditions PHP pour afficher différents champs dans le formulaire selon le type de bien. Par exemple, certains types pourraient nécessiter des champs supplémentaires comme le montant total, tandis que d’autres peuvent nécessiter des quantités et des prix unitaires. Cela garantit que le formulaire est pertinent et efficace pour chaque type de bien.
Comment gérer les erreurs dans le code PHP ?
La gestion des erreurs en PHP nécessite l’utilisation de blocs try-catch pour capturer les exceptions et afficher des messages d’erreur clairs à l’utilisateur. Pour les erreurs SQL, vérifiez les déclarations préparées et gérez les exceptions PDO. Assurez-vous de valider toutes les entrées utilisateur et d’utiliser des déclarations conditionnelles pour vérifier les données manquantes ou incorrectes avant l’exécution des requêtes SQL.
Quelles bonnes pratiques pour le code PHP sécurisé ?
Pour un code PHP sécurisé, utilisez des déclarations préparées pour les requêtes SQL afin de prévenir les injections SQL. Validez et assainissez toutes les entrées utilisateur. Implémentez des contrôles d’accès pour protéger les pages sensibles, et assurez-vous que les sessions sont sécurisées en utilisant des identifiants uniques pour chaque utilisateur. Enfin, utilisez HTTPS pour chiffrer les données échangées entre le client et le serveur.

Conclusion

En appliquant ces techniques, vous pouvez gérer efficacement les modifications de transactions en PHP tout en assurant la sécurité. Quels autres aspects de la sécurité PHP vous intéressent particulièrement ?

ÉTIQUETÉ : PHP8
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Modifier et Sécuriser des Transactions avec PHP et MySQL

© Alphorm - Tous droits réservés