IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modifier un enregistrement [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Modifier un enregistrement
    Bonjour,

    objectif du code de ma page : donner la possibilité à l'utilisateur de modifier son adresse mail.
    Je rencontre 2 problèmes :
    Mon premier souci est que je voudrai afficher un message si je ne trouve pas l'adresse indiquée.
    Mon deuxième souci est que je n'arrive pas à modifier l'enregistrement.

    Le code de ma page :

    Code php : 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
    <?php
    //partie pour modification adresse mail
    if (isset($_POST['id']))			$id = $_POST['id'];
    else $id = "";
    if (isset($_POST['mail_origine']))		$mail_origine = $_POST['mail_origine'];
    else $mail_origine = "";
    if (isset($_POST['mail_new']))			$mail_new = $_POST['mail_new'];
    else $mail_new = "";
    if (isset($_POST['mail_new1']))			$mail_new1 = $_POST['mail_new1'];
    else $mail_new1 = "";
     
    if (!empty($mail_new) && !empty($mail_new1)){
    	if ($mail_new <> $mail_new1){
    		$message = "Les adresses internet ne correspondent pas. Merci de recommencer.";
    	}
    } 
    if (!empty($_POST['mail_new'])){
    	$adresse_mail=htmlentities($_POST['mail_new']);
    	if(!VerifierAdresseMail($adresse_mail)){
      		$message = "L'adresse internet n'est pas valide";
    	}
    }
    if (isset($_POST['effacer'])){
    	$mail_new = "";
    	$mail_new1 = "";
    }
    if (isset($_POST['enregistrer'])){
    	if (empty($message)){
    		modifier_membre($mail);	
    		$message1 = "Votre adresse mail a bien été modifiée";
    	}
    }
    ?>
    <br><br>
    <FORM NAME="modifier_mail" ACTION="index.php?page=devenir_membre" METHOD="post">
    	<table border="0px" style="margin-left:45px">
    		<tr height="35px">
    			<td width="350px">Pour modifier votre adresse internet, indiquer <br>votre adresse internet actuelle puis valider </td>
    			<td width="250px"><INPUT type="text" value="<?php echo $mail_origine; ?>" name="mail_origine" size="30"></td>
    			<td width="100px"><input name="valider" type="image" value="submit" src="images/valider.png"></td>
    		</tr>
    		<tr height="35px"><td colspan = 2 >
    			<?php 
    			if (isset($_POST['valider'])){
    				if (!empty($mail_origine)){
    					$result = mysql_query("SELECT * FROM membres WHERE mail = '$mail_origine'");
    					$row = mysql_fetch_row($result);?>
    					<span style="color:blue"> Si vous êtes bien <span style= "font-weight: bold"><?php echo $row[3]; echo " ";
    					echo  $row[2];?> </span> ,modifiez votre adresse ci-dessous, puis valider.</span> 
    					<input type="text" name="id" value="<?php echo $row[0];?>"><?php
    						}
    					}?> </td>
     
    		<tr height="35px"><td >Indiquer votre nouvelle adresse internet</td>
    				<td width="250px"><INPUT type="text" value="<?php echo $mail_new; ?>" name="mail_new" size="30"></td>
    		</tr>			
    		<tr height="35px"><td>Confirmer votre nouvelle adresse internet</td>
    				<td width="250px"><INPUT type="text" value="<?php echo $mail_new1; ?>" name="mail_new1" size="30"></td>
    		</tr>
    		<tr height="35px">
    			<td align="center"><input name="effacer" src="images/annuler.png" value="submit" type="image" alt=""></td>
    			<td align="center" id="menu"><input name="enregistrer" src="images/enregistrer.png" value="submit" type="image" alt="" ></td>
    		</tr>		
    	</table>
    </form>
    <?php
    echo "<p style='margin-left:165px; color:red'>$message </p>";
    echo "<p style='margin-left:165px; color:blue'>$message1 </p>";
    $message = "";
    $message1 = "";
    ?>

    La requête qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Modifier une adresse mail
    function modifier_membre($mail){
    	$sql = "UPDATE membres SET mail = '$mail_new' WHERE id = $id";
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }
    J'obtiens les messages suivants :
    Notice: Undefined variable: mail_new in C:\Weblocal\Sites\association-culturelle\fonctionsphp.php on line 26

    Notice: Undefined variable: id in C:\Weblocal\Sites\association-culturelle\fonctionsphp.php on line 26
    Erreur SQL !UPDATE membres SET mail = '' WHERE id =
    Erreur de syntaxe près de '' à la ligne 1
    Il y a bien longtemps que je n'ai pas travaillé sur les BDD !! Merci de votre indulgence
    Et merci pour aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/
    Citation Envoyé par philippef Voir le message
    Il y a bien longtemps que je n'ai pas travaillé sur les BDD !!
    Ca, je veux bien te croire...
    Le code est obsolète sur plusieurs points :
    • utilisation de <table> pour de la mise en page (ce n'est pas fait pour ça !)
    • utilisation de mysql_ (OBSOLETE ! il faut maintenant utiliser mysqli_ ou PDO) -> Choisir une API


    2/
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Modifier une adresse mail
    function modifier_membre($mail){
    	$sql = "UPDATE membres SET mail = '$mail_new' WHERE id = $id";
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }
    $id n'est pas défini dans la fonction.
    $mail_new non plus d'ailleurs !

    De plus, AUCUNE PROTECTION SQL !
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Modifier une adresse mail
    function modifier_membre($id, $mail){
    	$sql = "UPDATE membres SET mail = '".mysql_real_escape_string($mail)."' WHERE id = '".mysql_real_escape_string($id)."'";
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }
    N.B. Avec mysqli_ ou PDO, on utilise des requêtes préparées pour protéger la BdD des injections SQL.

    3/ GESTION D'ERREUR : on peut utiliser les filtres de validation pour les email (entre autres) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!empty($_POST['mail_new'])){
    	$adresse_mail=htmlentities($_POST['mail_new']); // htmlentities N'A AUCUNE UTILITE ICI
    	if(!VerifierAdresseMail($adresse_mail)){
      		$message = "L'adresse internet n'est pas valide";
    	}
    }
    (et tant qu'à créer des variables, autant les utiliser)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( !empty($mail_new) && !filter_var($mail_new, FILTER_VALIDATE_EMAIL) )
    {
      		$message = "L'adresse internet n'est pas valide";
    }
    Dernière modification par Invité ; 05/10/2015 à 09h26.

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci pour la réponse.
    L'enregistrement est bien modifié.
    Je n'arrive pas à placer un message si l'adresse d'origine est correcte mais qu'elle ne figure pas dans la table.

    pour être bien clair :
    - adresse enregistrée à l'origine : monadresse@orange.fr
    - nouvelle adresse enregistrée : manouvelleadresse@gmail.fr

    si maintenant j'écris dans l'input texte que j'appelle "$mail_origine" : monadresse@orange.fr je voudrais un message : "Adresse inexistante" puisqu'elle a été remplacée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    			if (isset($_POST['valider'])){
    				if (!empty($mail_origine)){
    					$result = mysql_query("SELECT * FROM membres WHERE mail = '$mail_origine'");
    					$row = mysql_fetch_row($result);
     //si l'adresse n'est pas trouvée, mettre un message
    					?>
    					<span style="color:blue"> Si vous êtes bien <span style= "font-weight: bold"><?php echo $row[3]; echo " ";
    					echo  $row[2];?> </span> ,modifiez votre adresse ci-dessous, puis valider.</span> 
    					<input type="text" name="id" value="<?php echo $row[0];?>"><?php
    				}
    			}?>
    je reviendrai après sur "l'histoire" de l'utilisation des tables

  4. #4
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai cherché et ... j'ai trouvé

    Je reviens sur l'utilisation des tables.
    quels conseils me donner vous pour placer ce dont j'ai besoin sur une page !!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Les balises <table> servent pour afficher des données... tabulaires.

    Pour la mise en page :

    Plus spécifiquement :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/03/2006, 12h19
  2. Réponses: 7
    Dernier message: 29/11/2005, 11h07
  3. [MySQL] Un formulaire pour afficher et modifier un enregistrement
    Par Atchoum_002 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/09/2005, 14h13
  4. Réponses: 11
    Dernier message: 30/08/2005, 09h31
  5. Modifier un enregistrement.
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 17
    Dernier message: 26/08/2005, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo