SQL - Update - Alleen de ingevulde velden.
Welke script moet ik erbij zetten als alleen de ingevulde velden aangepast moeten worden??
dit maar eens door.
Neem 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require_once 'db_config.php';
$sql = "
UPDATE
werknemers
SET
salaris_schaal = 12
WHERE
voornaam = 'Tim'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'Geen records gewijzigd. <br />Query: '.$sql;
}
else
{
echo 'Update was succesvol!';
}
?>
require_once 'db_config.php';
$sql = "
UPDATE
werknemers
SET
salaris_schaal = 12
WHERE
voornaam = 'Tim'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'Geen records gewijzigd. <br />Query: '.$sql;
}
else
{
echo 'Update was succesvol!';
}
?>
Toevoeging op 21/04/2011 11:32:05:
Het punt is ik heb een tabel 20 invoervelden en ik wil deze gewoon kunnen editen mocht er een typfoutje inzitten
Toevoeging op 21/04/2011 12:06:33:
welke code moet ik gebruiken voor dit:
Alleen de ingevoerde velden moeten geupdate worden
Toevoeging op 21/04/2011 12:30:26:
Dan defineer je in je SET alleen de velden die je wilt wijzigen.
er wordt op voorbeeld1.php een value gestuurd naar voorbeeld2.php en die ziet er zo uit:
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
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
<?
include("connection.php");
for($i=0; $i<$num_rows; $i++){
$id=$_POST['id'];
$title=$_POST['title'];
$suppl = $_POST['supplier'];
$order = $_POST['ordernumber'];
$artil = $_POST['articlename'];
$artin = $_POST['articlenumber'];
$produ = $_POST['productgroup'];
$mater = $_POST['material'];
$colou = $_POST['colour'];
$seaso = $_POST['season'];
$quant = $_POST['quantity'];
$sales = $_POST['salesprice'];
$buyin = $_POST['buyingprice'];
$orded = $_POST['orderdate'];
$trans = $_POST['transportdate'];
$delda = $_POST['deldatefix'];
$sampl = $_POST['samplesize'];
$sampd = $_POST['sampledate'];
$sql = "UPDATE mijntabel
SET title = '$title',
supplier = '$suppl',
ordernumber = '$order',
articlename = '$artil',
articlenumber = '$artin',
productgroup = '$produ',
material = '$mater',
colour = '$colou',
season = '$seaso',
quantity = '$quant',
salesprice = '$sales',
buyingprice = '$buyin',
orderdate = '$orded',
transportdate = '$trans',
deldatefix = '$delda',
samplesize = '$sampl',
sampledate = '$sampd'
WHERE id = $id";
$res = mysql_query($sql) or die(mysql_error());
}
if(mysql_affected_rows() > 0)
header("location:voorbeeld.php");
?>
include("connection.php");
for($i=0; $i<$num_rows; $i++){
$id=$_POST['id'];
$title=$_POST['title'];
$suppl = $_POST['supplier'];
$order = $_POST['ordernumber'];
$artil = $_POST['articlename'];
$artin = $_POST['articlenumber'];
$produ = $_POST['productgroup'];
$mater = $_POST['material'];
$colou = $_POST['colour'];
$seaso = $_POST['season'];
$quant = $_POST['quantity'];
$sales = $_POST['salesprice'];
$buyin = $_POST['buyingprice'];
$orded = $_POST['orderdate'];
$trans = $_POST['transportdate'];
$delda = $_POST['deldatefix'];
$sampl = $_POST['samplesize'];
$sampd = $_POST['sampledate'];
$sql = "UPDATE mijntabel
SET title = '$title',
supplier = '$suppl',
ordernumber = '$order',
articlename = '$artil',
articlenumber = '$artin',
productgroup = '$produ',
material = '$mater',
colour = '$colou',
season = '$seaso',
quantity = '$quant',
salesprice = '$sales',
buyingprice = '$buyin',
orderdate = '$orded',
transportdate = '$trans',
deldatefix = '$delda',
samplesize = '$sampl',
sampledate = '$sampd'
WHERE id = $id";
$res = mysql_query($sql) or die(mysql_error());
}
if(mysql_affected_rows() > 0)
header("location:voorbeeld.php");
?>
Toevoeging op 21/04/2011 12:44:44:
maar stel dat ik maar een vakje wijzig dan wordt de rest verwijderd
- Regels als $order = $_POST['ordernumber']; nergens voor nodig. gewoon $_POST['ordernumber'] gebruiken.
- vars buiten quotes halen en letten op MySQL injection. title = '$title' wordt dus title = '".mysql_real_escape_string($_POST['title'])."'
mark weet jij hoe ik 1 vakje kan editen/updaten zonder dat alles verwijderd wordt ?
Als je niet anders kan, moet je de waarde naar zichzelf verwijzen.
UPDATE programmeurs SET id = id, naam = "Gijsje", eigenschap_leeftijd = eigenschap_leeftijd, eigenschap_eigenwijs = "Behoorlijk" WHERE id = 1
Gewijzigd op 21/04/2011 13:59:42 door Gerben Jacobs
Je kunt van tevoren toch gewoon de gegevens uit de database trekken en daarmee de formulier velden met de huidige waarde vullen? Dan raak je ook niets kwijt, tenzij dat de bedoeling is natuurlijk.
Gewoon alle velden die geupdate kunnen worden opnemen in de SET en dan lekker met IFNULL aan de slag gaan
Toevoeging op 22/04/2011 17:07:24:
niemand?
Toevoeging op 22/04/2011 17:31:19:
hoe kan ik ervoor zorgen dat $sd = mysql_result($result,$i,"sampledate");
naar bewerken.php wordt verzonden met deze waarden??? is hier een tutorial van ??