- Statut : non résolu
- Ce sujet contient 19 réponses, 3 participants et a été mis à jour pour la dernière fois par
akira159000, le il y a 12 années et 3 mois.
-
AuteurMessages
-
14 janvier 2013 à 23 h 00 min #519281
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
15 janvier 2013 à 9 h 15 min #875122Si 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.15 janvier 2013 à 9 h 21 min #875123Comment 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_IDSi 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.
15 janvier 2013 à 9 h 22 min #875124double réponse 🙂
15 janvier 2013 à 12 h 43 min #875125Merci 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 🙂
15 janvier 2013 à 13 h 21 min #875126La solution serait-elle de remplacerla ligne:
if (isset($user_ID)) { $user_ID = get_current_user_id();
par:
global $user_ID;
het_current_user_id ();15 janvier 2013 à 14 h 07 min #875127je 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?
15 janvier 2013 à 14 h 42 min #875128C’est a dire défini ? (exemple)
15 janvier 2013 à 15 h 10 min #875129par defini tu entends:
$id_de_user =$_POST
ce qui donnerait:
$user_ID = get_current_user_id();
if ( $user_ID) {
$id_de_user=$_POST;
}?
15 janvier 2013 à 16 h 39 min #875130Guy 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?
15 janvier 2013 à 17 h 48 min #875131tout 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 ?)
16 janvier 2013 à 8 h 02 min #875132J’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
16 janvier 2013 à 9 h 23 min #875133fais 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?
16 janvier 2013 à 19 h 53 min #875134Voici 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>16 janvier 2013 à 20 h 59 min #875135je 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.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.