Bonjour

J'affiche des données dans un formulaire avec un pdo->fetch.
Quand j'arrive la première fois sur la page, tout va bien.
Quand je veux mettre à jour les données par un submit qui rappelle la même page, je n'ai plus rien.
L'update à partir de ligne 46 se déroule sans problème, mais après j'ai une erreur, la requête fecth ne ramène rien et le print_r est vide.
J'imagine que c'est le fait de revenir à la même page le fech s'est déjà produit et il passe à la ligne suivante qui ne correspond pas.
Y a t-il un moyen de réinitailiser le fetch, j'ai essayé un fetchall mon print_r est remplie mais les champs de mes formulaires ne contiennent plus rien.

début de la page
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
78
79
80
81
82
83
<?php
session_start();
date_default_timezone_set('Europe/Paris');
$titre="Gestion production";
include_once'PHP_include/date-script.php';
include_once'CLASS/Intermittents.class.php';
include_once'CLASS/calculjour.class.php';
include_once'CLASS/date.class.php';
include_once'CLASS/prod.class.php';
include_once'CLASS/identification.class.php';
include_once'manager/manager.php';
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$intermittent = new intermittent();
$prod=new prod();
$ladate=new ladate();
$calculjour= new calculjour();
$identifiant=new identification();
 
// ********************************
 
// si la prod est annulée UPDATE et retour à a la liste
 
// ******************************
if(isset($_POST['annul'])){
 $annul_prod->bindParam(1,$_POST['idprod'], PDO::PARAM_INT);
 $annul_prod->execute();
 ?>
 <script>window.location.assign('prod_liste.php')</script>
 <?php
}
// ********************************
 
// si la prod est rétablie UPDATE et retour à a la liste
 
// ******************************
else if(isset($_POST['retab'])){
 $retablissment_prod->bindParam(1,$_POST['idprod'], PDO::PARAM_INT);
 $retablissment_prod->execute();
 $affich="Prod rétablie";
}
// ********************************
 
// modif d'infos de prod
 
// ******************************
else if(isset($_POST['modifprod'])){
  $affich="Modifications enregistrées";
// affecttaion des variables pourle UPDATE géré par manager PHP
  $update_prod->bindParam(1, $titre_prod, PDO::PARAM_STR);
  $update_prod->bindParam(2, $charge_prod, PDO::PARAM_STR);
  $update_prod->bindParam(3, $lieu, PDO::PARAM_STR);
  $update_prod->bindParam(4, $client, PDO::PARAM_STR);
  $update_prod->bindParam(5, $contact, PDO::PARAM_STR);
  $update_prod->bindParam(6, $tel_contact, PDO::PARAM_INT);
  $update_prod->bindParam(7, $mail_contact, PDO::PARAM_INT);
  $update_prod->bindParam(8, $commentaires, PDO::PARAM_INT);
  $update_prod->bindParam(9, $datedebutEN, PDO::PARAM_INT);
  $update_prod->bindParam(10, $datefinEN, PDO::PARAM_INT);
  $update_prod->bindParam(11, $heuredebut, PDO::PARAM_INT);
  $update_prod->bindParam(12, $affaire, PDO::PARAM_INT);
  $update_prod->bindParam(13, $pole_emploi, PDO::PARAM_INT);
  $update_prod->bindParam(14, $idprod, PDO::PARAM_INT);
 
 
  // boucle pour récupére toutes les entrées et affectation des variables
  // utilisées ci dessus
  foreach ($_POST as $key =>$val){
    $$key=$val;
}
 
$ladate->setDatedebut($datedebut);
$ladate->setDatefin($datefin);
$datedebutEN=$ladate->datedebut();
$datefinEN=$ladate->datefin();
 
$update_prod->execute();
 
}else $affich=NULL;
 
// get données dans l'URL par la page précédente execution de la requête
$affich_prod2->execute(array($_GET['nb']));
$affich_intermittents->execute(array($_GET['nb']));
echo "get".$_GET['nb'];//le GET est bien retourné
suite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<?php 
 echo "<h1 style='text-align:center;'>".$affich."</h1>";
 $donnes = $affich_prod2->fetch();
 print_r($donnes);
 $prod->hydrate($donnes);
 $identifiant->hydrate($donnes);
 $calculjour->setdifference($prod->datedebutEN(),$prod->datefinEN());
 ?>
fin du formulaire et submit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div class="col-sm-6 col-sm-offset-3" style="margin-bottom:2%">
     <label for="comm">commentaires</label>
     <textarea class="form-control" rows="4" name="commentaires"><?php echo $prod->commentaires_prod() ?></textarea>
</div>
<div class="col-sm-12 " style="margin-bottom:2%;background-color:#EFEFEF; padding:2%;">
 
     <input type="submit" name="modifprod" value="Modifier les infos" class="button btn btn-warning btn-lg col-sm-2 col-sm-offset-2 col-xs-12">
     <?php if($prod->annul()==FALSE){
          echo'<input type="submit" name="annul" value="Annuler cette prod" class="button btn btn-danger btn-lg col-sm-2 col-sm-offset-1 col-xs-12">';
          }else 
               echo'<input type="submit" name="retab" value="Rétablir la prod" class="button  btn-lg col-sm-2 col-sm-offset-1 col-xs-12" style="background-color:#09f409">';?>
 
     <input type="button" name="modele" value="enregistrer comme modèle" class="button btn btn-success btn-lg col-sm-2 col-sm-offset-1 col-xs-12">
</div>
requête PDO
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$affich_prod2=$bdd->prepare("SELECT * FROM prod INNER JOIN list_producteur  ON id_charge_prod=charge_prod WHERE id_prod=?  ");