Passage de variables via formulaire

jnkfou Messages postés 5 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 27 octobre 2011 - 25 oct. 2011 à 10:42
jnkfou Messages postés 5 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 27 octobre 2011 - 27 oct. 2011 à 03:54
Bonjour,
je suis en train de creer une page qui permettrais de modifier le profil de l'utilisateur (c'est a partir un d'un blog wordpress que j'ai modifie afin de paraitre a un site internet plus classique.

J'ai donc fait un formulaire qui permet de modifier ces valeurs mais je n'arrive pas a faire passer ces variables sur la page definie dans action de mon formulaire:

voici la page avec mon formulaire:
Edit my Profile


<form id="edit" method="post" action="//localhost/wordpresstest/test_to_remove.php" >
<label for="username">Username :</label>,
user_login?>" disabled="disabled" size="40" maxlength="10" />
(the user name can't be changed),

----

<label for="firstname">First Name :</label>,
,

----

<label for="lastname">Last Name :</label>,
,

----

<label for="email">Email :</label>,
user_email?>" size="40" maxlength="40" />





</form>



et la page test_to_remove.php
<?php
 echo test1;
  //récupération des valeurs des champs:
if (isset($_POST['username'])){
$username     = $_POST['username'] ;
echo BRAVO;
} else{
echo 'pas de username';
}
  $firstname    = $_POST["firstname"] ;

  $lastname     = $_POST["lastname"] ;

  $email        = $_POST["emai"] ; 
echo $username;  
echo test2;

  //connection au serveur:
  $cnx = mysql_connect( "localhost", "root", "octis" ) ;
 
  //sélection de la base de données:
  $db = mysql_select_db( "octiswordpress" ) ;
 
  //création de la requête SQL:
  $sql = "UPDATE wp_users SET user_firstname='STEPHANE', user_lastname='$lastname', user_email='$email' WHERE user_login='$username'" ; 
   //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("La modif a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>


Il y a pas mal d'echo afin de voir ce qui n'allait pas, lorsque je submit le formulaire, je ne rentre pas dans ma boucle isset($_POST['username']
(je n'ai fait que le isset pour username afin de tester...)

Mon code doit etre assez moche Je suis assez debutant dans tout ce qui est php et sql donc je code tres maladroitement en essayant d'arriver a mon resultat. Je galere pas mal, si quelqu'un a une petite aide a m'apporter je lui en serait tres reconnaissant. Je suis assez debut dans tout ce qui est php

8 réponses

cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011
25 oct. 2011 à 11:34
Chalute,

Bon voilà ma petite contribution.

Fait le même test pour le firstname oule lastname ... juste pour voir un truc du genre:
<?php
   echo (!empty($_POST['firstname'])) ? $_POST['firstname'] : "Bon ba problème :)";
?>


Maintenant dans ton formulaire:

user_login?>"
disabled="disabled" size="40" maxlength="10" />

Où est definie la fonction <?php echo wp_get_current_user()->user_login?> ?

Dailleurs ce code me semble très bizarre car une function qui instancie une class et appele directement une variable n'est pas la facon la plus simple de faire pour un novice.

Pour test; met des valeur des firstname lastname et dans la page php fait des tests sur les posts pour voir si tu recoit des valeurs.

Soit ta fonction dans le username a une erreur, soit regarde la page blannche que tu as dans test_to_remove.php pour voir s'il nya pas d'erreur dans le CODE SOURCE de cette page.

Bon courage.
0
jnkfou Messages postés 5 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 27 octobre 2011
25 oct. 2011 à 11:45
J'ai essaye ce que tu m'a dis, et effectivement ca m'affiche bien le firstname (desole je pensais avoir teste ou alors c'etait avec l'email mais c'est bien idiot vu que c'est pareil que username hehe)

je suppose donc que c'est bien un soucis avec get_current_user! (c'est une fonction WordPress que j'ai deja utilise dans d'autres pages, je vais donc revoir cela!)

Neanmoins, ca ne m'a pas ajoute les donnees dans la base. Normal... je n'ai pas reccupere le user_login!

Merci pour ta reponse! Vous saurez vite si j'ai reussi
0
cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011
25 oct. 2011 à 12:04
Pour le deboggage un conseil (ou plusieurs lol)

fait des var_dump($ma_var) a tout va dès qu'un truc cloche.
si tu a une erreur sql fait un echo de ta requete du genre echo $query; tu prend cette requette et l'essaie dans un dbms (phpmyadmin ou autre) et voit si tu as un retour.
Si oui donc ta requete est bonne et ton erreur vient après.

Si non bon ba cherche l'erreur dans ta requete.

en gros faites des echos/var_dump() dès qu'un truc ne tourne pas rond :)
0
jnkfou Messages postés 5 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 27 octobre 2011
25 oct. 2011 à 12:36
Bon en fait le get_current_user fonctionne puisque lorsque je met un
<?php echo wp_get_current_user()->user_login; ?>

dans ma page, ca m'affiche bien le username, et en plus, dans la case text de mon input username
user_login?>" disabled="disabled" size="40" maxlength="10" />


j'ai aussi le username qui s'affiche..

Je sais plus trop quoi faire...

si j'utilise ca: $_POST['username'], username ne doit pas forcement etre une colonne de ma base de donnee?? j'ai essaye de remplacer les username par des user_login (nom de ma colonne dans ma bdd) mais bizarrement ca ne m'affiche plus rien dans ma zone de texte input...

Ba etrangement je viens de refaire le test en mettant aussi l'email, et l'email passe...

Desole, j'ecris mon post et je teste meme temps que me viennent les idees
Le fait que le input:username soit en mode disabled aparement fait que la variable ne passe pas dans test_to_remove.php! (je viens de verifier... en enlevant le disabled ca marche...)

Mais du coup, il y a un autre moyen pour empecher l'utilisateur de modifier (j'aimerais garder la zone un peu opaque, style non modifiable et pas juste printer le username en disant que c'est pas modifable... Je dois plus etre tres clair...)

Bref si quelqu'un a une petite idee!
(merci encore nemo_1)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jnkfou Messages postés 5 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 27 octobre 2011
25 oct. 2011 à 12:43
Du coup oui ca marche, et ca modifie bien la bdd juste que le username est modifiable...
Merci pour le echo $query, j'y avais pas pense et c'est plus pratique!
0
cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011
25 oct. 2011 à 13:39
Salut,

Met un

Tu peux mettre le type en hidden/readonly comme tu veux.

L'utilisateur ne le vera pas sur son formulaire et ne pourra pas le modifier.

Mais encore une fois, tout ce qui se passe coté client, le client peux le modifier donc gaffe.

Tu peux avoir le login du client sans le mettre dans un input:

tu met dans test_to_remove.php

$login = wp_get_current_user()->user_login;

J'ai pas penser au disabled mais tu as raison, le post ne get pas un input en mode disabled (j'ai appris 2 choses avec toi aujourd'hui lol)

Ce qui est bien avant même de commencer à coder, fait toi un petit dessin de tes pages et des différentes communications situationnelles.

Tu veras si tu as besoin de passer tel ou tel info si c'est primordial ou pas et après tu code.

Tu as toujours besoin d'un blueprint (croquis schema diagramme ...) de ton interface avant de commencer à coder cela te facilite grandement la tache.

C'est comme si tu construisait ta maison et à la fin tu te dit pourquoi pas mettre les toilettes labas :).

Bon courage.
0
cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011
25 oct. 2011 à 13:46
Looool, mes 2 phrases sont totalement contradictoires :)

L'utilisateur ne le vera pas sur son formulaire et ne pourra pas le modifier.

Mais encore une fois, tout ce qui se passe coté client, le client peux le modifier donc gaffe.

En gros il peut le modifier avec un minimum de connaissance donc evite celà si tu le peux :)
0
jnkfou Messages postés 5 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 27 octobre 2011
27 oct. 2011 à 03:54
Okok, merci beaucoup pour ton aide en tout cas et mon petit formulaire commence a fonctionner. J'ai rencontrer un nouveau petit probleme, c'est que si un utilisateur essaie d'acceder a ma page test_to_remove.php directement par la barre d'URL sans passer par la page avec le formulaire... Du coup la requete se fait avec les champs vides et vide la base de donnee lol.

Le meilleur moyen est-il d'executer la requete si et seulement si les champs ne sont pas vides? ou il y a un moyen aussi d'empecher un utilisateur d'acceder a la page par url et seulement par le passage par le submit?

Merci d'avance!
0