UPDATE via PDO, biais formulaire pas en état de marche.

Résolu/Fermé
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017 - Modifié par Fontainard le 27/06/2014 à 10:00
 Utilisateur anonyme - 27 juin 2014 à 16:24
Bonjour,

Cett syntaxe fonctionne avec un INSERT, mais pas avec un UPDATE.
l'id est de type auto_increment, c'est avec lui que j'essaye de me référer pour modifier les valeurs qui lui sont correspondantes.

Une idée du problème, jeunes gens ?

<?php
    
   try { 
      $base = new PDO('mysql:host=localhost; dbname=iplanet', 'root'. '');
      $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $base->exec("SET CHARACTER SET utf8");  
      }
      catch(PDOexception $e)  {
      die ('Erreur '.$e->getMessage());
      }
  try
  {
    $id = $base->quote($_POST['idUtil']);
    $nom = $base->quote($_POST['nomUtil']);
    $prenom = $base->quote($_POST['prenomUtil']);
    $fonction = $base->quote($_POST['fonctionUtil']);
    $login = $base->quote($_POST['loginUtil']);
    $pwd = $base->quote($_POST['pwdUtil']);
    $niveau =$base->quote($_POST['niveauUtil']);
    $valide = $base->quote($_POST['valideUtil']);
    $mail = $base->quote($_POST['mailUtil']);
    $tel = $base->quote($_POST['telUtil']);
    $secteur = $base->quote($_POST['id_secteur']);
    $stock = $base->quote($_POST['idStock']);
    $cdsociete = $base->quote($_POST['codeSociete']);
    
    $count = $base->exec("UPDATE utilisateur SET nomUtil=$nom, prenomUtil=$prenom, fonctionUtil=$fonction, loginUtil=$login, pwdUtil=$pwd, niveauUtil=$niveau, valideUtil=$valide, mailUtil=$mail, telUtil=$tel, id_secteur=$secteur, idStock=stock, codeSociete=$societe WHERE idUtil=$id ");
  echo '<p>'.$count.' utilisateur modifié</p>';
  $base = null;
  }
 catch(PDOexception $e)
  { }

header ("Refresh: 3;URL=/administration/admin.php");
   ?>


Voilà les erreurs.

Notice: Undefined index: idUtil in C:\wamp\www\administration\requetes\popupmu.php on line 13
Call Stack
# Time Memory Function Location
1 0.0005 263120 {main}( ) ..\popupmu.php:0

( ! ) Notice: Undefined index: mailUtil in C:\wamp\www\administration\requetes\popupmu.php on line 21 (Celle ci est inexplicable aussi (a))
Call Stack
# Time Memory Function Location
1 0.0005 263120 {main}( ) ..\popupmu.php:0

0 utilisateur modifié
A voir également:

5 réponses

Utilisateur anonyme
27 juin 2014 à 09:31
Bonjour

Comme le dit ton message d'erreur, les indices idUtil et mailUtil ne sont pas définis dans $_POST
Ajoute un print_r($_POST) au début de ton script pour vérifier.

C'est à coup sûr qu'ils ne sont pas définis dans ton formulaire.

Peux-tu relire toi-même ton formulaire et, s'il te semble correct malgré tout, nous le montrer ?
0
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017
27 juin 2014 à 10:04
Array
(
[IdUtil] => 193
[nomUtil] => Plgba
[prenomUtil] => jeremos
[fonctionUtil] => test
[mailutil] => test@koko.fr
[telUtil] => 0605055148
[loginUtil] => popol
[pwdUtil] => abeille
[niveauUtil] => 1
[valideUtil] => oui
[id_secteur] => 1
[idStock] => 1
[codeSociete] => 24501b
)

Constat, aucun changement correspondant à idUtil 193.

