Mise à jour de formulaire
Fermé
binousha_1022
Messages postés
41
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
25 juin 2020
-
Modifié le 24 juin 2020 à 16:57
binousha_1022 Messages postés 41 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 25 juin 2020 - 25 juin 2020 à 10:41
binousha_1022 Messages postés 41 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 25 juin 2020 - 25 juin 2020 à 10:41
A voir également:
- Mise à jour de formulaire
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise a jour windows 7 - Accueil - Mise à jour
3 réponses
yg_be
Messages postés
23337
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2020 à 17:28
24 juin 2020 à 17:28
bonjour, pour que nous comprenions, ajoute print_r($_POST) avant la ligne 87;
pour que tu comprennes, ajoute print_r() de $liste ,$date_reception_log, ,$date_transmission_at, $peniche avant la ligne 147.
et montre-nous tout cela.
pour que tu comprennes, ajoute print_r() de $liste ,$date_reception_log, ,$date_transmission_at, $peniche avant la ligne 147.
et montre-nous tout cela.
jordane45
Messages postés
38292
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2024
4 704
24 juin 2020 à 23:00
24 juin 2020 à 23:00
Bonjour,
Quelques règles à suivre pour avoir un code propre et "facile" à debuguer
on place le maximum de code php en dehors du html ( de préférence au début du script)
on active l'affichage des erreurs PDO et PHP
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
on essaye de découper en fonctions
on récupère proprement les variables AVANT de les utiliser
En gros ça devrait donner un truc du genre :
Par contre, je suis un peu dubitatif sur le résultat souhaité avec ce code....
As tu testé la requête DIRECTEMENT dans ta bdd ( via phpmyadmin par exemple) avant d'essayer de la mettre en pratique dans ton code php ?
Ton formulaire ne contient qu'une donnée... les cases à cocher... les autres variables ne sont pas dedans.. c'est normal ??
Quelques règles à suivre pour avoir un code propre et "facile" à debuguer
on place le maximum de code php en dehors du html ( de préférence au début du script)
on active l'affichage des erreurs PDO et PHP
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
on essaye de découper en fonctions
on récupère proprement les variables AVANT de les utiliser
En gros ça devrait donner un truc du genre :
<?php //----------------------------------------------// //Affichage des erreurs php //----------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //----------------------------------------------// //fonctions //----------------------------------------------// // Connexion à la bdd function getDb(){ $serveur = "localhost"; $dbname = "#"; $user = "root"; $pass = ""; try{ //On se connecte à la BDD $dbco = new PDO("mysql:host=$serveur;dbname=$dbname",$user,$pass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbco->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } return $dbco; } function getAll(){ $bdd = getDb(); $sql='select * from ...'; //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute() ; return $requete->fetchAll(); // on retourne un array avec tous les résultats }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } } function updCommande($date_reception_log,$date_transmission_at,$peniche,$lesNumeroCompte=array()){ $bdd = getDb(); $liste = join("','",$lesNumeroCompte); $sql = "UPDATE commande SET date_reception_log=:date_reception_log, date_transmission_at=:date_transmission_at, peniche=:peniche WHERE numerocompte in ('" .$liste . "')" ; try{ $sth = $dbco->prepare($sql); $sth->bindParam(':date_reception_log',$date_reception_log,PDO::PARAM_STR); $sth->bindParam(':date_transmission_at',$date_transmission_at,PDO::PARAM_STR); $sth->bindParam(':peniche',$peniche,PDO::PARAM_STR); return $sth->execute(); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); } } //----------------------------------------------// //récupération des variables //----------------------------------------------// $date_reception = !empty($_POST["date_reception"]) ? $_POST["date_reception"] : ''; $date_transmission = !empty($_POST["date_transmission"]) ? $_POST["date_transmission"] : ''; $peniche = !empty($_POST["peniche"]) ? $_POST["peniche"] : ''; $date_reception_log = !empty($_POST["date_reception_log"]) ? $_POST["date_reception_log"] : ''; $date_reception = !empty($_POST["date_reception"]) ? $_POST["date_reception"] : ''; $date_transmission_at = !empty($_POST["date_transmission_at"]) ? $_POST["date_transmission_at"] : ''; $lesNumeroCompte = !empty($_POST["listeCmd"]) ? $_POST["listeCmd"] : '';; //----------------------------------------------// // Traitement du formulaire //----------------------------------------------// //le temps des tests : echo "<pre>Variables POST : <br>"; print_r($_POST); echo "</pre>"; if(isset($_POST['Envoyer'])) { echo 'date 1 ' .$date_reception; echo 'date 2 ' .$date_transmission; echo 'peniche ' .$peniche; if(!isset($date_reception_log) || $date_reception==''){ echo '<script>alert("Veuillez saisir la date reception")</script>'; } if(!isset($date_transmission_at) || $date_transmission_at ==''){ echo '<script>alert("Veuillez saisir la date transmission")</script>'; } if(!isset($peniche) || $peniche == ''){ echo '<script>alert("Veuillez saisir la péniche SVP")</script>'; } if(empty($lesNumeroCompte)){ echo '<script>alert("Veuillez choisir une commande")</script>'; } if( updCommande($date_reception_log,$date_transmission_at,$peniche,$lesNumeroCompte)) { //On renvoie l'utilisateur vers la page de remerciement //header("Location:espacelogistique.php"); // on desactive la redirection le temps des tests echo "Update OK !"; exit(); //toujours mettre un exit après une redirection. } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Recherche</title> <style> table{width:100%;border-collapse:collapse} table tr,table th,table td{border:1px solid black;} table tr td{text-align:center;padding:1em;} </style> </head> <body> <?php include('connection_database.php');?> <form method='post' action='#'> <label for="date_reception_log">Date réception : </label> <input type='date' placeholder='date_reception' name="date_reception"/> <label for="date_transmission">Date transmission : </label> <input type='date' placeholder='date_transmission' name="date_transmission"/> <input type='submit' value="Envoyer" name="Envoyer"/> <table> <thead> <tr> <th>Choisir</th> <th>#</th> <th>#</th> <th>#</th> <th>#</th> <th>#</th> <th>#</th> <th>#</th> <th>#</th> </th> </tr> </thead> <tbody> <?php $resultats = getAll(); if(!empty($resultats) ) { foreach( $resultats as $d){ ?> <tr> <td><input type='checkbox' name='listeCmd[]' value="<?php echo $d['numerocompte']; ?>"></td> <td><?=$d['']?></td> <td><?=$d['']?></td> <td><?=$d['']?></td> <td><?=$d['']?></td> <td><?=$d['']?></td> <td><?=$d['']?></td> <td><?=$d['']?></td><td> <input type='varchar' id="peniche_<?php echo $d['peniche']; ?>" name="peniche" value="<?php echo $d['peniche']; ?>"></td> </tr> <?php } } else { echo '<tr><td colspan=4>aucun résultat trouvé</td></tr>'. } ?> </tbody> </table> </form> </body> </html>
Par contre, je suis un peu dubitatif sur le résultat souhaité avec ce code....
As tu testé la requête DIRECTEMENT dans ta bdd ( via phpmyadmin par exemple) avant d'essayer de la mettre en pratique dans ton code php ?
Ton formulaire ne contient qu'une donnée... les cases à cocher... les autres variables ne sont pas dedans.. c'est normal ??
binousha_1022
Messages postés
41
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
25 juin 2020
25 juin 2020 à 10:41
25 juin 2020 à 10:41
Bonjour, merci de m'avoir répondu. Oui c'est normal, le but c'est de cocher les cases (une, deux ou plusieurs), remplir le formulaire (date réception et date transmission) , remplir la colonne "peniche"(chaque ligne une peniche) et le système fait la mise à jour en fonction du numerocompte. La requête marchait très bien jusqu'à ce qu'on m'a fait une suggestion (une peniche pour une commande au lieu de une peniche pour plusieurs commandes ). La peniche faisait parti du formulaire mais maintenant je lui ai crée une colonne. Mon soucis est à chaque fois il prend la peniche de la 1ere commande et l'enregistre sur les autres. Je penses que c'est plus clair maintenant. Merci
24 juin 2020 à 17:44