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

[Résolu/Fermé]
Signaler
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
-
 Utilisateur anonyme -
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é

5 réponses


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 ?
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017

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.

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.
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017

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 ^^
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017

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>



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 ?
J'experimentais des choses (a). OK si besoin je ferais un autre topic. Merci pour tout.
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.