-
-
- -

, choisissez votre livraison

- - -
-
-
- - -
-
-
-
- - Adresse : $numRue $libelleVoie, $codePostal $ville - Modifier -
"; - } else { - echo " -
- Adresse non renseignée - Modifier -
"; - } - ?> +
+
+
+ +

, choisissez votre livraison

+ +
+
+
+ + +
-
-
- -
-
-
- - +
+
+ + Adresse : $numRue $libelleVoie, $codePostal $ville + Modifier +
"; + } else { + echo " +
+ Adresse non renseignée + Modifier +
"; + } + ?> +
-
- prepare("SELECT * FROM POINTRELAIS;"); - $reqPointRelais->execute(); - - foreach ($reqPointRelais as $pointRelais): - $idPointRelais = htmlspecialchars($pointRelais['IDPOINTRELAIS']); - $adressePointRelais = htmlspecialchars($pointRelais['ADRESSEPOINTRELAIS']); - ?> -
- - -
-
+
- -

, choisissez votre mode de paiement

- -
-
-
- - + +

, choisissez votre mode de paiement

+ +
+
+
+ + +
-
-
-
- -
- - +
+
+ +
+
+ + Date invalide +
+ +
+
-
- -
-
-
- - + +
+
+
+ + +
+
+
+
-
-
-
-
- -
-

Récapitulatif

-
-
- -
Articles
- + +
+

Récapitulatif

+
+
+ +
Articles
+ +

+ 1) { + echo "x".$produit['QUANTITEPANIER']." "; + } + echo "".htmlspecialchars($produit['NOMPRODUIT'])." - ".number_format($produit['PRIX'] * $produit['QUANTITEPANIER'], 2)."€"; + ?> +

+ + + +
Livraison

- 1) { - echo "x".$produit['QUANTITEPANIER']." "; - } - echo "".htmlspecialchars($produit['NOMPRODUIT'])." - ".number_format($produit['PRIX'] * $produit['QUANTITEPANIER'], 2)."€"; - ?> +

- - -
Livraison
-

- -

- - -

Total commande

-

- -

- + +

Total commande

+

+ +

+ +
+
-
-
+ + diff --git a/WEB/PHP/consultCompte.php b/WEB/PHP/consultCompte.php index 9365997c..2533617c 100644 --- a/WEB/PHP/consultCompte.php +++ b/WEB/PHP/consultCompte.php @@ -204,7 +204,7 @@ prepare("SELECT * FROM COMMANDE WHERE IDUTILISATEUR = ? ORDER BY DATECOMMANDE DESC;"); $reqCommandes->execute([$_SESSION['user']]); - $selectedCommande = $_POST['commande'] ?? null; + $selectedCommande = $_GET['commande'] ?? null; foreach ($reqCommandes as $index => $commande) { // Construire la valeur concaténé contenant les données de la commande @@ -286,7 +286,7 @@

- Donnez votre avis
+ Donnez votre avis

Quantité :
diff --git a/WEB/PHP/consultPanier.php b/WEB/PHP/consultPanier.php index 8b23ba4d..bb34a04c 100644 --- a/WEB/PHP/consultPanier.php +++ b/WEB/PHP/consultPanier.php @@ -195,9 +195,9 @@ class="panier-item-image"
Connectez-vous pour passer votre commande'; + echo 'Connectez-vous pour passer votre commande'; } else { - echo 'Passer votre commande'; + echo 'Passer votre commande'; } ?>
diff --git a/WEB/PHP/javascript/script.js b/WEB/PHP/javascript/script.js index 6f9adf0c..3cd55294 100644 --- a/WEB/PHP/javascript/script.js +++ b/WEB/PHP/javascript/script.js @@ -32,6 +32,29 @@ livraisonRelais.addEventListener('change', updateState); livraisonDomicile.addEventListener('change', updateState); updateState(); // Initialisation +// Gestion des paiements +const paiementCB = document.getElementById('paiementCB'); +const paiementPaypal = document.getElementById('paiementPaypal'); +const formCarteBancaire = document.getElementById('formCarteBancaire'); +const formPaypal = document.getElementById('formPaypal'); +// Champs des formulaires +const numCarte = document.getElementById('numCarte'); +const dateExpiration = document.getElementById('dateExpiration'); +const cryptogramme = document.getElementById('cryptogramme'); +const emailPaypal = document.getElementById('emailPaypal'); +// Gestion de l'affichage dynamique +function togglePaymentForms() { + if (paiementCB.checked) { + formCarteBancaire.closest('.card-body').classList.remove('d-none'); // Affiche tout le bloc + formPaypal.closest('.card-body').classList.add('d-none'); // Masque tout le bloc PayPal + } else if (paiementPaypal.checked) { + formCarteBancaire.closest('.card-body').classList.add('d-none'); // Masque tout le bloc carte bancaire + formPaypal.closest('.card-body').classList.remove('d-none'); // Affiche tout le bloc PayPal + } +} +paiementCB.addEventListener('change', togglePaymentForms); +paiementPaypal.addEventListener('change', togglePaymentForms); + // Validation des champs function validerFormulaire() { let valide = true; @@ -47,14 +70,41 @@ function validerFormulaire() { // Validation des informations de paiement if (paiementCB.checked) { + // Vérifie le numéro de carte (16 chiffres) if (!/^\d{16}$/.test(numCarte.value)) { numCarte.classList.add('is-invalid'); valide = false; } + + // Vérifie le format de la date (MM/YY) if (!/^\d{2}\/\d{2}$/.test(dateExpiration.value)) { dateExpiration.classList.add('is-invalid'); valide = false; + } else { + // Vérifie si la date n'est pas expirée + const dateParts = dateExpiration.value.split('/'); + const month = parseInt(dateParts[0], 10); // Mois + const year = parseInt(dateParts[1], 10) + 2000; // Année (convertit YY en YYYY) + + const currentDate = new Date(); // Date actuelle + const currentMonth = currentDate.getMonth() + 1; // Mois actuel (de 0 à 11, donc +1) + const currentYear = currentDate.getFullYear(); // Année actuelle + + if ( + month < 1 || month > 12 || // Mois invalide + year < currentYear || // Année expirée + (year === currentYear && month < currentMonth) // Mois expiré pour l'année actuelle + ) { + dateExpiration.classList.add('is-invalid'); // Ajoute la classe d'erreur + document.getElementById('dateExpirationError').style.display = 'block'; + valide = false; // Date invalide + } else { + dateExpiration.classList.remove('is-invalid'); // Supprime la classe si valide + document.getElementById('dateExpirationError').style.display = 'none'; + } } + + // Vérifie le cryptogramme (3 chiffres) if (!/^\d{3}$/.test(cryptogramme.value)) { cryptogramme.classList.add('is-invalid'); valide = false; @@ -70,7 +120,7 @@ function validerFormulaire() { } // Validation au clic sur "Passer votre commande" -document.querySelector('a.btn-primary').addEventListener('click', function (e) { +document.querySelector('button.btn-primary').addEventListener('click', function (e) { if (!validerFormulaire()) { e.preventDefault(); alert('Veuillez corriger les erreurs dans le formulaire de paiement.');