Formulaire

pontarose -  
ilan27 Messages postés 395 Statut Membre -
Bonjour,
j'ai un formulaire a trois pages:
page 1 je remplis mon formulaire

page 2
(je récupère les valeurs entré via post)
je réaffiche le formulaire avec les valeurs que j'ai entrés
cette page permet en fait de revoir les données que j'ai entrés et de pouvoir les modifier

page 3
les données de la page 2 sont entré dans la base de donnée.

Le problème est que si j'effectue des modifications sur les données entrés dans la page2 celle-ci ne sont pas prise en compte; en effet ce seront les données de la page 1 qui seront entrés dans la base de donnée.

Comment faire alors pour que si j'effectue des modifications (dans la page 2) que ce soit cell-ci qui soit prise dans la base de donnée

45 réponses

ilan27 Messages postés 395 Statut Membre 36
 
C'est normal, vu que tu as enregistré les valeurs sur la page2! Mais les as-tu enregistrées après la page2 correctement? Si tu veux, tu peux montrer le code de la page 3 qui est apparement défectueux
0
pontarose Messages postés 151 Statut Membre 2
 
page3.php
<?php
$prot=$_POST['prot'];

?>

<?php
for ($i=1;$i<=$nb; $i++)
{
$a=$_POST['a'];
$a=$_POST['b'];

if(!empty($a) && !empty($a))
{

// connexion a la DB

$requete=
"SELECT proteine_id
FROM proteine
WHERE proteine_name='$prot'";

$execution = mysql_query($requete) or die("erreur au niveau de la requête2");
$ligne = mysql_fnum_rows($execution);
if($ligne!=0)
{
print("la proteine existe dejà");
}
else
{
$requete2=
"INSERT INTO protein (proteine_id, proteine_name)
VALUES('','$proteine_name')";

mysql_query($requete2) ;

$proteine_id=mysql_insert_id();
$requete3=
"INSERT INTO sunite (sunite_id,protein_id, sunite_name,sunite_alias)
VALUES('','protein_id','$a', '$b')";

mysql_query($requete3) ;
}
mysql_close($connexion);

}
}

?>
0
ilan27 Messages postés 395 Statut Membre 36
 
Ok, mais il y a un message d'erreur je suppose?
0
pontarose Messages postés 151 Statut Membre 2
 
No je n'ai pas de message d'erreur
0

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

Posez votre question
ilan27 Messages postés 395 Statut Membre 36
 
Ok, mais je comprends pas un truc (plusieurs)
_pourquoi tu répètes !empty($a) dans le if
_Pourquoi il y a 2 requetes
_pourquoi tu ne mets pas la requete de modifications UPDATE, au lieu d'une insertion? puisque c'est une mise a jour...
0
pontarose Messages postés 151 Statut Membre 2
 
_pourquoi tu répètes !empty($a) dans le if
c'est une erreur :
if(!empty($a) && !empty($b))

_Pourquoi il y a 2 requetes
car ma page 2 est de ce type

PROTEINE:HREF
NBRE SOUS-UNITE:3

sous unité1:
nom:
alias:

sous unité2:
nom:
alias:

sous unité2:
nom:
alias:

page 1 j'entre le nom de ma protéine et le nombre de sous unité qu'elle possède
puis je click sur submit
page 2
je récupère via post ces deus varibles
en fonction du nombre de sous unité que j'ai tapé j'obtiens une page de ce type (exemple içi le nombre de sous unité est de 3)

_ il ne s'agit pas d'une mise a jour, j'entre les données
0
ilan27 Messages postés 395 Statut Membre 36
 
Oui, mais tu m'as dit que la page 2 exposait les données entrées en proposant de les modifier (c'est une maj...); j'ai mal compris?
Et je ne sais pas si tu as mis ton code entier, mais tu n'as pas initialisé la variable $nb
0
pontarose Messages postés 151 Statut Membre 2
 
Bonjour,

Voici le code en gros de mes différentes pages.

Le problème est que si j'effectue des modifications sur les données entrés dans la page2 celle-ci ne sont pas prise en compte; en effet ce seront les données de la page 1 qui seront entrés dans la base de donnée.

Je pense que le problème vient du fait que j'ai récupéré les variables en champ caché dans la page 2 mais si je ne fais pas cela impossible de récupéré les valeurs entré dans la page3.

page 1
<?php

//blabla
<form name="formulaire" method="post" action="page2.php">

for($i=1; $i<=$nb_sunite;$i++)
{
print("sunite:<input type='text' name='sunite_name$i' value=''><br>");
print("sunite:<input type='text' name='sunite_alias$i' value=''><br>");
}
print('<input type="submit"value="save" Onclick="javascript : location="http://localhost/XXX/page2.php"">');
?>

page2
<?php

//blabla
?>
<form name="form" method="post" action="page3.php">

<?php
for($i=1; $i<=$nb_sunite;$i++)
{
print("<input type=\'hidden\" name=\"sunite_name$i\" value=\"".$_POST['sunite_name'.$i]."\"/>");
print("<input type=\'hidden\" name=\"sunite_alias$i\" value=\"".$_POST['sunite_alias'.$i]."\"/>");
}
?>

<?php
for($i=1; $i<=$nb_sunite;$i++)
{

$unite_name=$_POST['sunite_name'.$i];
$unite_alias=$_POST['sunite_alias'.$i];

//test pour verifier que les champs sont bien remplis et on reaffiche le formulaire avec les données antré par l'utilisateur

if()
{
print("sunite:");
print('<input type='text' name='sunite_name$i' value='"'.$sunite_name.'"><br>");
print("sunite:");
print('<input type='text' name='sunite_alias$i' value='"'.$sunite_alias.'"><br>");
}
}
print('<input type="submit"value="save" Onclick="javascript : location="http://localhost/XXX/page3.php"">');
?>

page3
<?php
for($i=1; $i<=$nb_sunite;$i++)
{
print("<input type=\'hidden\" name=\"sunite_name$i\" value=\"".$_POST['sunite_name'.$i]."\"/>");
print("<input type=\'hidden\" name=\"sunite_alias$i\" value=\"".$_POST['sunite_alias'.$i]."\"/>");

//verif que les champs sont bien remplis

// connexion a la DB

$requete=
"SELECT proteine_id
FROM proteine
WHERE proteine_name='$prot'";

$execution = mysql_query($requete) or die("erreur au niveau de la requête2");
$ligne = mysql_num_rows($execution);
if($ligne!=0)
{
print("la proteine existe dejà");
}
else
{
$requete2=
"INSERT INTO protein (proteine_id, proteine_name)
VALUES('','$proteine_name')";

mysql_query($requete2) ;

$proteine_id=mysql_insert_id();
$requete3=
"INSERT INTO sunite (sunite_id,protein_id, sunite_name,sunite_alias)
VALUES('','protein_id','$a', '$b')";

mysql_query($requete3) ;
}
mysql_close($connexion);

}

?>
0
ilan27 Messages postés 395 Statut Membre 36
 
Je te passe le code comme moi je le verrais (erreur de syntaxes...etc, et j'ai pas changé le insert into en update,mais j'aurais pu parce que vu que tu as déja rentré l'enregistrement de la protéine, ce n'est plus qu'une mise a jour, et je nesais pas laquelle est une ma j et laquelle est un enregistrement...)

page 1
<?php

//blabla
<form name="formulaire" method="post" action="page2.php">

for($i=1; $i<=$nb_sunite;$i++)
{
echo "sunite:<input type='text' name='sunite_name".$."i' value=''><br>";
echo "sunite:<input type='text' name='sunite_alias".$."i' value=''><br>";
}
echo "<input type=\"submit\ "value=\"save\" >";
//J'ai enlevé la commande javascript, parce que c'est sans doute elle qui ne permet pas l'envoi des variables, elle n'est pas nécessaire je pense: Onclick=\"javascript : location=\"http://localhost/XXX/page2.php"">');
?>

page2
<?php

//blabla
?>
<form name="form" method="post" action="page3.php">

<?php
for($i=1; $i<=$nb_sunite;$i++)
{
echo "<input type=\'hidden\" name=\"sunite_name".$i."\" value=\"".$_POST['sunite_name'.$i]."\"/>";
echo "<input type=\'hidden\" name=\"sunite_alias".$i."\" value=\"".$_POST['sunite_alias'.$i]."\"/>";
}
?>

<?php
for($i=1; $i<=$nb_sunite;$i++)
{

$sunite_name=$_POST['sunite_name'.$i]; //tu as marqué unite au lieu de sunite
$sunite_alias=$_POST['sunite_alias'.$i];

//test pour verifier que les champs sont bien remplis et on reaffiche le formulaire avec les données antré par l'utilisateur

if()
{
echo "sunite:";
echo "<input type='text' name='sunite_name".$i."' value='".$sunite_name."'><br>";
echo "sunite:";
echo "<input type='text' name='sunite_alias".$i."' value='".$sunite_alias."'><br>";
}
}
print('<input type="submit"value="save" Onclick="javascript : location="http://localhost/XXX/page3.php"">');
?>

page3
<?php
for($i=1; $i<=$nb_sunite;$i++)
{
echo "<input type=\"hidden\" name=\"sunite_name".$i."\" value=\"".$_POST['sunite_name'.$i]."\"/>";
echo "<input type=\"hidden\" name=\"sunite_alias".$i."\" value=\"".$_POST['sunite_alias'.$i]."\"/>");

//verif que les champs sont bien remplis

// connexion a la DB

$requete=
"SELECT proteine_id
FROM proteine
WHERE proteine_name='".$prot."'";

$execution = mysql_query($requete) or die("erreur au niveau de la requête2");
$ligne = mysql_num_rows($execution);
if($ligne!=0)
{
print("la proteine existe dejà");
}
else
{
$requete2=
"INSERT INTO protein (proteine_id, proteine_name)
VALUES('','$proteine_name')";

mysql_query($requete2) ;

$proteine_id=mysql_insert_id();
$requete3=
"INSERT INTO sunite (sunite_id,protein_id, sunite_name,sunite_alias)
VALUES('','protein_id','$a', '$b')";

mysql_query($requete3) ;
}
mysql_close($connexion);

}

?>
0
pontarose Messages postés 151 Statut Membre 2
 
de la page 1 à 2 je récupère bien la valeur de mes variables. pas de souci.

Voiçi un exemple de ce que j'obtiens en page2

PROTEINE:HREF
NBRE SOUS-UNITE:2

sous unité1:
nom:H1
alias:HAUN3C

sous unité2:
nom:H2
alias: HEWC6

Le problème est de la page 2 à 3:
si je modifie le nom par exemple de la sous-unité 2 en tapant HNR26
Cette modification ne sera pas prise en compte dans ma page 3; j'aurais toujours

PROTEINE:HREF
NBRE SOUS-UNITE:2

sous unité1:
nom:H1
alias:HAUN3C

sous unité2:
nom:H2
alias: HEWC6

Or je veux justement que cette page permettent de faire des modifications et quand je clique sur save ces modifications soient prise en compte et que j'obtienne en page 3

PROTEINE:HREF
NBRE SOUS-UNITE:2

sous unité1:
nom:H1
alias:HAUN3C

sous unité2:
nom:HNR26 //la modifcation
alias: HEWC6

ensuite j'enregistre cela dans ma base de donnée.

Or dans mon cas actuel les données, les modifications que je fais en page 2 ne sont pas prise en compte en page 3.
je viens de faire un test et mes variables $unite_name et $unite_alias sont vides dans ma page3!!!

Excuse moi je me suis trompé dans ma page 3 (je n'ai pas encore hidden) voiçi mon script:

page3
<?php
for($i=1; $i<=$nb_sunite;$i++)
{

$unite_name=$_POST['sunite_name'.$i];
$unite_alias=$_POST['sunite_alias'.$i];
//verif que les champs sont bien remplis

// connexion a la DB

$requete=
"SELECT proteine_id
FROM proteine
WHERE proteine_name='".$prot."'";

$execution = mysql_query($requete) or die("erreur au niveau de la requête2");
$ligne = mysql_num_rows($execution);
if($ligne!=0)
{
print("la proteine existe dejà");
}
else
{
$requete2=
"INSERT INTO protein (proteine_id, proteine_name)
VALUES('','$proteine_name')";

mysql_query($requete2) ;

$proteine_id=mysql_insert_id();
$requete3=
"INSERT INTO sunite (sunite_id,protein_id, sunite_name,sunite_alias)
VALUES('','protein_id','$a', '$b')";

mysql_query($requete3) ;
}
mysql_close($connexion);

}

?>

J'ai juste entré les données de la protéine mais pas des sous-unité correspondant a cette protéine d'ou le insert.
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

<edit>
oups, je me suis trompé, j'efface après relecture plus attentive de ton message.
</edit>
0
ilan27 Messages postés 395 Statut Membre 36
 
D'accord, mais si les noms des protéines et tout ce qui concerne une protéine sont sur un meme enregistrement, il s'agit d'un update.
Par ailleurs, un moment tu as sunite_alias, et un autre unite_alias, donc je sais pas si c'est fait exprès.
0
pontarose Messages postés 151 Statut Membre 2
 
Non, c'est une erreur de ma part
0
ilan27 Messages postés 395 Statut Membre 36
 
Ca marche quand tu corriges?
0
pontarose
 
Bonjour,

Non toujours pas.
0
ilan27 Messages postés 395 Statut Membre 36
 
Quand tu passes de la page 2 à la page 3, est-ce que tu veux créer des enregistrements comme tu le laisses penser avec "J'ai juste entré les données de la protéine mais pas des sous-unité correspondant a cette protéine d'ou le insert.", ou tu veux mettre à jour les données que tu as déja transférées dans le passage page1-->page2, c'est à dire les modifier, comme tu le dis au début : si j'effectue des modifications sur les données entrés dans la page2
Je ne comprends pas ton principe
0
pontarose
 
Bonjour,
Quand je passes de la page 2 à la page 3 je veux créer des enregistrements.(les données enregistré seront ceux de la page2)
en fait ma page 2 est une page de confirmation; sur cette page on peut soit
si on est d'accord avec les données tapés appuyer sur submit pour les enregistrer
soit les rectifier et ensuite appuyer sur submit pour les enregistrer
0
ilan27 Messages postés 395 Statut Membre 36
 
D'accord, donc refais voir le nouveau code avec les changements précédents, et j'essaye de le corriger
0
pontarose
 
Je me permet de récapituler:
de la page 1 à 2 je récupère bien la valeur de mes variables. pas de souci.

Voiçi un exemple de ce que j'obtiens en page2

PROTEINE:HREF
NBRE SOUS-UNITE:2

sous unité1:
nom:H1
alias:HAUN3C

sous unité2:
nom:H2
alias: HEWC6

Ma page 2 est une page de confirmation; sur cette page on peut soit:
* si on est d'accord avec les données tapés appuyer sur submit pour les enregistrer dans ma base de donnée
* soit les rectifier et ensuite appuyer sur submit pour les enregistrer dans ma base de donnée

MON PROBLEME EST QUE:
Dans mon cas actuel les données, les modifications que je fais en page 2 (si je décide de mettre HNR26 au lieu de H2) ne sont pas prise en compte. En effet ce sera H2 qui sera enregistré dans ma dans ma base de donnée.

PROTEINE:HREF
NBRE SOUS-UNITE:2

sous unité1:
nom:H1
alias:HAUN3C

sous unité2:
nom:HNR26 //la modifcation
alias: HEWC6

je viens de faire un test et mes variables $unite_name et $unite_alias sont vides dans ma page3!!!

page 1
<?php
//recupération des valeurs posté
$proteine_name=$_POST[' proteine_name '];
$nb_sunite=$_POST[' nb_sunite '];
?>

<?php
//blabla
<form name="formulaire" method="post" action="page2.php">

for($i=1; $i<=$nb_sunite;$i++)
{
print("sunite:<input type='text' name='sunite_name$i' value=''><br>");
print("alias:<input type='text' name='sunite_alias$i' value=''><br>");
}
print('<input type="submit"value="save" Onclick="javascript : location="http://localhost/XXX/page2.php"">');
?>

page2
<?php
//recupération des valeurs posté
$proteine_name=$_POST[' proteine_name '];
$nb_sunite=$_POST[' nb_sunite '];
?>

<form name="form" method="post" action="page3.php">

<?php
print( "<input type=\'hidden\" name=\"proteine_name".$i."\" value=\"".$_POST['proteine_name'.$i]."\"/>");
print ("<input type=\'hidden\" name=\"nb_sunite".$i."\" value=\"".$_POST['nb_sunite'.$i]."\"/>");
?>

<?php
for($i=1; $i<=$nb_sunite;$i++)
{
print ("<input type=\'hidden\" name=\"sunite_name".$i."\" value=\"".$_POST['sunite_name'.$i]."\"/>");
print ( "<input type=\'hidden\" name=\"sunite_alias".$i."\" value=\"".$_POST['sunite_alias'.$i]."\"/>");
?>

<?php
for($i=1; $i<=$nb_sunite;$i++)
{
//recupération des valeurs posté
$sunite_name=$_POST['sunite_name'.$i];
$sunite_alias=$_POST['sunite_alias'.$i];

//test pour verifier que les champs sont bien remplis et on reaffiche le formulaire avec les données antré par l'utilisateur

if()
{
print("sunite:");
print('<input type='text' name='sunite_name$i' value='"'.$sunite_name.'"><br>");
print("alias:");
print('<input type='text' name='sunite_alias$i' value='"'.$sunite_alias.'"><br>");
}
}
print('<input type="submit"value="save" Onclick="javascript : location="http://localhost/XXX/page3.php"">');
?>

page3
<?php
//recupération des valeurs posté
$proteine_name=$_POST[' proteine_name '];
$nb_sunite=$_POST[' nb_sunite '];
?>

<?php
for($i=1; $i<=$nb_sunite;$i++)
{

//verif que les champs sont bien remplis
if()
{

// integration dans la base de donnée

}
?>
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

et si tu faisais une pitite boucle sur tout le contenu du $_POST en 'page3' pour voir ce qu'il a dans le ventre ?
foreach($_POST as $key => $value)
{
       echo '<p>' . $key . ' -> ' . $value . '</p>';
}
0