Version complète: sur le forum Webmaster Hub : Pb UPLOAD avec formulaire PHP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
speedy74
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
quand tu fais un echo $tf et un echo de $requete juste avant de faire la requete, il affiche quoi ?
speedy74
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
Hum...

Ton formulaire n'a pas l'air juste, c'est là ton erreur je crois wink.gif

CODE
<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 evil.gif, le CSS est ton ami..
speedy74
ok c'était pour simplifier la mise en page mais je vais essayer avec un seul formulaire...
je croise les doigts !
sarc
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 wink.gif
speedy74
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... biggrin.gif
speedy74
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
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 smile.gif

En epsérant avoir été assez clair ^_^

Portekoi
speedy74
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
Il manquerait pas le enctype dans ton formulaire ?
speedy74
eh c'est quoi le enctype !?
speedy74
enfin j'ai résolu le pb par meta refresh...

merci à tous pour votre aide !
Portekoi
<?
//Redirection php
header("location:mapage.php");
?>
speedy74
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
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
ok merci pour les info... ça me servira certainement un jour !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.