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 :

Problème pour l'insertion dans une base de données avec variables $_POST [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mai 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire de données

    Informations forums :
    Inscription : Mai 2011
    Messages : 44
    Points : 31
    Points
    31
    Par défaut Problème pour l'insertion dans une base de données avec variables $_POST
    Bonjour,

    J'ai un petit soucis avec mon script php.

    A partir d'une base de données déjà créée, dans laquelle se trouve notamment 2 tables : identifiant et mail, je dois insérer un nouveau mail dans cette base. Jusqu'ici, ça va ^^

    Avant toute chose, je dois ouvrir une session avec mes identifiants, présents dans la table 'identification'. Une fois connecté, je souhaite ajouter une adresse mail dans ma table 'mail' pour moi uniquement. Et c'est là que réside mon problème.

    Mon script est le suivant :

    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
    <?php
    session_start();
    $nom = $_SESSION['nom'] ;
    $prenom = $_SESSION['prenom'] ;
     
    require("utilitaire.php");
     
    $connexion = connexion() ;
     
    debutpagehtml("Ajout d'une nouvelle adresse mail") ;
    affichemenu();
    affichesession($nom, $prenom);
    affichetitre("Ajouter un mail à votre identifiant", 1, "center") ;
     
    $requete=mysql_query("SELECT adresse FROM identification, mail WHERE mail.id_etudiant=identification.id and prenom='$prenom' and nom='$nom'");
    $mail=mysql_result($requete, 0);
    echo "<FORM action='ajouteMails.php' method='post'>
    <TABLE align='center' border='1'>
    <TR><TD colspan=3 align='left'><B><FONT color='#00BFFF'>Mail actuel : </FONT></B>$mail</TD></TR>
    <TR><TD align='left'><B><FONT color='#00BFFF'>Nouveau mail :</FONT></B></TD><TD><INPUT type='text' name='email'></TD><TD><BR><INPUT type='submit' value='ajouter'></TD></TR>
    </TABLE>
    </FORM>";
     
    $req = "SELECT nom, prenom, id_etudiant FROM mail, identification WHERE mail.id_etudiant= identification.id and prenom='$prenom' and nom='$nom'" ;
    $res = mysql_query($req) ;
    while($ligne = mysql_fetch_object($res))
        {
    	$id_etudiant=$ligne->id_etudiant;
    	$nom=$ligne->nom;
    	$prenom=$ligne->prenom;
    	}
     
    if (isset($nom) AND (isset($prenom))){
    	 $reqinsert='INSERT INTO mail (id_etudiant,adresse) VALUES ("'.$id_etudiant.'","'.$_POST['email'].'")'; <= ligne 34
    	 mysql_query ($reqinsert) or die ('Erreur SQL !'.$reqinsert.'<br />'.mysql_error());
    	 mysql_close();
    	 echo "Nouveau mail ajouté";}
    else
    	{echo "Echec de l'ajout";}
     
    mysql_close($connexion) ;
    finpagehtml()
    ?>
    Lorsque j'exécute le script, le message suivant s'affiche : "Notice: Undefined index: email in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\ajouteMails.php on line 34
    Nouveau mail ajouté " Ce qui semble logique puisque dans mon input je n'ai pas encore préciser la nouvelle adresse mail.
    Je l'ajoute donc, ça me met "Nouveau mail ajouté". C'est donc ce que je veux.

    Le problème, c'est que quand je me connecte à ma base, 2 ajouts sont effectués : le premier, qui prend mon identifiant mais rien pour la nouvelle adresse (normal puisque pas renseigné) ; le second, qui prend cette fois-ci exactement ce que je veux (c'est-à-dire identifiant + mail).

    Pourquoi est ce qu'il fait un insert dans ma base avant même que je lui renseigne mon nouveau mail ?

    Merci à vous de prendre le temps sur cette question, et soyez cléments, je débute en php

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par hakkio Voir le message
    Pourquoi est ce qu'il fait un insert dans ma base avant même que je lui renseigne mon nouveau mail ?
    Salut,

    je pense que c'est parce que tu tente l'insert même quand le formulaire n'a pas été posté, essaye comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (isset($_POST['email'])) {
        if (isset($nom) && isset($prenom) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) != false){
    	 $reqinsert='INSERT INTO mail (id_etudiant,adresse) VALUES ("'.$id_etudiant.'","'.$_POST['email'].'")';
    	 mysql_query ($reqinsert) or die ('Erreur SQL !'.$reqinsert.'<br />'.mysql_error());
    	 mysql_close();
    	 echo "Nouveau mail ajouté";}
        else
    	{echo "Echec de l'ajout";}
    }
    Le filter var permet de vérifier que la synthaxe du mail est valide

  3. #3
    Nouveau membre du Club
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mai 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire de données

    Informations forums :
    Inscription : Mai 2011
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Merci ça marche nickel

    J'avais pas pensé à vérifier que ma variable $_POST['email'] existait. Ca semblait pourtant logique ^^

    Merci encore

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

Discussions similaires

  1. Problème d'insertion dans une base de données
    Par Boom Boom dans le forum JDBC
    Réponses: 4
    Dernier message: 14/03/2012, 21h54
  2. Réponses: 5
    Dernier message: 10/06/2010, 16h45
  3. Réponses: 2
    Dernier message: 05/05/2010, 17h01
  4. Problème d'insertion dans une base de donnèes
    Par atout dans le forum Administration
    Réponses: 14
    Dernier message: 27/12/2006, 07h07
  5. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13

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