deel 2 formulier in dezelfde record

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank strijthagen

frank strijthagen

03/02/2007 11:02:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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");
................

?>


Hoe kan ik dit oplossen?

thnx
Frank
 
PHP hulp

PHP hulp

20/11/2024 03:25:05
 
Joren de Wit

Joren de Wit

03/02/2007 11:07:00
Quote Anchor link
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.
 
Frank strijthagen

frank strijthagen

05/02/2007 22:35:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
Gewijzigd op 01/01/1970 01:00:00 door frank strijthagen
 
Klaasjan Boven

Klaasjan Boven

05/02/2007 22:39:00
Quote Anchor link
session_register("huisn"); doen we sinds 1873 niet meer.

De bedoeling is als volgt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

}
?>


typos voorbehouden niet aansprakelijk blabla

succes

Klaasjan
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Frank strijthagen

frank strijthagen

07/02/2007 21:45:00
Quote Anchor link
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
 
Jan Koehoorn

Jan Koehoorn

07/02/2007 21:48:00
Quote Anchor link
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.
 
Frank strijthagen

frank strijthagen

07/02/2007 22:47:00
Quote Anchor link
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
 
Klaasjan Boven

Klaasjan Boven

08/02/2007 07:05:00
Quote Anchor link
Klinkt niet als een goed datamodel.
wat zijn je tabellen?
 
Frank strijthagen

frank strijthagen

08/02/2007 13:55:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();
      
}


  
?>
Gewijzigd op 01/01/1970 01:00:00 door frank strijthagen
 
Frank strijthagen

frank strijthagen

13/02/2007 23:14:00
Quote Anchor link
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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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
Gewijzigd op 01/01/1970 01:00:00 door frank strijthagen
 
Frank strijthagen

frank strijthagen

13/02/2007 23:24:00
Quote Anchor link
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>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.