Gegevens kwijt
Ik ben al een tijdje lekker aan het prutsen met een aantal scripts, maar er doet zich een probleem op als ik informatie opvraag uit de database, om te bewerken. Er zit een "exit" functie tussen, maar dan sluit hij ook de rest van de scripts af zodat de pagina maar half laad. Blok ik dezelfde exit-functie door // ervoor te zetten, dan laad hij wel de pagina, maar als ik vervolgens zonder iets op te slaan naar een andere pagina surf, dan voert hij blanco velden in in m'n database. Het is dus of geen smoel, of geen gegevens meer. Wat gaat hier fout?
Alvast bedankt!
Jaap
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
function do_edit()
{
check_permissions();
global $mysql_posts_table;
if(isset($_GET['post']))
{
$query = mysql_query("SELECT id FROM $mysql_posts_table");
$ids = array();
while($row = mysql_fetch_array($query))
array_push($ids, $row['id']);
$post = $_GET['post'];
if(!in_array($post, $ids))
{
display('error.php');
print '<p>No such post to edit.</p>';
exit;
}
//
// Display the form for editing this post.
//
if(!$_POST['titel'] || !$_POST['content'])
{
$query = mysql_query("SELECT * FROM $mysql_posts_table
WHERE id=$post");
$row = mysql_fetch_array($query);
global $edit_titel_mypm;
global $edit_content;
global $edit_voor;
$edit_titel_news = $row['titel'];
$edit_content = $row['content'];
$edit_voor = $row['voor'];
$edit_content = str_replace('<br>', "\n", $edit_content);
$edit_titel_mypm = stripslashes($edit_titel_news);
$edit_content = stripslashes($edit_content);
$edit_voor = stripslashes($edit_voor);
display('edit_2.php');
exit; // de bewuste exit
}
//
// Update het bewerkte bericht.
//
$titel = $_POST['titel'];
$content = $_POST['content'];
$voor = $_POST['voor'];
$html = $_POST['html'];
if(!$html)
{
$titel = htmlspecialchars($titel);
$content = htmlspecialchars($content);
$voor = htmlspecialchars($voor);
}
$titelpic = str_replace("\n", '<br>', $titelpic);
$content = str_replace("\n", '<br>', $content);
$titel = addslashes($titel);
$content = addslashes($content);
$voor = addslashes($voor);
mysql_query("UPDATE $mysql_posts_table SET titel='$titel', content='$content', voor='$voor' WHERE id=$post");
global $blog_path;
}
}
?>
function do_edit()
{
check_permissions();
global $mysql_posts_table;
if(isset($_GET['post']))
{
$query = mysql_query("SELECT id FROM $mysql_posts_table");
$ids = array();
while($row = mysql_fetch_array($query))
array_push($ids, $row['id']);
$post = $_GET['post'];
if(!in_array($post, $ids))
{
display('error.php');
print '<p>No such post to edit.</p>';
exit;
}
//
// Display the form for editing this post.
//
if(!$_POST['titel'] || !$_POST['content'])
{
$query = mysql_query("SELECT * FROM $mysql_posts_table
WHERE id=$post");
$row = mysql_fetch_array($query);
global $edit_titel_mypm;
global $edit_content;
global $edit_voor;
$edit_titel_news = $row['titel'];
$edit_content = $row['content'];
$edit_voor = $row['voor'];
$edit_content = str_replace('<br>', "\n", $edit_content);
$edit_titel_mypm = stripslashes($edit_titel_news);
$edit_content = stripslashes($edit_content);
$edit_voor = stripslashes($edit_voor);
display('edit_2.php');
exit; // de bewuste exit
}
//
// Update het bewerkte bericht.
//
$titel = $_POST['titel'];
$content = $_POST['content'];
$voor = $_POST['voor'];
$html = $_POST['html'];
if(!$html)
{
$titel = htmlspecialchars($titel);
$content = htmlspecialchars($content);
$voor = htmlspecialchars($voor);
}
$titelpic = str_replace("\n", '<br>', $titelpic);
$content = str_replace("\n", '<br>', $content);
$titel = addslashes($titel);
$content = addslashes($content);
$voor = addslashes($voor);
mysql_query("UPDATE $mysql_posts_table SET titel='$titel', content='$content', voor='$voor' WHERE id=$post");
global $blog_path;
}
}
?>
PS, nee, ik ben nog geen professional :-). En er hoort nog een gewoon html-form bij met invoerveldjes. Geen bijzonderheden.
Gewijzigd op 01/01/1970 01:00:00 door Jaap
willen zetten dan krijgen we ook mooie kleurtjes
en er komen geen foutmeldingen?
zou je even de code ook even tussen en er komen geen foutmeldingen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$query = mysql_query("SELECT id FROM $mysql_posts_table");
$ids = array();
while($row = mysql_fetch_array($query))
array_push($ids, $row['id']);
$post = $_GET['post'];
if(!in_array($post, $ids))
{
display('error.php');
print '<p>No such post to edit.</p>';
exit;
}
?>
$query = mysql_query("SELECT id FROM $mysql_posts_table");
$ids = array();
while($row = mysql_fetch_array($query))
array_push($ids, $row['id']);
$post = $_GET['post'];
if(!in_array($post, $ids))
{
display('error.php');
print '<p>No such post to edit.</p>';
exit;
}
?>
om te checken of er een post is om te editen kan een heel stuk netter:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if (isset ($_GET['post'])) {
if (ctype_digit ($_GET['post'])) {
$sql = "
SELECT id
FROM " . $mysql_posts_table . "
WHERE id = " . $_GET['id'] . "
";
if ($res = mysql ($sql)) {
if (mysql_num_rows ($res) == 0) {
$msg = '<p>Geen post met id: ' . $_GET['id'] . '</p>';
}
}
}
}
?>
if (isset ($_GET['post'])) {
if (ctype_digit ($_GET['post'])) {
$sql = "
SELECT id
FROM " . $mysql_posts_table . "
WHERE id = " . $_GET['id'] . "
";
if ($res = mysql ($sql)) {
if (mysql_num_rows ($res) == 0) {
$msg = '<p>Geen post met id: ' . $_GET['id'] . '</p>';
}
}
}
}
?>
Nog een tip: exit gebruik je liefst zo weinig mogelijk. Maak liever een var aan ($msg in dit voorbeeld) die je later met isset controleert.
De rest van je script hangt dan van de waarde in die var af.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
, maar het was een functie uit een grotere file.
Nee, foutmeldingen kwamen er niet, het werkt verder wel gewoon. Als basis gebruik ik een simpel nieuwsscript dat ik eens ergens tegen kwam. Die heb ik vervolgens uitgebreid en aangepast met de inmiddels opgedane kennis.
Met hetgeen Jan geplaatst heeft, kan ik dus weer verder aan de slag. Hopelijk is een andere opbouw dus de sleutel naar probleemloos editen.
Bedankt voor de reacties.
Sorry van de Nee, foutmeldingen kwamen er niet, het werkt verder wel gewoon. Als basis gebruik ik een simpel nieuwsscript dat ik eens ergens tegen kwam. Die heb ik vervolgens uitgebreid en aangepast met de inmiddels opgedane kennis.
Met hetgeen Jan geplaatst heeft, kan ik dus weer verder aan de slag. Hopelijk is een andere opbouw dus de sleutel naar probleemloos editen.
Bedankt voor de reacties.
Warning: Wrong parameter count for mysql() in
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if (isset ($_GET['post'])) {
if (ctype_digit ($_GET['post'])) {
$sql = "
SELECT id
FROM " . $mysql_posts_table . "
WHERE id = " . $_GET['id'] . "
";
if ($res = mysql ($sql)) { // hiernaar verwijst de foutmelding
if (mysql_num_rows ($res) == 0) {
$msg = '<p>Geen post met id: ' . $_GET['id'] . '</p>';
}
}
}
}
?>
if (isset ($_GET['post'])) {
if (ctype_digit ($_GET['post'])) {
$sql = "
SELECT id
FROM " . $mysql_posts_table . "
WHERE id = " . $_GET['id'] . "
";
if ($res = mysql ($sql)) { // hiernaar verwijst de foutmelding
if (mysql_num_rows ($res) == 0) {
$msg = '<p>Geen post met id: ' . $_GET['id'] . '</p>';
}
}
}
}
?>
Ik heb inmiddels wel mijn code "netter" proberen te maken als het gaat om de query's. Voor de rest is het nog veel bijleren.
Maak van die mysql() eens mysql_query() ;-)
Ah! Mercy ! :-)
Met het stukje script van Jan bleef ik er niet uitkomen, echter met de tips over het maken van een variabele en het gebruik van isset is het gelukt!!!!
Ik heb in de gebruikte form een hidden veld toegevoegd met de naam en de value "zomaar". Deze controleer ik nu met isset. Doordat dit nieuwe stukje het oude update-gedeelte tussen accolades heeft gezet, krijgt het script geen foute opdrachten meer.
Vanaf nu is het exit met de exits!!!!!!
Bedankt Jan, en de anderen ook natuurlijk!!!!
Jaap