Voilà le formulaire
<div id="popupmu">
<form id="form1" action="requetes/popupmu.php" method="post" enctype="" name="Modifier Utilisateur">
    <fieldset><legend>Coordonnés de l'utilisateur</legend>
           <ol>
              <li><label for="IdUtil">Séléction n°Identifiant</label>
                <input type="text" name="IdUtil" id="IdUtil" placeholder="Permet l'incrémentation" required="true" />
          
        <li><label for="nomUtil" name="nomUtil">Nom </label>
                <input type="text" name="nomUtil" id="nomUtil" placeholder="Nom" required="true" />
          
           <li><label for="prenomUtil">Prénom </label>
                <input type="text" name="prenomUtil" id="prenomUtil" placeholder="Prénom" required="true" />
          
        <li><label for="fonctionUtil">Fonction </label>
                <input type="text" name="fonctionUtil" id="fonctionUtil" placeholder="ex: technicien" required="true" />
                 
              <li><label for="mailUtil">E-mail</label>
                <input type="text" name="mailutil" id="mailutil" placeholder="exemple@domaine.com" required="true" />
                </li>
        <li><label for="telUtil">Téléphone </label>
                <input type="text" name="telUtil" id="telUtil" placeholder="Obligatoire" required="true" />
      
    </fieldset>
        <fieldset><legend> Caractèristiques Utilisateur </legend>
          <ol>
      
                  <li><label for="loginUtil">Login </label>
                <input type="text" name="loginUtil" id="loginUtil" placeholder="Obligatoire" required="true" />
          
           <li><label for="pwdUtil"> Password </label>
                <input type="text" name="pwdUtil" id="pwdUtil" placeholder="Obligatoire" required="true" />   
        
        <li><label for="niveauUtil"> Niveau </label>
                <input type="text" name="niveauUtil" id="niveauUtil" placeholder="" required="true" />
        
        <li><label for="valideUtil"> Validation </label>
                <input type="text" name="valideUtil" id="validationUtil" placeholder="" required="true" />
          
        <li><label for="id_secteur"> Secteur </label>
                <input type="text" name="id_secteur" id="id_secteur" placeholder="" required="true" />
          
        <li><label for="idStock">Stock </label>
                <input type="text" name="idStock" id="idStock" placeholder="" required="true" />
        
        <li><label for="codeSociete"> Code société </label>
                <input type="text" name="codeSociete" id="codeSociete" placeholder="Obligatoire" required="true" />
            </li>
            </ol>
        
        </fieldset>
        <input type="submit" value="CHANGER"  />
        <INPUT TYPE="reset" NAME="nom" VALUE="RAZ">
  </form>
  </div>


L'objectif final, serait de faire un select à partir de l'identifiant util dans le formulaire pour qu'il affiche les valeurs de la ligne dans le formulaire et qu'on puisse modifier ce qu'on souhaites à partir de celui ci. (De quoi ne pas avoir à tout retaper à chaque fois).

Le Print-r fonctionne sinon, il ne semble pas y avoir de prob de se côté là, voilà pourquoi l'intitulé de l'erreur est étonnante d'ailleurs.
0
Utilisateur anonyme
27 juin 2014 à 11:11
Tu vois bien qu'il n'y a pas de idUtil ni de mailUtil dans ton formulaire. Il y a IdUtil et mailutil (fais bien attention aux majuscules / minuscules), ce qui n'est pas la même chose.
0
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017
27 juin 2014 à 11:39
Oh mon dieu, merci grave!
Je n'ai vraiment pas l'oeil avec ce genre de choses, j'ai pas encore d'assurance en php alors ce ne sont pas le genre de choses que je regarde ayant (en plus) crée une dizaine de formulaires (a)...
Avant de mettre résolu je post probablement d'ici quelques minutes mon avancement concernant le remplissage automatique du formulaire.Voyons voir si ça fonctionne ^^
0
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017
27 juin 2014 à 11:59
Mon formulaire réajusté. C'est moche. On ne peux même plus l'ouvrir d'ailleurs.
Dans l'esprit j'aimerais qu'il y a une liste dans le premier input, à la sélection de l'id j'aimerais voir apparaitre mes valeurs dans les cases du formulaire :)

Dans l'esprit, je pense que c'est un peu comme j'ai fais... ensuite, au niveau de la syntaxe je ne vois pas trop comment m'y prendre voyez vous (a).
Il faudrait peut être un <input type="submit"> pour l'id_util? Qu'est ce que vous en pensez ? :)



<div id="popupmu">

