Récupération de données d'un table dans un formulaire pour modification

Résolu
cs_Frosch Messages postés 3 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 3 août 2010 - 31 juil. 2010 à 00:55
cs_Frosch Messages postés 3 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 3 août 2010 - 3 août 2010 à 14:30
Bonjour à tous,

Voila maintenant plusieurs jours que je galère avec une question qui n'a pas l'air d'en être une mais je coince.

Je parviens à récupérer et afficher les données à modifier d'une fiche depuis ma table sql mais je ne parviens pas à les insérer dans les champs de mon formulaire qui restent vides et que je souhaiterai voir pré-remplis. La chose parait très simple mais je ne sait pas pourquoi je n'y arrive pas
je vous donne une partie du code, si une bonne âme peut éclairer ma lanterne.
je suis également preneur de tous conseils notamment sur la sécurité.

d'avance merci.

<?php
// on s'assure que c'est bien l'administrateur qui doit taper son mot de passe
include "xxxxxxx.php";
// ici commence la récupération des informations sur la base, table etc...
include "../infobase.php";
// on se connecte à la base de donnée Mysql
$dbconnect = mysql_connect($host,$login,$pass) or die ("erreur de connexion");
// on sélectionne la base
mysql_select_db($db,$dbconnect) or die ("erreur de connexion base");
$modfiche=$_GET['modfiche'];
// on prépare la requête dans la table en ne sélectionnant que la fiche à modifier grâce à modfiche
$affiche_fiche="SELECT * FROM $table WHERE id='$modfiche' ";
// on exécute la requête
$req = mysql_query($affiche_fiche) or die ("erreur sql
\n");
// on ferme la base
mysql_close();
// on sélectionne les colonnes num,crea,nom,email,tel,photo... de la table qu'on affiche
while ( $resultat = mysql_fetch_array($req))
{
echo "";
echo "
";
echo "\";
echo \"FICHE A MODIFIER

\";
echo \"----
";
echo "";
echo "FICHE N°$resultat[num] - Enregistré(e) le $resultat[crea]

, \";
echo \"----
, \";
echo \"";
echo "nom:";
echo "$resultat[nom]";
echo "Prénom : $resultat[prenom]";
echo "
";
echo "Téléphone : $resultat[tel]";
echo ", \";
echo \"\";
echo \"\";
echo "

";
}
?>
<!-- on affiche la page -->
<html>
<head>
<!-- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -->
<!-- <meta name="GENERATOR" content=""> -->

<title>Modification d'une fiche d'un membre du PPB13</title>
<link rel="stylesheet" type="text/css" href="../site.css" />
</head>

Modifiez le formulaire

<form id="SITEFOrm" method="post" action="soumettremodif.php" enctype="multipart/form-data">
<fieldset>
<legend>Informations</legend>

<!-- on affiche le champ nom dans lequel on met la valeur déjà entrée -->
<label for="form_nom">Nom : </label>
"/>


</td>
</tr>
<tr>
<td>

<!-- on affiche le champ prénom dans lequel on met la valeur déjà entrée -->
<label for="form_prenom">Prénom : </label>
"/>


</td>
</tr>
<tr>
<td>


etc................

7 réponses

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
31 juil. 2010 à 18:48
Tchô,

moi dans la partie php au lieu par exemple de:
echo "FICHE N°$resultat[num] - Enregistré(e) le $resultat[crea]";
J'écrirais comme ca:
echo 'FICHE N°'.$resultat[num].' - Enregistré(e) le '.$resultat[crea];

et pour la partie html, à mon avis ca me marche pô car tes variables sont hors de ta boucle while:
enlève la } et ajoute <? } ?> après la dernière variable..

Je n'sais pas si j'ai raison, mais c'est d'après moi la seule erreur..
Tu m'diras si ca marche
A++
3
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
31 juil. 2010 à 18:55
oups attends j'crois que j'ai pas tout bien lu là..
c'est un même fichier .php ou c'est une page.php et une page.html dans 2 fichiers distincts??

car tu mets
echo "</table>

";
}
?>
<!-- on affiche la page -->
<html>
<head>

je comprend pas bien ce que tu veux faire :/
0
cs_Frosch Messages postés 3 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 3 août 2010
2 août 2010 à 01:12
D'abord un grand merci avoir pris le temps de répondre

bon ca doit surement pas se faire mais c'est une page php dans laquelle je met du code html après ma balise ?> et c'est bien le même fichier.

J'ai repris le formulaire de création de fiche qui est formaté par du CSS et je voulais alimenter ce formulaire par les données de la fiche sélectionnée mais ils sont vides.

je changerai la syntaxe des variables mais cette partie fonctionne très bien. J'ai bien l'affichage de mes données.

Tu dois avoir raison pour la bouche while. Je ferai le test Lundi soir et te dirais ce qu'il en ressort.
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
2 août 2010 à 10:08
Re,
oui tu peux mettre du code html dans une page .php, mais faut pas remettre tout l'entête (<html><head>...) au milieu de la page, faut juste le mettre au début (même si tu commence tout de suite en .php)
taPage.php donnera qque chose comme ca:

<html>
<head>
<LINK REL="SHORTCUT ICON" HREF="site.ico"><!-- si tu veux mettre une icone a ton site -->
<title>Modification d'une fiche d'un membre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="../site.css" />
</head>

<?php
// on s'assure que c'est bien l'administrateur qui doit taper son mot de passe
include "xxxxxxx.php";
// ici commence la récupération des informations sur la base, table etc...
include "../infobase.php";
// on se connecte à la base de donnée Mysql
$dbconnect = mysql_connect($host,$login,$pass) or die ("erreur de connexion");
// on sélectionne la base
mysql_select_db($db,$dbconnect) or die ("erreur de connexion base");
$modfiche=$_GET['modfiche'];
// on prépare la requête dans la table en ne sélectionnant que la fiche à modifier grâce à modfiche
$affiche_fiche="SELECT * FROM $table WHERE id='$modfiche' ";
// on exécute la requête
$req = mysql_query($affiche_fiche) or die ("erreur sql 
\n");
// on ferme la base
mysql_close();
// on sélectionne les colonnes num,crea,nom,email,tel,photo...
//et on les affiche dans la boucle
while ( $resultat = mysql_fetch_array($req))
{
// ci-dessous tu reviens en html (tu n'as pas besoin de mettre de balise <html> il y a juste fin de php
?>


<?
//pour afficher tes variables, soit en php comme ceci: echo 'le code html'.$resultat[num] ;
echo 'FICHE N°'.$resultat[num].' - Enregistré(e) le '.$resultat[crea];
?>
<!-- soit en html avec juste les balises php autour de la variable comme cela: <? echo $resultat[photo] ?> -->
, '>




<!-- on affiche le formulaire (comme sur la page .html) -->

Modifiez le formulaire

<form id="SITEFOrm" method="post" action="soumettremodif.php" enctype="multipart/form-data">
<fieldset>
<legend>Informations</legend>

<!-- on affiche le champ nom dans lequel on met la valeur déjà entrée -->
<label for="form_nom">Nom : </label>
"/>



<!-- on affiche le champ prénom dans lequel on met la valeur déjà entrée -->
<label for="form_prenom">Prénom : </label>
"/>


<? //tu dois repasser en php pour fermer ta boucle while
}
?>


</html>


bon faut revoir un peu la mise en page, j'ai enlevé des <table><tr>.. et j'ai pas tout remis je crois lol
0

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

Posez votre question
narkos2 Messages postés 10 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 août 2010 à 11:14
Hello,

Heu pour afficher les valeurs dans les input comme voulu sur cette ligne:
<?php
"/>
?>

Plutôt comme ça:
<?php
"/>
?>


Ou sinon si le nom du champ mysql serait contenu dans une variable:
<?php
$le_champ = "prenom";
"/>
?>


Sinon la structure de la page n'a pas l'air top, essayer de repartir au propre sur une autre page ou prend exemple sur celle présentée par "mailliam"...

Bonne continuation
0
narkos2 Messages postés 10 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 août 2010 à 11:20
Oups j'ai mis des <?php ?> pour chaque code ;)

Je remet le message propre dsl ;)

Hello,

Heu pour afficher les valeurs dans les input comme voulu sur cette ligne:

"/>



Plutôt comme ça:

"/>




Ou sinon si le nom du champ mysql serait contenu dans une variable(on sait jamais lol):

<?php
$le_champ = "prenom";
?>
"/>




Sinon la structure de la page n'a pas l'air top, essayer de repartir au propre sur une autre page ou prend exemple sur celle présentée par "mailliam"...

Bonne continuation
0
cs_Frosch Messages postés 3 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 3 août 2010
3 août 2010 à 14:30
@mailliam
Bien joué pour le coup de <? } ?> parce que c'est bon, j'ignorai qu'une fois la boucle refermée les variables sont vides tout simplement (je vais me pencher à nouveau sur le sujet) alors que je pensais qu'elle étaient déclarées pour toute la page.
Merci pour le reste de tes explications c'est clair et finalement très utile.
Je vais refaire tout cela dans un style plus propre...

ne t'inquiète pas pour la mise en page je m'en sortirai et puis c'est pas un truc pro qui sera géré par une seule personne, le but étant qu'elle n'ai pas à utiliser phpmyadmin et modifier la base en direct. En bref si c'est fonctionnel je ne vais pas me torturer pour le rendu.

@Narkos2
Merci pour ton aide également

Et bonne fin de semaine...
0
Rejoignez-nous