PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 18-09-2016 10:52:19

cost
Membre
Inscription : 18-09-2016
Messages : 1

update une BDD avec variable

Bonjour à tous,

J'ai tenté de nombreuses syntaxes en cherchant sur différents forums mais sans succès...

MON PROBLEME :

j ai un formulaire avec des données utilisateurs (nom, prenom...).

Je n'arrive pas à les modifier par les valeurs entrées par l'utilisateur

Mon code pour le formulaire :

<section id="content">
 
        <?php
     $ServerConn = mysqli_connect("localhost","root","","bdd");
 
   
   if  (!$ServerConn) {
    echo ('La Connexion au serveur impossible !!!! non execute-->');
    exit;
   }
         
 
   $Requete='SELECT * FROM membres WHERE email="'.$_SESSION['email'].'" ';
 
 
 
  $Result = $ServerConn->query($Requete);
 
 
     if  (!$Result) {
     echo ('Requete Invalide!!');
       exit ;
   }
 
    while ($data = mysqli_fetch_array($Result)) {
   
      $id=$data['id'];
      $nom=$data['nom'];
      $prenom=$data['prenom'];
      $telephone=$data['telephone'];
      $email=$data['email'];
      $mdp=$data['mdp'];
      $date_de_naissance=$data['date_de_naissance'];
      $adresse_principale=$data['adresse_principale'];      
    }
 
 
 
?>
 
 
<FORM method="POST" action="modifier_mon_profil.php" enctype="multipart/form-data">
 
<div class="table-wrapper">
                  <table class="alt">
 
                    <tbody>
                      <tr>
                        <td>Nom</td>
                        <td> <input type="text" name="nom" id="nom" <?php echo 'value ="'.$nom.'"'; ?> placeholder="Nom"   /> </td>
                       
                      </tr>
                      <tr>
                        <td>Prénom</td>
                        <td> <input type="text" name="prenom" id="prenom" <?php echo 'value ="'.$prenom.'"'; ?> placeholder="Prenom" /></td>
                       
                      </tr>
                      <tr>
                        <td>Téléphone</td>
                        <td> <input type="text" name="tel" id="tel" <?php echo 'value ="'.$telephone.'"'; ?> placeholder="tel" /> </td>
                        <tr>
                        <td>Email</td>
                        <td> <input type="email" name="email" id="email" <?php echo 'value ="'.$email.'"'; ?> placeholder="Email" /> </td>
                       
                      </tr>
                      <tr>
                        <td>Mot de Passe</td>
                        <td> <input type="text" name="mdp" id="mdp" <?php echo 'value ="'.$mdp.'"'; ?> placeholder="mdp" /></td>
                       
                      </tr>
                      <tr>
                        <td>Date de Naissance</td>
                        <td> <input type="text" name="date_de_naissance" id="date_de_naissance" <?php echo 'value ="'.$date_de_naissance.'"'; ?> placeholder="date de naissance" /> </td>
                        <tr>
                        <td>Adresse</td>
                        <td>   <input type="text" name="adresse_principale" id="searchTextField" <?php echo 'value ="'.$adresse_principale.'"'; ?> placeholder="adresse principale" /> </td>
                       
                      </tr>
                     
                     
                     
                    </tbody>
     
                  </table>
 </div>
 
 
  <ul class="actions">
                        <li><input type="submit" value="Modifier" class="special" /></li>
                      </ul>
 
            </form>    
 
 
     
                </section>

A partir de ce formulaire, l'utilisateur peut modifier les données puis cliquer sur le bouton "Modifier" pour mettre à jour les données.

Le bouton "Modifier" reconduit vers ce code :

$ServerConn = mysqli_connect("localhost","root","","bdd");
   
   if  (!$ServerConn) {
    echo ('La Connexion au serveur impossible !!!! non execute-->');
    exit;
   }
//Recuperer les données de la  BDD ? Get.. pour pouvoir les exploiter ?
 
 
 $Requete='SELECT * FROM membres WHERE email="'.$_SESSION['email'].'" ';
 $Result = $ServerConn->query($Requete);
 
     if  (!$Result) {
     echo ('Requete Invalide!!');
       exit ;
   }
 
    while ($data = mysqli_fetch_array($Result)) {
   
      $id=$data['id'];
      $nom=$data['nom'];
      $prenom=$data['prenom'];
      $telephone=$data['telephone'];
      $email=$data['email'];
      $mdp=$data['mdp'];
      $date_de_naissance=$data['date_de_naissance'];
      $adresse_principale=$data['adresse_principale'];      
    }
 
 