<form id="form1" action="requetes/popupmu.php" method="post" enctype="" name="Modifier Utilisateur">
<fieldset><legend>Coordonnés de l'utilisateur</legend>
<ol>
<li><label for="idUtil">Séléction n°Identifiant</label>
<input type="list" name="idUtil" id="idUtil" placeholder="Incrémentation auto s'il s'agit d'un ajout" required="true"
<?php try {
$base = new PDO('mysql:host=localhost; dbname=iplanet', 'root'. '');
}
catch(exception $e) {
die ('Erreur '.$e->getMessage());
}
$base->exec("SET CHARACTER SET utf8");
$retour = $base ->query('SELECT * FROM utilisateur WHERE idUtil= $_POST['idUtil']);');
while ($data = $retour ->fetch()) {
{
echo "<option>".$data['idUtil']."</option>";
}
?>
/>

<li><label for="nomUtil" name="nomUtil">Nom </label>
<input type="text" name="nomUtil" id="nomUtil" placeholder="Nom" value="<?php echo $data['nomUtil']; ?>" required="true" />

<li><label for="prenomUtil">Prénom </label>
<input type="text" name="prenomUtil" id="prenomUtil" placeholder="Prénom" value="<?php echo $data['prenomUtil']; ?>" required="true" />

<li><label for="fonctionUtil">Fonction </label>
<input type="text" name="fonctionUtil" id="fonctionUtil" placeholder="ex: technicien" value="<?php echo $data['fonctionUtil']; ?>"/>

<li><label for="mailUtil">E-mail</label>
<input type="text" name="mailutil" id="mailutil" placeholder="exemple@domaine.com" value="<?php echo $data['mailUtil']; ?>" />
</li>
<li><label for="telUtil">Téléphone </label>
<input type="text" name="telUtil" id="telUtil" placeholder="Obligatoire" value="<?php echo $data['telUtil']; ?>" />

</fieldset>
<fieldset><legend> Caractèristiques Utilisateur </legend>
<ol>

<li><label for="loginUtil">Login </label>
<input type="text" name="loginUtil" id="loginUtil" placeholder="Obligatoire" value="<?php echo $data['loginUtil']; ?>" required="true" />

<li><label for="pwdUtil"> Password </label>
<input type="text" name="pwdUtil" id="pwdUtil" placeholder="Obligatoire" value="<?php echo $data['pwdUtil']; ?>" required="true" />

<li><label for="niveauUtil"> Niveau </label>
<input type="text" name="niveauUtil" id="niveauUtil" placeholder="" value="<?php echo $data['niveauUtil']; ?>" required="true" />

<li><label for="valideUtil"> Validation </label>
<input type="text" name="valideUtil" id="validationUtil" placeholder="" value="<?php echo $data['valideUtil']; ?>" required="true" />

<li><label for="id_secteur"> Secteur </label>
<input type="text" name="id_secteur" id="id_secteur" placeholder="" value="<?php echo $data['id_secteur']; ?>" required="true" />

<li><label for="idStock">Stock </label>
<input type="text" name="idStock" id="idStock" placeholder="" value="<?php echo $data['idStock']; ?>" required="true" />

<li><label for="codeSociete"> Code société </label>
<input type="text" name="codeSociete" id="codeSociete" placeholder="Obligatoire" value="<?php echo $data['codeSociete']; ?>" required="true" />
</li>
</ol>

</fieldset>
<input type="submit" value="CHANGER" />
<INPUT TYPE="reset" NAME="nom" VALUE="RAZ">
</form>
</div>


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
27 juin 2014 à 16:11
On change de sujet, là...
Tu avais un undefined index, tu n'en as plus : sujet résolu, si tu as une autre question à poser, c'est une AUTRE question. Pas la suite de celle-ci.
Ceci étant dit, j'ai quand même jeté un coup d'oeil à ton code. Il y a déjà ça qui me choque :
<input type="list"

Peux-tu me mettre le lien de l'endroit où tu as vu qu'il existait un input de type "list" ? Si tu n'as aucun tel lien peux-tu me dire ce qui t'a amené à écrire ça ?
0
J'experimentais des choses (a). OK si besoin je ferais un autre topic. Merci pour tout.
0
De rien :-)

J'experimentais des choses
Il est totalement inutile d'expérimenter des valeurs d'attributs qui n'existent pas, c'est de la perte de temps à l'état pur. Et tu dois bien le savoir.
Tu devrais avoir un site de référence (pour moi c'est w3schools) pour t'éviter à avoir à "expérimenter" des trucs au pif.
0