Ik wil een formulier in meerdere delen splitsen en op verschillende pagina's plaatsen.
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:
<?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");
................
?>

Hoe kan ik dit oplossen?

thnx
Frank
Ik begrijp dat je in het 2e deel nog dingen wilt aanpassen/toevoegen aan het record in de database dat je met het eerste deel van het formulier aangemaakt hebt?

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.
LS
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

<?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?><OPTION value="Aalten">Aalten</OPTION> <OPTION value="Apeldoorn">Apeldoorn</OPTION> <OPTION vvalue="Barneveld">Barneveld</OPTION> <OPTION value="Berkelland">Berkelland</OPTION> <OPTION </SELECT></TD></TR>
<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>

session_register("huisn"); doen we sinds 1873 niet meer.

De bedoeling is als volgt

<?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
}
?>


typos voorbehouden niet aansprakelijk blabla

succes

Klaasjan
LS

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.
Ik ben van plan eerst enkele algemene gegevens te verzamelen en daarna afhankelijk van de gebruiker hem door te linken naar een formulier dat specifiek op zijn vraag/situatie gericht is.
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
Klinkt niet als een goed datamodel.
wat zijn je tabellen?
<?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();

}


?>
LS.
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="<?php print $_POST['voornaam'];?>"> 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
LS

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>

Reageren