speedy74 Posté 25 Juillet 2005 Posté 25 Juillet 2005 Bonjour, j'ai créer un annuaire sur mon site que j'interroge par php sur ma base de données... la aucun pb ça marche super. Sur cet annuaire.php j'ai insérer dans la code echo ou s'affiche le nom ($n) : <a href=form.php?name=$n>$n</a> Dans form.php, on retrouve la variable : $choix = $_GET['nom']; // Exécution de la requête SQL et mise en page $requete1 = "SELECT $n,$p,$a1,$a2,$c,$v,$tf,$tp,$b,$e FROM annuaire WHERE nom = '$choix'"; ..... et dans echo : <tr> <td valign=top width=200>Nom - Prénom :</td> <td height=30 valign=top width=350>$n $p</td> </tr> <tr> <td valign=top>Naissance (jj/mm/aaaa) :</td> <td><form method=post action=post.php> <input name='birth' type=text size=10 maxlength=10 value='$b'> </form></td> </tr> ..... Grace à ça, quand le membre clic sur son nom, ces données s'affichent dans le formulaire afin de les modifier. Le problème maintenant vient de post.php : // Récupération des données du formulaire $b = $_POST['birth']; $a1 = $_POST['adresse1']; $a2 = $_POST['adresse2']; $c = $_POST['cp']; $v = $_POST['ville']; $tf = $_POST['telfix']; $tp = $_POST['telport']; $e = $_POST['email']; // Connexion à la base de donnée ça marche // Création de la requête SQL $requete = "UPDATE annuaire SET telfix='$tf' WHERE nom='AUBERT"; mysql_query($requete); echo "<html> <body> <div align=center>Vos coordonnées ont été mises à jour !</div> </body> </html>"; Ici dans la requête SQL j'ai simplifié au max pour que ça marche en spécifiant même le nom de la personne. Mais quand je clic sur Envoyer, il se connecte bien à la base de donnée mais remplace le champ par un vide obligatoirement (même s'il y avait quelque chose avant)... la je comprends pas !??? Détail : si par contre je remplace $tf par le numéro de tel et bien ça marche super. Je pense donc qu'il s'agit d'un pb de variable définit dans la partie echo du formulaire. Merci pour votre aide et n'hésitez pas à demander des renseignements complémentaires
rat-du-net Posté 25 Juillet 2005 Posté 25 Juillet 2005 quand tu fais un echo $tf et un echo de $requete juste avant de faire la requete, il affiche quoi ?
speedy74 Posté 25 Juillet 2005 Auteur Posté 25 Juillet 2005 et bien rien c'est la le problème.... J'ai modifié un peu le script pour qu'il prenne en compte le nom grâce à GET. La par contre ça marche quand je fait echo $choix. En fait je me demande s'il prend bien en compte les variables que j'ai fixé qui sont dans echo du formulaire.... $choix = $_GET['name']; $b = $_POST['birth']; $a1 = $_POST['adresse1']; $a2 = $_POST['adresse2']; $c = $_POST['cp']; $v = $_POST['ville']; $tf = $_POST['telfix']; $tp = $_POST['telport']; $e = $_POST['email']; // Connexion à la base de donnée require("connexion.php"); // Création de la requête SQL $requete = "UPDATE annuaire SET telfix='$tf' WHERE nom='$choix'"; mysql_query($requete); une petite idée pour qu'ils prennent en compte ces variables... !?
Sarc Posté 25 Juillet 2005 Posté 25 Juillet 2005 Hum... Ton formulaire n'a pas l'air juste, c'est là ton erreur je crois <form method=post action=post.php><input name='birth' type=text size=10 maxlength=10 value='$b'></form> Si tu fais plusieurs formulaires à chaque fois avec un seul truc demandé, il ne prendra que celui avec le bouton submit, donc tu n'auras aucune valeur ! Fais un seul formulaire avec tout dedans... Et n'utilise pas de tableaux , le CSS est ton ami..
speedy74 Posté 25 Juillet 2005 Auteur Posté 25 Juillet 2005 ok c'était pour simplifier la mise en page mais je vais essayer avec un seul formulaire... je croise les doigts !
Sarc Posté 25 Juillet 2005 Posté 25 Juillet 2005 Tu simplifies pas la mise en page, tu fais un truc faux, avec plusieurs formulaies aucune donnée n'est envoyée sur la page d'après
speedy74 Posté 25 Juillet 2005 Auteur Posté 25 Juillet 2005 merci sarc ! après deux jours de galère, je peux enfin crier victoire !! soulagement... merci encore ! me reste plus que la mise en page, mais c'est une broutille...
speedy74 Posté 25 Juillet 2005 Auteur Posté 25 Juillet 2005 juste une dernière question : comment je faits pour que le message de echo dans post.php s'affiche sur la même page que le formulaire, ie en remplacement de celle-ci. Merci
Portekoi Posté 25 Juillet 2005 Posté 25 Juillet 2005 Tu fais ton traitement au dessus de ton formulaire. Par exemple, ce que je fais souvent, je rajoute un champ de type 'HIDDEN' ayant pour nom 'action' et valeur 'ajout' par exemple. En haut de mon code, après mes includes, je fais : if($action=="ajout") { //Mon traitement ici } Dans mon traitement, j'implémente une variable "erreur" ($erreur tout simplement) comme ceci : s'il y a erreur sur le login alors tu fais ca : $erreur = $erreur . "_login" Ensuite, je n'ai plus qu'à faire un test du style : Si la chaine 'login' ce trouve dans ma variable erreur, alors tu affiches un message d'erreur pour le login... Et pareil pour tous les autres champs En epsérant avoir été assez clair Portekoi
speedy74 Posté 25 Juillet 2005 Auteur Posté 25 Juillet 2005 eu... ouai.... En fait vu la modif que j'ai fait avec les tables pour que la fonction UPDATE fonctionne, j'ai changé un peu la structure de la partie annuaire de mon site : Deux pages principales : -annuaire.php qui renvoie à -annuaire_mod.php qui include formulaire.php, lui-même post.php Ce que je souhaiterais c'est quand le membre clic sur le bouton envoyer, il retourne sur la page annuaire.php, en fait un redirect vers une page que je dois metre dans le fichier post.php je suppose à la place de echo "Vos données ont été enregistrées". Moi c'est ce que je pense vu le changement, mais s'il faut mettre une variable IF dans un des fichiers, je veux bien, mais alors dans lequel !? merci d'avance
erwinol Posté 25 Juillet 2005 Posté 25 Juillet 2005 Il manquerait pas le enctype dans ton formulaire ?
speedy74 Posté 25 Juillet 2005 Auteur Posté 25 Juillet 2005 enfin j'ai résolu le pb par meta refresh... merci à tous pour votre aide !
Portekoi Posté 26 Juillet 2005 Posté 26 Juillet 2005 <? //Redirection php header("location:mapage.php"); ?>
speedy74 Posté 26 Juillet 2005 Auteur Posté 26 Juillet 2005 j'ai essayé la fonction header mais il me marque un message d'erreur... ET puis il faut le mettre dans quel fichier parmis ces trois : annuaire_mod.php qui include formulaire.php qui renvoie à post.php !?
Portekoi Posté 26 Juillet 2005 Posté 26 Juillet 2005 pour ton cas, cela ne peut pas fonctionner car tu affiches des données. Pour que le header fonctionne, tu ne dois rien afficher avant. ++
speedy74 Posté 26 Juillet 2005 Auteur Posté 26 Juillet 2005 ok merci pour les info... ça me servira certainement un jour !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant