deel 2 formulier in dezelfde record
Na het invullen van het eerste deel van het formulier worden de gebruikers toegevoegd aan een tabel in een mysql database.
De gebruiker ontvangt de boodschap:
"Uw gegevens zijn toegevoegd.
Tot dit punt werkt alles correct.
Hierna wil ik de gebruiker na het volgende deel van het formulier doorlinken op een andere pagina.
Om dit mogelijk te maken wil ik naar dezelfde tabel en dezelfde record.
Wanneer de gebruiker echter bij het volgende deel van het formulier beland wordt er een
nieuwe record aangemaakt. in betreffende tabel.
Dit is natuurlijk niet de bedoeling.
Is er een manier om te redirecten naar de volgende pagina naar dezelfde record zonder dat er een nieuw record wordt aangemaakt?
Ik paste zonder succes reeds de volgende code toe.
Code:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
..................
if (@mysql_query ($query)) {
print '<P>uw gegevens zijn toegevoegd</P>';
$blog_id = $_GET['blog_id']; // Waar je id ook vandaan komt
header("Location: secondpartoftheform.php?blog_id=$blog_id");
................
?>
..................
if (@mysql_query ($query)) {
print '<P>uw gegevens zijn toegevoegd</P>';
$blog_id = $_GET['blog_id']; // Waar je id ook vandaan komt
header("Location: secondpartoftheform.php?blog_id=$blog_id");
................
?>
Hoe kan ik dit oplossen?
thnx
Frank
Dan heb je 2 mogelijkheden:
1. Je gebruikt in het tweede deel van het formulier een UPDATE query. Hiervoor zul je natuurlijk wel het id nodig hebben van het record dat net toegevoegd is. Dit is op te halen door mysql_insert_id() te gebruiken nadat je de query in het eerste deel uitgevoerd hebt. Vervolgens zou je dat id in een sessievariabele op kunnen slaan of als GET variabele mee kunnen geven in de url.
2. Een betere manier is om de gegeves uit het eerste deel van het formulier op te slaan in een sessievariabele, en pas als je het tweede deel van het formulier afgerond hebt, alle gegevens weg te schrijven naar de database.
Hartelijk dank voor de reactie.
Ik heb mogelijkheid 2 geprobeerd: het formulier op te slaan in een sessievariabele. Zonder succes. mogelijk heb ik een vergissing gemaakt dus daarom de code die ik probeerde.
Wat is er fout gegaan?
thnx
Frank
code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
session_start();
if (!empty($_POST)){
// eventueel nog meer validatie, nu even ervan uitgaan dat
// gegevens correct zijn aangeleverd via het formulier
$voornaam= $_POST["voornaam"];
$naam= $_POST["naam"];
$adres= $_POST["adres"];
$huisn = $_POST["huisn"];
$pcode= $_POST["pcode"];
$gemeente = $_POST["gemeente"];
$tel= $_POST["tel"];
$email = $_POST["email"];
session_register("voornaam");
session_register("naam");
session_register("adres");
session_register("huisn");
session_register("pcode");
session_register("gemeente");
session_register("tel");
session_register("email");
// Of korter genoteerd:
// doorsturen naar pagina
header("Location: vervolgformulier.php");
}
?>
<link rel="stylesheet" href="cfy.css">
<body>
<form name="ditformulier.php" method="post"
action="<?php echo($_SERVER["PHP_SELF"]);?>">
<center>
<TABLE>
<H1>Uw gegevens</H1></TABLE>
<table>
<tr align="left">
<TD>
<P>Voornaam:</P></TD>
<TD><INPUT name=voornaam maxsize="50"></TD></TR>
<tr align="left">
<TD>
<P>Naam: </P></TD>
<TD><INPUT name=naam maxsize="50"></TD></TR>
<tr align="left">
<TD>Adres:</TD>
<TD><INPUT name=adres maxsize="50"></TD></TR>
<tr align="left">
<TD>Huisnummer:</TD>
<TD><input name=huisn type=text MAXLENGTH="7" SIZE="7"></td></TR>
<tr align="left">
<TD>Postcode</TD>
<TD><INPUT title="Your Google Toolbar can fill this in for you. Select AutoFill" style="BACKGROUND-COLOR: #ffffa0" name=pcode maxlength="7"size="7"></TD></TR>
<tr align="left">
<TD>Gemeente:</TD>
<TD><SELECT size=1 name=gemeente><OPTION value=-1 selected ?selected?>
session_start();
if (!empty($_POST)){
// eventueel nog meer validatie, nu even ervan uitgaan dat
// gegevens correct zijn aangeleverd via het formulier
$voornaam= $_POST["voornaam"];
$naam= $_POST["naam"];
$adres= $_POST["adres"];
$huisn = $_POST["huisn"];
$pcode= $_POST["pcode"];
$gemeente = $_POST["gemeente"];
$tel= $_POST["tel"];
$email = $_POST["email"];
session_register("voornaam");
session_register("naam");
session_register("adres");
session_register("huisn");
session_register("pcode");
session_register("gemeente");
session_register("tel");
session_register("email");
// Of korter genoteerd:
// doorsturen naar pagina
header("Location: vervolgformulier.php");
}
?>
<link rel="stylesheet" href="cfy.css">
<body>
<form name="ditformulier.php" method="post"
action="<?php echo($_SERVER["PHP_SELF"]);?>">
<center>
<TABLE>
<H1>Uw gegevens</H1></TABLE>
<table>
<tr align="left">
<TD>
<P>Voornaam:</P></TD>
<TD><INPUT name=voornaam maxsize="50"></TD></TR>
<tr align="left">
<TD>
<P>Naam: </P></TD>
<TD><INPUT name=naam maxsize="50"></TD></TR>
<tr align="left">
<TD>Adres:</TD>
<TD><INPUT name=adres maxsize="50"></TD></TR>
<tr align="left">
<TD>Huisnummer:</TD>
<TD><input name=huisn type=text MAXLENGTH="7" SIZE="7"></td></TR>
<tr align="left">
<TD>Postcode</TD>
<TD><INPUT title="Your Google Toolbar can fill this in for you. Select AutoFill" style="BACKGROUND-COLOR: #ffffa0" name=pcode maxlength="7"size="7"></TD></TR>
<tr align="left">
<TD>Gemeente:</TD>
<TD><SELECT size=1 name=gemeente><OPTION value=-1 selected ?selected?>
<tr align="left">
<TD>Telefoon:</TD>
<TD><INPUT name=tel maxsize="50"></TD></TR>
<tr align="left">
<TD>Email:</TD>
<TD><INPUT title="Your Google Toolbar can fill this in for you. Select AutoFill" style="BACKGROUND-COLOR: #ffffa0" name=email maxsize="50"></TD></TR>
</table>
<INPUT type=submit value="verstuur formulier" name=submit> </FORM>
</center>
</body>
Gewijzigd op 01/01/1970 01:00:00 door frank strijthagen
De bedoeling is als volgt
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if($SERVER['request_method']=='POST') // is er op de knop geramd?
{
$_SESSION['naam']=mysql_real_escape_string($_POST['naam']; //enz
// we gebruiken dat real escape gebeuren omdat de string later de db in moet
// en daar wil je natuurlijk geen rommel in
}
?>
if($SERVER['request_method']=='POST') // is er op de knop geramd?
{
$_SESSION['naam']=mysql_real_escape_string($_POST['naam']; //enz
// we gebruiken dat real escape gebeuren omdat de string later de db in moet
// en daar wil je natuurlijk geen rommel in
}
?>
typos voorbehouden niet aansprakelijk blabla
succes
Klaasjan
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Hartelijk dank voor de suggesties.
Ik heb beide voorstellen opgevolgd zonder succes.
Is er een goed voorbeeld betreffende scripts want ondanks alle goede raadgevingen kom ik er niet uit.
Met het voorstel van Klaasjan lukt het mij wel de gegevens via het formulier naar de database te krijgen maar met twee formulieren kom ik toch telkens in twee verschillende records terecht. Of ik krijg de formulieren helemaal niet in beeld.
Het voorstel van Blanche volgend krijg ik een blanco pagina.
Frank
Waarom wacht je niet met schrijven naar de DB totdat je alle gegevens van de user hebt? Start een sessie en verzamel de gegevens. Als alles correct is ingevuld, schrijf je het in één keer naar de DB.
Echter graag alles in dezelfde record.
En hoe doe ik dat?
Ik heb al wat gegrasduind in diverse fora en gezien dat meerder mensen dezelfde vraag hebben alleen nergens een adequate oplossing.
Frank
wat zijn je tabellen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php // Script 12.5 - add_entry.php
// This script adds a formulier entry to the database.
// Address error handling.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
if (isset ($_POST['submit'])) { // Handle the form.
// Connect and select.
if ($link = @mysql_connect('localhost', 'gebruikersn', 'wwoord')){
if (!@mysql_select_db('database')) {
die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
}
} else {
die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
}
// Define the query.
$query = "INSERT INTO tabel_entries (tabel, voornaam,naam,adres,huisn,pcode,gemeente,tel,email,geslacht,gjaar,date_entered) VALUES (0, '{$_POST['voornaam']}','{$_POST['naam']}','{$_POST['adres']}','{$_POST['huisn']}','{$_POST['pcode']}','{$_POST['gemeente']}','{$_POST['tel']}','{$_POST['email']}','{$_POST['geslacht']}','{$_POST['gjaar']}',NOW())";
// Execute the query.
if (@mysql_query ($query)) {
print '<P>Uw gegevens zijn toegevoegd.</P>';
$tabelrij = $_GET['tabelrij']; // Wherever your ID value is coming from
header("Location: tformulier.php?tabelrij=$tabelrij");
} else {
print " <P>Could not add the entry because: <b>" . mysql_error() . "</b>. The query was $query.</P>";
}
mysql_close();
}
?>
// This script adds a formulier entry to the database.
// Address error handling.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
if (isset ($_POST['submit'])) { // Handle the form.
// Connect and select.
if ($link = @mysql_connect('localhost', 'gebruikersn', 'wwoord')){
if (!@mysql_select_db('database')) {
die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
}
} else {
die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
}
// Define the query.
$query = "INSERT INTO tabel_entries (tabel, voornaam,naam,adres,huisn,pcode,gemeente,tel,email,geslacht,gjaar,date_entered) VALUES (0, '{$_POST['voornaam']}','{$_POST['naam']}','{$_POST['adres']}','{$_POST['huisn']}','{$_POST['pcode']}','{$_POST['gemeente']}','{$_POST['tel']}','{$_POST['email']}','{$_POST['geslacht']}','{$_POST['gjaar']}',NOW())";
// Execute the query.
if (@mysql_query ($query)) {
print '<P>Uw gegevens zijn toegevoegd.</P>';
$tabelrij = $_GET['tabelrij']; // Wherever your ID value is coming from
header("Location: tformulier.php?tabelrij=$tabelrij");
} else {
print " <P>Could not add the entry because: <b>" . mysql_error() . "</b>. The query was $query.</P>";
}
mysql_close();
}
?>
Gewijzigd op 01/01/1970 01:00:00 door frank strijthagen
Ik heb een oplossing voor mijn probleem.
Allereerst formulier 1 tbv de algemene gegevens.
Via <form action="form2.php" method="post">
ga ik naar de pagina met formulier 2
De gegevens van formulier 1 roep ik op deze pagina aan met:
<INPUT TYPE="HIDDEN" name="voornaam"VALUE=""> etc.etc.
Via <form action="form3.php" method="post"> komt de gebruiker op de volgende pagina alwaar het script uit mijn vorige bericht wordt uitgevoerd uitgevoerd en alle gegevens toegevoegd worden aan dezelfde record van de mysql-database.
Frank
Gewijzigd op 01/01/1970 01:00:00 door frank strijthagen
Zie de twee vorige berichten.
Is het mogelijk via een formuliervraag een formulier te splitsen in meerdere vervolgformulier afhankelijk van de gemaakte keuze. Ik bedoel een formuliervraag zoals hieronder:
thnx
Frank
<TR>
<TD>Opleiding</TD>
<TD><SELECT size=1 name=mopl><OPTION value=-1 selected ?selected?><OPTION value="LBO/VMBO">LBO/VMBO</OPTION> <OPTION value="Middelbare school">Middelbare school</OPTION> <OPTION value="MBO">MBO</OPTION> <OPTION value="HBO">HBO</OPTION> <OPTION value="Universiteit">Universiteit</OPTION> <OPTION value="Gepromoveerd">Gepromoveerd</OPTION></SELECT> </TD></TR>