Tu as toujours (+ d'autres incohérences de code...) :
Code:
1
2 <form method="post" action="ModifConsultant.php"> <form method="post" action="traitC.php">
Si ça marche, ça tient du miracle !!
Version imprimable
Tu as toujours (+ d'autres incohérences de code...) :
Code:
1
2 <form method="post" action="ModifConsultant.php"> <form method="post" action="traitC.php">
Si ça marche, ça tient du miracle !!
Ah bon? Oulà ça veut dire que ce n'est pas stable alors. Voilà comment il marche actuellement:
C'est peut être trop de bidouille :(Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 <?php if (isset($_POST['supprimer']) && isset($_POST['id'])) { //Bloc de suppression des données au serveur try { $bdd = new PDO('mysql:host=localhost;dbname=ao', 'root', ''); $req = $bdd->prepare('DELETE FROM consultants WHERE id = :id'); $req->execute(array(':id'=>intval($_POST['id']))); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } header('Location: consultant.php'); } ?> <!DOCTYPE html> <html> <head> <!-- Rajouter en PhP le nom de l'utilisateur --> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" /> <title>Suivi des AO: Consultants</title> <?php include('barre.php'); // Nous appelons notre menu ?> </head> <body> <?php try { // On se connecte Ã* MySQL $bdd = new PDO('mysql:host=localhost;dbname=ao', 'root', ''); // On récupère tout le contenu de la table consultation $reponse = $bdd->query('SELECT * FROM consultants WHERE id ='. $_POST['id'])or die(print_r($bdd->errorInfo())); $donnees = $reponse->fetch(); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } ?> <form action="traitModifCons.php" method="post"> <form method="post" action="traitC.php"> <td> <?php echo '<input type="hidden" name="id" value="' . $donnees['id'] . '" />' . $donnees['id'];?> <label for="Nom">Quel est le nom du consultant?</label> <input type="text" name="Nom" id="Nom" value="<?php echo $donnees['Nom']; ?>" /> <br /> <label for="Prenom">Quel est le prénom du consultant?</label> <input type="text" name="Prenom" id="Prenom" value="<?php echo $donnees['Prenom']; ?>" /> <br /> <p> <label for="Trigramme">Quel est son trigramme?</label><br /> <input type="text" name="Trigramme" id="Trigramme" value="<?php echo $donnees['Trigramme']; ?>" /> </p> <label for="Email">Quel est son email ?</label> <input type="Email" name="Email" id="Email" value="<?php echo $donnees['Email']; ?>" /> <br /> <input type="submit" value="Valider" name="Valider"/> </form> </form> <?php $reponse->closeCursor(); // Termine le traitement de la requète ?> </body> </html>
Mais c'est vrai que je peux peut être me passer du form avec traitC. Je vais essayer de l'enlever
Bonjour,
ton code précédent prouve que tu ne tiens pas compte de nos corrections (les miennes et celles de Sabotage)
1/ ceci doit être dans le <body> (et pas dans le <head>) => à déplacer APRES la balise <body> :
2/ Requête correcte (donnée par Sabotage) => à corriger comme suit :Code:
1
2
3 <?php include('barre.php'); // Nous appelons notre menu ?>
C'est une REQUETE PREPAREE, donc SECURISEE.Code:
1
2
3 $reponse = $bdd->prepare('SELECT * FROM consultants WHERE id= :id'); $reponse->execute(array(':id'=>$_POST['id'])); $donnees = $reponse->fetch();
Regarde dans les autres parties de ton propre code, tu trouveras d'autres requêtes similaires ! (la requête DELETE, par exemple)
3/ UNE SEULE balise <form>...</form> => supprimer l'autre
Code:
1
2
3 <form action="traitModifCons.php" method="post"> ... </form>
Je commençais à m'embrouiller c'est pour ça que je suis revenue au début.
Code modifié:
Y a t il autre chose que je dois changer?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <!DOCTYPE html> <html> <head> <!-- Rajouter en PhP le nom de l'utilisateur --> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" /> <title>Suivi des AO: Consultants</title> </head> <body> <?php include('barre.php'); // Nous appelons notre menu ?> <?php try { // On se connecte Ã* MySQL $bdd = new PDO('mysql:host=localhost;dbname=ao', 'root', ''); // On récupère tout le contenu de la table consultation $reponse = $bdd->prepare('SELECT * FROM consultants WHERE id = :id')or die(print_r($bdd->errorInfo())); $reponse->execute(array(':id'=>$_POST['id'])); $donnees = $reponse->fetch(); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } ?> <form action="traitModifCons.php" method="post"> <td> <?php echo '<input type="hidden" name="id" value="' . $donnees['id'] . '" />';?> <label for="Nom">Quel est le nom du consultant?</label> <input type="text" name="Nom" id="Nom" value="<?php echo $donnees['Nom']; ?>" /> <br /> <label for="Prenom">Quel est le prénom du consultant?</label> <input type="text" name="Prenom" id="Prenom" value="<?php echo $donnees['Prenom']; ?>" /> <br /> <p> <label for="Trigramme">Quel est son trigramme?</label><br /> <input type="text" name="Trigramme" id="Trigramme" value="<?php echo $donnees['Trigramme']; ?>" /> </p> <label for="Email">Quel est son email ?</label> <input type="Email" name="Email" id="Email" value="<?php echo $donnees['Email']; ?>" /> <br /> <input type="submit" value="Valider" name="Valider"/> </form> <?php $reponse->closeCursor(); // Termine le traitement de la requète ?> </body> </html>
:ccool: à priori, ça a l'air correct !
:mouarf: :oops: :chin::kiss::merci:
Champagne. Tout ça rien que pour toi et pour sabotage.
Tu pourras enfin avoir la paix :mouarf:
Cela dit, pour éviter de "trainer" la connexion dans tous les fichiers (avec les mots de passe,....) je te conseille de créer un fichier connexion_pdo.php, contenant les paramètres de connexion :
connexion_pdo.php :
Et de l'appeler UNE FOIS dans tes fichiers :Code:
1
2 // connexion PDO $bdd = new PDO('mysql:host=localhost;dbname=ao', 'root', '');
Code:<?php include('./connexion_pdo.php'); ?>
Ok ça marche mais là du coup j'ai deux questions:
1) Etant donné qu'on faisait un test comme suit:
Est ce que le include je dois le mettre dans le body? Je présume que c'est tout le test try+ catch que je dois mettre dans la feuille à partCode:
1
2
3
4
5
6
7
8
9
10
11 <?php //Bloc d'ajout des données au serveur try { $bdd = new PDO('mysql:host=localhost;dbname=ao', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); }
2) Comme c'est un include pourquoi mettre:
et pasCode:<?php include('./connexion_pdo.php'); ?>
Code:<?php include('connexion_pdo.php'); ?>
Je sais que tu dois avoir beaucoup de gens à aider et comme ça c'est juste pour ma culture générale, vraiment c'est juste quand tu auras un peu de temps pour m'expliquer.
Merci
Il faut le mettre au début du fichier (ou 1 fois, avant la 1ère requête)
Une variante (avec paramètres supplémentaires) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php // paramètres de connexion $connexion = array(); $connexion['hostname'] = 'xxxx'; // voir hébergeur ou "localhost" en local $connexion['database'] = 'xxxx'; // nom de la BdD $connexion['username'] = 'xxxx'; // identifiant "root" en local $connexion['password'] = 'xxxx'; // mot de passe (vide en local) // ------------------------ // connexion à la Base de Données try { // chaine de connexion (DSN) $connexion['strConn'] = 'mysql:host='.$connexion['hostname'].';dbname='.$connexion['database']; $connexion['extraParam']= array( PDO::ATTR_PERSISTENT => true, // Connexions persistantes PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" // encodage UTF-8 ); // Instancie la connexion $pdo = new PDO($connexion['strConn'], $connexion['username'], $connexion['password'], $connexion['extraParam']); // rapport d'erreurs sous forme d'exceptions $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $msg = 'ERREUR PDO dans ' . $e->getFile().' L.' . $e->getLine().' : ' . $e->getMessage(); die($msg); } // ------------------------ $connexion = array(); // on vide
./ indique que le fichier est dans le même dossier.Code:<?php include('./connexion_pdo.php'); ?> ou <?php include(__DIR__.'/connexion_pdo.php'); ?>
En fonction des emplacements respectifs des fichiers, on peut aussi avoir (par exemple) :
Code:<?php include('./conn/connexion_pdo.php'); ?> ou <?php include(__DIR__.'/conn/connexion_pdo.php'); ?>
(à toi de mettre le chemin relatif correct)Code:<?php include('../conn/connexion_pdo.php'); ?> ou <?php include(dirname(__DIR__).'/conn/connexion_pdo.php'); ?>
Merci pour l'explication.
Je vais tester tout de suite la méthode avec plus de paramètres :mrgreen:
Souhaite moi bonne chance :mouarf: