incompréhension $user_ID WP 3.5 (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 20)
  • Auteur
    Messages
  • #519281
    akira159000
    Participant
    Initié WordPress
    13 contributions

    Bonsoir à tous,

    je suis actuellement entrain de coder un petit formulaire pour mes membres en php.
    Je souhaite utiliser la variable $user_ID = get_current_user_id ();

    Je vous explique pourquoi; je souhaiterai que mon formulaire soit remplis après la connexion a mon site, une fois connecter le forumulaire recupere l’ID de l’utilisateurs connecté afin qu’il puisse etre localisé par son ID dans la BDD ainsi les données issues du formulaires pourront etre ajouté à cette utilisateur.

    Voici mon bout de code:

    include (‘fp_db.php’);
    include (‘/wp-includes/user.php’);

    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST) && $_POST == ‘Inscription’) {
    // on teste l’existence de nos variables. On teste également si elles ne sont pas vides
    if (isset($_POST) && (isset($_POST))) {
    // on teste l’existence de la variable id
    if (isset($user_ID)) {
    $user_ID = get_current_user_id();
    // on se connecte a la base
    DB();

    // On ajoute les valeurs filliere et promo a la table en fonction de l’id

    $sql = ‘INSERT INTO nf_users WHERE ID= »‘.$user_ID.' » VALUES(« ‘.$_POST.' », « ‘.$_POST.' »)’;
    $req = mysql_query($sql) or die(‘Erreur SQL !
    ‘.$sql.’
    ‘.mysql_error());
    }
    }
    }
    //On libère la mémoire mobilisée pour cette seconde requête dans SQL
    mysql_free_result ($req);

    //On ferme sql
    mysql_close ();
    ?>

    Vous trouverez en rouge les éléments dont je doute (je rappel je suis novice dans la programmation PHP)

    Pour finir: Lorsque le formulaire ext exécuté aucun message d’erreur cependant rien n’apparait dans la BDD

    #875122
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Si ton formulaire est dans wordpress, a priori les includes ne sont pas nécessaires
    Deuxièmement, je mettrais un nom de variable plus spécifique que $user_ID (un truc genre $this_user_ID pour éviter les risques de conflit)

    ton $sql me parait bon

    pour le débuger si tu as un problème tu peux toujours rajouter un
    echo $sql ; avant $req et vérifier ensuite directement dans phpmyadmin l’exécution correcte de la requête.

    #875123
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Comment est rempli $user_ID, es tu certain que la condition if (isset($user_ID)) peut être remplie.
    Pourquoi reprendre le même nom que le tableau pour une variable ensuite : $user_ID

    Si le php que tu présentes est inclu dans une page wordpress, pas besoin de l’include sur user.php, sinon regarde cela: http://codex.wordpress.org/Integrating_WordPress_with_Your_Website pour le header à inclure.

    #875124
    Guy
    Participant
    Maître WordPress
    14817 contributions

    double réponse 🙂

    #875125
    akira159000
    Participant
    Initié WordPress
    13 contributions

    Merci pour vos réponses !

    voici le code pour recuperer l’id (code que j’ai repris dans un sujet de ce forum…)

    <input type="hidden" name="id" value=" » />

    Il n’est peut etre pas exact, besoin de vos lumières 🙂

    #875126
    akira159000
    Participant
    Initié WordPress
    13 contributions

    La solution serait-elle de remplacerla ligne:

    if (isset($user_ID)) { $user_ID = get_current_user_id();

    par:

    global $user_ID;
    het_current_user_id ();

    #875127
    Guy
    Participant
    Maître WordPress
    14817 contributions

    je ferai plutôt l’inverse

    $user_ID = get_current_user_id();
    if ( $user_ID) {
    bla bla bla…
    }

    Sinon, dans ta ligne <input type="hidden" name="id" value=" » />, le $user_ID était défini?

    #875128
    akira159000
    Participant
    Initié WordPress
    13 contributions

    C’est a dire défini ? (exemple)

    #875129
    akira159000
    Participant
    Initié WordPress
    13 contributions

    par defini tu entends:

    $id_de_user =$_POST

    ce qui donnerait:
    $user_ID = get_current_user_id();
    if ( $user_ID) {
    $id_de_user=$_POST;
    }

    ?

    #875130
    Guy
    Participant
    Maître WordPress
    14817 contributions
    Guy wrote:
    Sinon, dans ta ligne <input type="hidden" name="id" value=" » />, le $user_ID était défini?

    tu te sers d’une variable $user_ID dans cet input, ce $user_ID a t il été défini et est il renseigné avec une valeur valide?

    #875131
    akira159000
    Participant
    Initié WordPress
    13 contributions

    tout le probleme est la ! l’id ne doit pas etre generé par moi mais en fonction du membre…

    C’est l’ID associer au membre issu de la table wp_users

    Il faut que le code preine en compte l’ID afin qu’il insere les nouvelles données (je sais pas si c’est clair ?)

    #875132
    akira159000
    Participant
    Initié WordPress
    13 contributions

    J’ai retravaillé la chose et voila ce que ca donne

    <?php
    include (‘fp_db.php’);
    include (‘wp-load.php’);
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST) && $_POST == ‘Inscription’) {
    // on teste l’existence de nos variables. On teste également si elles ne sont pas vides
    if (isset($_POST) && (isset($_POST))) {
    // On utilise la variable wordpress
    global $current_user;
    get_currentuserinfo();
    $current_user->ID;
    echo’Votre ID d’utilisateur est’ .$current_user->ID;
    }

    // on se connecte a la base
    DB();

    // On ajoute les valeurs filliere et promo a la table en fonction de l’id

    $sql = ‘INSERT INTO nf_users WHERE ID= »‘.$current_user->ID;‘ » VALUES(« ‘.$_POST.' », « ‘.$_POST.' »)’;
    $req = mysql_query($sql) or die(‘Erreur SQL !
    ‘.$sql.’
    ‘.mysql_error());
    }

    //On libère la mémoire mobilisée pour cette seconde requête dans SQL
    mysql_free_result ($req); //Ligne 30

    //On ferme sql
    mysql_close ();
    ?>

    ca devrait fonctionner mais maintenant j’ai un message Warning: mysql_free_result() expects parameter 1 to be resource, null given in /homez.634/notefeed/www/inscription32.php on line 30

    #875133
    Guy
    Participant
    Maître WordPress
    14817 contributions

    fais un isset de $req avant de le liberer. IL n’est pas certain qu’il ait été renseigné.

    Dans la partie en rouge , écrire

    $current_user->ID;

    ne fait absolument rien, c’est inutile.

    Et pour terminer, ton algorithme peut construire une requête sans user défini, c’est ce que tu veux?

    #875134
    akira159000
    Participant
    Initié WordPress
    13 contributions

    Voici le code, si vous avez une piste la je sèche, j’ai fais un include wp-load pour utiliser le current_user afin de recuperer l’ID

    Je sais pas ou ca coince

    ID;' » VALUES(« ‘.$_POST[‘filliere’].' », « ‘.$_POST[‘promo’].' »)’;
    $req = mysql_query($sql) or die(‘Erreur SQL !<br />‘.$sql.’<br />‘.mysql_error());
    }

    if(isset($req)){
    //On libère la mémoire mobilisée pour cette seconde requête dans SQL
    mysql_free_result ($req);

    //On ferme sql
    mysql_close ();
    }
    ?>


    <title>Inscription</title>



    Inscription à l’espace membre :<br />
    <form action="inscription32.php" method="post">
    T’as promo: <input type="text" name="filliere" value=" »><br />
    T’as fillière <input type="text" name="promo" value=" »><br />

    </form>

    #875135
    Guy
    Participant
    Maître WordPress
    14817 contributions

    je ferai quelque chose de ce style

    <?php
    include ('fp_db.php');

    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['inscription'], $_POST['promo'], $_POST['filliere']) && $_POST['inscription'] == 'Inscription') { // on teste l'existence de la variable id
    require_once ('wp-load.php');
    $user_ID = get_current_user_id();
    if ($user_ID != 0) {
    // on se connecte a la base
    DB();
    // On ajoute les valeurs filliere et promo a la table en fonction de l'id
    $sql = 'UPDATE nf_users WHERE ID="'.$user_ID.'" VALUES("'.$_POST['filliere'].'", "'.$_POST['promo'].'")';
    $req = mysql_query($sql) or die('Erreur SQL !<br />‘.$sql.’<br />‘.mysql_error());
    if(isset($req)) mysql_free_result ($req);
    //On ferme sql
    mysql_close ();
    }
    }
    ?>

    je n’ai pas regardé le formulaire, mais c’est quelque chose de classique.

15 sujets de 1 à 15 (sur un total de 20)
  • Vous devez être connecté pour répondre à ce sujet.