//$requete = mysql_query('UPDATE membres SET nom ="' . $nom . '" WHERE email="'.$_SESSION['email'].'"') or die(mysql_error());
 
 
$sql = "UPDATE membres SET nom = 'Nom modifié par l'utilisateur, prenom = 'prenom modifié par l'utilisateur WHERE id = '$id' ";
 
 
 
if ($ServerConn->query($sql) === TRUE) {
    echo "Record updated successfully";
    header ('Location: mon_profil.php');
} else {
    echo "Error updating record: " . $ServerConn->error;
}
 
$ServerConn->close();

C'est à ce niveau que je bloque :

1
$sql = "UPDATE membres SET nom = 'Nom modifié par l'utilisateur', prenom = 'prenom modifié par l'utilisateur' WHERE id = '$id' ";
Au lieu de 'Nom modifié par l'utilisateur' je voudrais mettre ce qu'a entré l'utilisateur dans le formulaire ;-)



Comme je l'ai dit, j ai utilisé de nombreuses syntaxes (par ex : nom ="'. $nom. '" ...) mais sans jamais y parvenir

Si vous avez possibilité de m'aiguiller ce serait top (je suis dessus depuis plus d'une semaine j'avoue que j'aimerais passer à autre chose ;-) )

Bon dimanche !

PS : Je me demande s'il faudrait pas que je crée des nouvelle variable après le formulaire du genre :

$nouveaunom = $nom ;

où $nom serait la valeur écrite par l'utilisateur et du coup récupérer "$nouveaunom" pour update ma bdd.

cela vous semble t il correct ?

par dans la maniere de l'ecrire, je n'ai pas trop d'idée :-/


Hors ligne

#2 19-09-2016 13:50:27

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 190
Site Web

Re : update une BDD avec variable

Bonjour,

Le formulaire étant soumis avec la méthode POST, les informations qu'il contient sont logiquement dans le tableau $_POST.

Ainsi, un echo de $_POST['nom'] devrait te confirmer que celui ci contient le nom que tu veux dans le update.

Attention cependant, ces valeurs viennent de l'utilisateur, il faut donc s'en méfiier et les vérifier / sécuriser. Sinon un petit malin va mettre comme nom un truc du genre moi'; DROP DATABASE....; et paf, y'a plus de bdd !

A noter également que d'un point de vue optimisation, le while n'est pas nécessaire (à priori le select ne retourne qu'un utilisateur, enfin j'espère !), $data = mysqli_fetch_array($Result); serait suffisant, de même que les nombreuses variables créées dans le while ne sont pas nécessaire, on peut directement utiliser le $data, exemple :


<td> <input type="text" name="nom" id="nom" <?php echo 'value ="'.$data['nom'].'"'; ?> placeholder="Nom"   /> </td>
 

Ok, je chipote, mais chipote + chipote + chipote = site plus rapide (surtout si on a ce genre de choses dans un boucle, un simple appel a une fonction sur 2000 ou 3000 tours, ça peut faire des gros morceaux de secondes smile

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#3 19-09-2016 18:09:31

tof73
Membre
Inscription : 21-12-2014
Messages : 112
Site Web

Re : update une BDD avec variable

je vais chipoter aussi, mysql n'exécute pas plusieurs requetes qui sont à la suite, à l'inverse d'autre moteur de bdd.

Hors ligne

#4 20-09-2016 11:06:12

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 190
Site Web

Re : update une BDD avec variable

tof73 a écrit :

je vais chipoter aussi, mysql n'exécute pas plusieurs requetes qui sont à la suite, à l'inverse d'autre moteur de bdd.

Chipotons alors smile

En l'occurence si, mysql exécute très bien plusieurs requêtes à la suite, le séparateur étant ; un simple test en ligne de commande fonctionne très bien

Par contre il est vrai que les fonctions mysql/mysqli de php ne supportent à priori pas cette syntaxe, mon raccourci était un peu rapide. Reste que les injections SQL sont loin d'être une illusion, il faut s'en protéger....

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

Pied de page des forums