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 :

Mise à jour de champ e-mail [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut Mise à jour de champ e-mail
    Bonjour,

    Je voudrais metre à jour un champ email, mais cela ne marche pas.
    J'ai essayer avec les lignes de débuguage mais je ne trouve pas plus. L'une d'elle réécrit la requete masql qui est générée. Si je la teste dans phpmyadmin, cela ne donne pas d'erreur, mais mon champ mail n'est pas plus mis à jour.

    Voici l'export de ma base :

    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
     
    -- Structure de la table `checkbox`
    --
     
    CREATE TABLE IF NOT EXISTS `checkbox` (
      `BoxValue` tinyint(1) default NULL,
      `BoxName` varchar(100) NOT NULL default '',
      `email` varchar(100) NOT NULL default ''
    ) TYPE=MyISAM;
     
    --
    -- Contenu de la table `checkbox`
    --
     
    INSERT INTO `checkbox` (`BoxValue`, `BoxName`, `email`) VALUES
    (1, 'OptOut', 'eert@toto.fr');

    Et voici le script

    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
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <!-- Listing 17-6: checkbox displaying boolean data from database (optout.php) -->
    <?php
     
    // Open connection to the database
    mysql_connect("***", "***", "***") or die("Failure to communicate with database");
    mysql_select_db("***");
     
    // If the form has been submitted, record the preference and redisplay
    if ($_POST['submit'] == 'Submit') {
      $email = $_POST['email'];
      $as_email = addslashes($_POST['email']);
      if (isSet($_POST['OptOut']) && ($_POST['OptOut'] == 1)) {
        $optout = 1;	
      } else {
        $optout = 0;
      } 
     
     
      // Update value
      $query = "UPDATE checkbox
                SET BoxValue = $optout
                WHERE BoxName = 'OptOut'
                AND email = '$as_email'";
    /* Affichage de débuggage */
    echo("<pre>\n");
    var_dump($query);
    echo("</pre>\n");
    /* Fin affichage débuggage */ 
      $result = mysql_query($query  or die("ERR : " . mysql_error() . "<br />SQL : " . $query));
      if (mysql_error() == "") {
        $success_msg = '<P>Your preference has been updated.</P>';
      } else {
        error_log(mysql_error());
    echo mysql_error();
        $success_msg = '<P>Something went wrong.</P>';
      }
      // Get the value
      $query = "SELECT BoxValue FROM checkbox WHERE BoxName = 'OptOut' AND email = '$as_email'";
      /* Affichage de débuggage */
    echo("<pre>\n");
    var_dump($query);
    echo("</pre>\n");
    /* Fin affichage débuggage */ 
      $result = mysql_query($query  or die("ERR : " . mysql_error() . "<br />SQL : " . $query));
      $optout = mysql_result($result, 0, 0);
     
      if ($optout == 0) {
     
        $checked = "";
      } elseif ($optout == 1) {
        $checked = 'CHECKED';
      }
    }
     
     
    // Now display the page
    $thispage = $_SERVER['PHP_SELF']; //Have to do this for heredoc
     
    $form_page = <<< EOFORMPAGE
    <HTML>
    <HEAD>
    <TITLE>Semi-sleazy opt-in form</TITLE>
    </HEAD>
     
    <BODY>
    $success_msg
    <FORM METHOD=POST ACTION="$thispage">
    Email address:  <INPUT TYPE="text" NAME="email" SIZE=25 VALUE="$email"><BR><BR>
    <FONT SIZE=+4>Please send me lots of e-mail bulletins!</FONT><BR>
    <FONT SIZE=-2>opt out by clicking this tiny checkbox</FONT>
    <INPUT TYPE="checkbox"  NAME="OptOut" VALUE=1 $checked><BR><BR>
    <INPUT TYPE="submit" NAME="submit" VALUE="Submit">
    </FORM>
     
    </BODY>
    </HTML>
    EOFORMPAGE;
    echo $form_page;
     
    ?>
    Au premier chargement de la page il n'y a pas d'erreur, mais après la tentative de mise à jour, voici le texte généré dans la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string(116) "UPDATE checkbox
                SET BoxValue = 1
                WHERE BoxName = 'OptOut'
                AND email = 're@fg.fr'"
     
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
     
    string(77) "SELECT BoxValue FROM checkbox WHERE BoxName = 'OptOut' AND email = 're@fg.fr'"
     
     
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /homez.63/eoninter/www/php/optout.php on line 45
     
    Something went wrong.
    Quelqu'un peut-il me dire ce qui se passe ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Verifie que tu as bien un espace avant SET, WHERE et AND dans ton update.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Que veux-tu dire ? pourquoi faut-il un espace ?

    Si tu parles de la fonction elle-même, voici comment elle est écrite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = "UPDATE checkbox
                SET BoxValue = $optout
                WHERE BoxName = 'OptOut'
                AND email = '$as_email'";

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    moi c'est cette ligne que je comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query($query  or die("ERR : " . mysql_error() . "<br />SQL : " . $query));
    ce n'est pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query($query)  or die("ERR : " . mysql_error() . "<br />SQL : " . $query);
    au niveau de la requête, je ne vois aucun probleme.
    Peux tu la tester directement dans MySQL?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = "UPDATE checkbox
                SET BoxValue = $optout
                WHERE BoxName = 'OptOut'
                AND email = '$as_email'";
    Tel que c'est présenté, tu pourrais avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE checkboxSET BoxValue = ...
    par exemple
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    UPDATE checkboxSET BoxValue = ...

    Je ne comprends pas. Où cette ligne s'afficherait-elle ? Elle n'est pas ainsi dans le script.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/03/2009, 12h46
  2. mise à jour de champ monétaire dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/08/2005, 12h49
  3. Mise à jour auto champs date
    Par rodrigue50 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/07/2005, 18h03
  4. mise à jour plusierus champs
    Par bachilbouzouk dans le forum ASP
    Réponses: 12
    Dernier message: 28/04/2005, 12h22
  5. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 11h25

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