2 formulieren in 1 script
mensen
ik heb een script en daar zitten 2 formulieren in.
alleen als ik de eerst eheb gehad opent de volgende maar als ik daar op veranderen klik gaat die terug naar het begin.
hoe kan ik ervoor zorgen dat hij dan verder gaat met het script?
opmerking en tips/hints zijn natuurlijk welkom;)
ik heb een script en daar zitten 2 formulieren in.
alleen als ik de eerst eheb gehad opent de volgende maar als ik daar op veranderen klik gaat die terug naar het begin.
hoe kan ik ervoor zorgen dat hij dan verder gaat met het script?
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
include 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (isset($_POST['kiezen']))
{
$query = mysql_query("SELECT * FROM project WHERE naam='".$_POST['project']."'");
$gegevens = mysql_fetch_object($query);
if (isset($_POST['veranderen']))
{
if (mysql_query("UPDATE project SET name='".$_POST['naam']."' beschrijving='".$_POST['beschrijving']."' WHERE id='".$gegevens->id."'"))
{
echo 'Gegevens zijn succesvol geupdated.';
}
else
{
echo 'Kon gegevens niet veranderen.';
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Naam: </td>";
echo "<td><input type=\"text\" name=\"naam\" value='".$gegevens->naam."' /></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Beschrijving: </td>";
echo "<td><textarea name=\"beschrijving\" cols=\"40\" rows=\"7\">".$gegevens->beschrijving."</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" name=\"veranderen\" value=\"veranderen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Projectnaam: </td>";
echo "<td><select name=\"project\">";
$q_projecten = "SELECT naam FROM project";
$projecten = mysql_query($q_projecten);
while ($project = mysql_fetch_object($projecten))
{
echo "<option name=\"project1\">" . $project->naam . "</option>";
}
echo "</select></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" name=\"kiezen\" value=\"kiezen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
?>
include 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (isset($_POST['kiezen']))
{
$query = mysql_query("SELECT * FROM project WHERE naam='".$_POST['project']."'");
$gegevens = mysql_fetch_object($query);
if (isset($_POST['veranderen']))
{
if (mysql_query("UPDATE project SET name='".$_POST['naam']."' beschrijving='".$_POST['beschrijving']."' WHERE id='".$gegevens->id."'"))
{
echo 'Gegevens zijn succesvol geupdated.';
}
else
{
echo 'Kon gegevens niet veranderen.';
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Naam: </td>";
echo "<td><input type=\"text\" name=\"naam\" value='".$gegevens->naam."' /></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Beschrijving: </td>";
echo "<td><textarea name=\"beschrijving\" cols=\"40\" rows=\"7\">".$gegevens->beschrijving."</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" name=\"veranderen\" value=\"veranderen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Projectnaam: </td>";
echo "<td><select name=\"project\">";
$q_projecten = "SELECT naam FROM project";
$projecten = mysql_query($q_projecten);
while ($project = mysql_fetch_object($projecten))
{
echo "<option name=\"project1\">" . $project->naam . "</option>";
}
echo "</select></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" name=\"kiezen\" value=\"kiezen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
?>
opmerking en tips/hints zijn natuurlijk welkom;)
Als je het tweede formulier verzendt dan is $_POST['kiezen'] niet geset en zal ie dus naar het eerste formulier gaan. Niet echt netjes, maar je kunt een hidden input meegeven met het tweede formulier (name="kiezen").
Script is lek => SQL-Injection.
Zie mysql_real_escape_string().
Script is lek => SQL-Injection.
Zie mysql_real_escape_string().
hoe kun je dat verbeter want je zegt dat het neit netjes is maar hoe kan ik dat beter maken dan?:)
beveiliging komt nog;)
beveiliging komt nog;)
Ik zou het hele script anders gemaakt hebben. Maar als ik bovenstaand script zou moeten wijzigen dan zou ik gewoon zo'n hidden input gebruiken. Dat werkt wel namelijk.
Beveiliging behoort tot de eerste prioriteit en niet tot de laatste.
Beveiliging behoort tot de eerste prioriteit en niet tot de laatste.
ok ik heb die hidden input ingevoegd maar nu komt de data van het eerste formulier niet opgeslagen als 2de formulier is gedaan.
hoe kan ik dit oplossen?
hoe kan ik dit oplossen?
Misschien is het handig om even het stukje script te posten, zodat de leden hier kunnen meekijken wat je precies uithaalt met die 'hidden input'. (die zul je moeten controleren).
Over SQL-injection is veel te vinden:
http://www.phphulp.nl/php/tutorial/overig/sql-injection-guide/444/
Hopelijk kom je weer verder....
Over SQL-injection is veel te vinden:
http://www.phphulp.nl/php/tutorial/overig/sql-injection-guide/444/
Hopelijk kom je weer verder....
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
include 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (isset($_POST['kiezen']))
{
$project = $_POST['project'];
$query = mysql_query("SELECT * FROM project WHERE naam='".$project."'");
$gegevens = mysql_fetch_object($query);
if (isset($_POST['veranderen']))
{
if (mysql_query("UPDATE project SET name='".mysql_real_escape_string($_POST['naam'])."' beschrijving='".mysql_real_escape_string($_POST['beschrijving'])."' WHERE id='".$gegevens->id."'"))
{
echo 'Gegevens zijn succesvol geupdated.';
}
else
{
echo 'Kon gegevens niet veranderen.';
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Naam: </td>";
echo "<td><input type=\"text\" name=\"naam\" value='".$gegevens->naam."' /></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Beschrijving: </td>";
echo "<td><textarea name=\"beschrijving\" cols=\"40\" rows=\"7\">".$gegevens->beschrijving."</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<input type=\"hidden\" name=\"kiezen\" />";
echo "<td><input type=\"submit\" name=\"veranderen\" name=\"kiezen\"value=\"veranderen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Projectnaam: </td>";
echo "<td><select name=\"project\">";
$q_projecten = "SELECT naam FROM project";
$projecten = mysql_query($q_projecten);
while ($project = mysql_fetch_object($projecten))
{
echo "<option name=\"project1\">" . $project->naam . "</option>";
}
echo "</select></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" name=\"kiezen\" value=\"kiezen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
?>
include 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (isset($_POST['kiezen']))
{
$project = $_POST['project'];
$query = mysql_query("SELECT * FROM project WHERE naam='".$project."'");
$gegevens = mysql_fetch_object($query);
if (isset($_POST['veranderen']))
{
if (mysql_query("UPDATE project SET name='".mysql_real_escape_string($_POST['naam'])."' beschrijving='".mysql_real_escape_string($_POST['beschrijving'])."' WHERE id='".$gegevens->id."'"))
{
echo 'Gegevens zijn succesvol geupdated.';
}
else
{
echo 'Kon gegevens niet veranderen.';
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Naam: </td>";
echo "<td><input type=\"text\" name=\"naam\" value='".$gegevens->naam."' /></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Beschrijving: </td>";
echo "<td><textarea name=\"beschrijving\" cols=\"40\" rows=\"7\">".$gegevens->beschrijving."</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<input type=\"hidden\" name=\"kiezen\" />";
echo "<td><input type=\"submit\" name=\"veranderen\" name=\"kiezen\"value=\"veranderen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
}
else
{
echo "<table>";
echo "<form method=\"POST\" action='".$_SERVER['REQUEST_URI']."'>";
echo "<tr>";
echo "<td>Projectnaam: </td>";
echo "<td><select name=\"project\">";
$q_projecten = "SELECT naam FROM project";
$projecten = mysql_query($q_projecten);
while ($project = mysql_fetch_object($projecten))
{
echo "<option name=\"project1\">" . $project->naam . "</option>";
}
echo "</select></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" name=\"kiezen\" value=\"kiezen\" /></td>";
echo "</tr>";
echo "</form>";
echo "</table>";
}
?>
en ik krijg deze foutmeldingen:
Notice: Undefined index: project in /customers/dnnsdesign.nl/dnnsdesign.nl/httpd.www/dijkstraglas/projectbewerken.php on line 8
Notice: Trying to get property of non-object in /customers/dnnsdesign.nl/dnnsdesign.nl/httpd.www/dijkstraglas/projectbewerken.php on line 15
Kon gegevens niet veranderen.
hoe kan ik dit veranderen. hij bewaard de gegevens maar 1x en meot 2x worden zodat die in het 2de formulier ook werkt.
Gewijzigd op 11/06/2010 21:43:24 door dennis meijer
je script logica klopt niet
je handeld de post verkeerd af!
je handeld de post verkeerd af!
ok dat is ook een manier maar er komen 2 formulieren en hier is er maar plek voor 1?
Het is mij onduidelijk wat op welk moment nu precies in je $_POST zit. Ik gebruik dit stukje:
print "<pre>\n";
print_r ($_POST);
print "</pre>\n";
...dan wordt alle 'inhoud' van je $_POST op het scherm getoond. De foutmelding wijst erop dat $_POST['project'] op dat moment niet bestaat.
Volgens mij wijst Noppes hier ook op.
PS. moest die hidden input niet in het tweede formulier? (advies SanThe??)
print "<pre>\n";
print_r ($_POST);
print "</pre>\n";
...dan wordt alle 'inhoud' van je $_POST op het scherm getoond. De foutmelding wijst erop dat $_POST['project'] op dat moment niet bestaat.
Volgens mij wijst Noppes hier ook op.
PS. moest die hidden input niet in het tweede formulier? (advies SanThe??)
Gewijzigd op 11/06/2010 21:59:37 door Arnold C
het is zo dat als ik het eerste formulier heb verzonden dan staan de gegevens er wel in maar zodra ik de 2de formulier heb verzonden verdwijnen de gegevens van het eerste formulier daarom doet die het niet maar ik wil graag dat die gegevens dan blijven.
hoe krijg ik dat voor elkaar.?
hoe krijg ik dat voor elkaar.?
@Dennis meijer
Je hebt plek voor 2 formulieren!
Output naar de browser komt altijd als laatste en bij de postafhandeling echo je in feite niets naar de browser.
script logica:
- sessie starten indien van toepassing
- scripts inlcuden
- database connectie indien van toepassing
- post / get / seesie / cookie afhandeling
- info vergaren naar aanleiding van de request / afhandelig
- output naar de browser
Je hebt plek voor 2 formulieren!
Output naar de browser komt altijd als laatste en bij de postafhandeling echo je in feite niets naar de browser.
script logica:
- sessie starten indien van toepassing
- scripts inlcuden
- database connectie indien van toepassing
- post / get / seesie / cookie afhandeling
- info vergaren naar aanleiding van de request / afhandelig
- output naar de browser
@Dennis: Kort-door-de-bocht geredeneerd zou ik zeggen dat je al die gegevens dan ook opnieuw moet meegeven bij verzenden.....daarom is het handig even te kijken wat er precies in je $_POST zit...
Gewijzigd op 11/06/2010 22:05:44 door Arnold C
Niet getest, maar je moet hier wel een leuk begin mee hebben.
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
//include 'config.php';
session_start();
function kiezen_formulier()
{
// Kiezen Formulier
echo '<table>';
echo '<form method="POST" action="' . $_SERVER['REQUEST_URI'] . '">';
echo '<tr>';
echo '<td>Projectnaam: </td>';
echo '<td><select name="project">';
$sql_projecten = "SELECT naam FROM project";
$result_projecten = mysql_query($sql_projecten);
if($result_projecten)
{
while ($row_project = mysql_fetch_assoc($result_projecten))
{
echo '<option value="' . $row_project['naam'] . '">' . $row_project['naam'] . '</option>';
}
}
else
{
// ERROR
}
echo '</select></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td><input type="submit" name="kiezen" value="kiezen" /></td>';
echo '</tr>';
echo '</form>';
echo '</table>';
}
function veranderen_formulier($naam, $beschrijving)
{
// Veranderen Formulier
echo '<table>';
echo '<form method="POST" action="' . $_SERVER['REQUEST_URI'] . '">';
echo '<tr>';
echo '<td>Naam: </td>';
echo '<td><input type="text" name="naam" value="' . $naam . '" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Beschrijving: </td>';
echo '<td><textarea name="beschrijving" cols="40" rows="7">' . $beschrijving . '</textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td><input type="submit" name="veranderen" value="veranderen" /></td>';
echo '</tr>';
echo '</form>';
echo '</table>';
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (isset($_POST['project']))
{
$sql = "SELECT id, naam, beschrijving
FROM project
WHERE naam='" . mysql_real_escape_string($_POST['project']) . "'";
$result = mysql_query($sql);
if($result)
{
$row = mysql_fetch_assoc($result);
$_SESSION['project_id'] = $row['id'];
veranderen_formulier($row['naam'], $row['beschrijving']);
}
else
{
// ERROR
}
}
else
{
if (isset($_POST['naam'], $_POST['beschrijving']))
{
if(isset($_SESSION['project_id']) and ($_SESSION['project_id'] > 0))
{
$sql = "UPDATE project
SET name='" . mysql_real_escape_string($_POST['naam']) . "',
beschrijving='" . mysql_real_escape_string($_POST['beschrijving']) . "'
WHERE id='" . $_SESSION['project_id'] . "'";
$result = mysql_query($sql);
if($result and mysql_affected_rows() > 0)
{
echo 'Gegevens zijn succesvol geupdated.';
}
else
{
echo 'Kon gegevens niet veranderen.';
}
}
}
}
}
else
{
$_SESSION['project_id'] = false;
kiezen_formulier();
}
?>
error_reporting(E_ALL);
ini_set('display_errors', 1);
//include 'config.php';
session_start();
function kiezen_formulier()
{
// Kiezen Formulier
echo '<table>';
echo '<form method="POST" action="' . $_SERVER['REQUEST_URI'] . '">';
echo '<tr>';
echo '<td>Projectnaam: </td>';
echo '<td><select name="project">';
$sql_projecten = "SELECT naam FROM project";
$result_projecten = mysql_query($sql_projecten);
if($result_projecten)
{
while ($row_project = mysql_fetch_assoc($result_projecten))
{
echo '<option value="' . $row_project['naam'] . '">' . $row_project['naam'] . '</option>';
}
}
else
{
// ERROR
}
echo '</select></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td><input type="submit" name="kiezen" value="kiezen" /></td>';
echo '</tr>';
echo '</form>';
echo '</table>';
}
function veranderen_formulier($naam, $beschrijving)
{
// Veranderen Formulier
echo '<table>';
echo '<form method="POST" action="' . $_SERVER['REQUEST_URI'] . '">';
echo '<tr>';
echo '<td>Naam: </td>';
echo '<td><input type="text" name="naam" value="' . $naam . '" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Beschrijving: </td>';
echo '<td><textarea name="beschrijving" cols="40" rows="7">' . $beschrijving . '</textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td><input type="submit" name="veranderen" value="veranderen" /></td>';
echo '</tr>';
echo '</form>';
echo '</table>';
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (isset($_POST['project']))
{
$sql = "SELECT id, naam, beschrijving
FROM project
WHERE naam='" . mysql_real_escape_string($_POST['project']) . "'";
$result = mysql_query($sql);
if($result)
{
$row = mysql_fetch_assoc($result);
$_SESSION['project_id'] = $row['id'];
veranderen_formulier($row['naam'], $row['beschrijving']);
}
else
{
// ERROR
}
}
else
{
if (isset($_POST['naam'], $_POST['beschrijving']))
{
if(isset($_SESSION['project_id']) and ($_SESSION['project_id'] > 0))
{
$sql = "UPDATE project
SET name='" . mysql_real_escape_string($_POST['naam']) . "',
beschrijving='" . mysql_real_escape_string($_POST['beschrijving']) . "'
WHERE id='" . $_SESSION['project_id'] . "'";
$result = mysql_query($sql);
if($result and mysql_affected_rows() > 0)
{
echo 'Gegevens zijn succesvol geupdated.';
}
else
{
echo 'Kon gegevens niet veranderen.';
}
}
}
}
}
else
{
$_SESSION['project_id'] = false;
kiezen_formulier();
}
?>
ok ik heb paar kleine foutjes eruit gehaald en het werkt nu perfect:D
was even helemaal de kluts kwijt:( maarja toch goed gekomen.
ga het nog wel eventjes meer aanpassen maar hartelijk dank;)
was even helemaal de kluts kwijt:( maarja toch goed gekomen.
ga het nog wel eventjes meer aanpassen maar hartelijk dank;)
Mooi dat je er weer verder mee kan.
Het is ook slechts een opzet en geen eindproduct.
Succes verder.
Het is ook slechts een opzet en geen eindproduct.
Succes verder.




