INSERT, UPDATE en / of DELETE
Tijdens deze EDIT is het mogelijk dat er een nieuwe checkbox is aangevinkt of dat een bestaande is uitgevinkt.
Hoe kan ik zorgen dat dit netjes verwerkt blijft worden?
Ik heb de onderstaande UPDATE maar daar ga ik het niet meer redden..
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if ($_POST['update_medewerker'] == "yes")
{
// Zet POSTs om naar variable
foreach($_POST['beschikbaar'] as $key => $value)
{
$beschikbaar = (isset($value)) ? $key : '';
// Voeg beschikbaarheid toe via een INSERT
$sql2 = "UPDATE INTO beschikbaarheid
SET medewerker_id = '" . $medewerker_id . "',
dag = '" . $beschikbaar . "'
WHERE medewerker_id = '". $_GET['id'] ."' ";
// Voer SQL uit
mysql_query($sql2) or die("Oops... INSERT INTO beschikbaarheid gaat fout. ".mysql_error());
}
if (!$result = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het wijzigen van de kantoorruimte';
echo ':' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
else
{
echo '<b>Beschikbaarheid is gewijzigd.</b><br>' ;
}
}
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if ($_POST['update_medewerker'] == "yes")
{
// Zet POSTs om naar variable
foreach($_POST['beschikbaar'] as $key => $value)
{
$beschikbaar = (isset($value)) ? $key : '';
// Voeg beschikbaarheid toe via een INSERT
$sql2 = "UPDATE INTO beschikbaarheid
SET medewerker_id = '" . $medewerker_id . "',
dag = '" . $beschikbaar . "'
WHERE medewerker_id = '". $_GET['id'] ."' ";
// Voer SQL uit
mysql_query($sql2) or die("Oops... INSERT INTO beschikbaarheid gaat fout. ".mysql_error());
}
if (!$result = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het wijzigen van de kantoorruimte';
echo ':' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
else
{
echo '<b>Beschikbaarheid is gewijzigd.</b><br>' ;
}
}
}
?>
Kan ook aan mij liggen maar ik gebruik hem altijd zo:
Code (php)
1
2
3
2
3
<?php
$sqlcode="UPDATE content_bebouwing_straten SET tekst = '" . mysql_real_escape_string($tekst) . "' WHERE id = " . $id . " LIMIT 1";
?>
$sqlcode="UPDATE content_bebouwing_straten SET tekst = '" . mysql_real_escape_string($tekst) . "' WHERE id = " . $id . " LIMIT 1";
?>
@Niek: laat die LIMIT maar zitten.
@Jezpur Klopt, zit er nog in van iets anders... :-)
Heeft iemand een versimpeld voorbeeld hoe ik die INSERT, UPDATE DELETE in één keer netjes kkan verwerken?
if count = als in db then UPDATE, elseif count < database then DELETE else INSERT...
Oid
Doe dat maar gewoon met PHP.
Nu is er alleen controle op of de waarde gelijk, kleiner dan over groter dan is. Maar er is geen check op wat er nu precies is uit gevinkt 8-)
Iemand zou nu dus maandag uit kunnen vinken en zaterdag aanvinken dan blijft het aantal gelijk en dan wordt er een UPDATE gedaan maar dat gaat niet lukken want zaterdag moet een INSERT krijgen.
Hoe kan ik dit controleren?
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
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
<?php
// Zet POSTs om naar variable
foreach($_POST['beschikbaar'] as $key => $value)
{
$beschikbaar = (isset($value)) ? $key : '';
// Controle op huidige aantal dagen beschikbaar en aantal aangevinkte dagen
$old_checkbox = ceil(mysql_num_rows(mysql_query("SELECT * FROM beschikbaarheid WHERE medewerker_id= '". $_GET['id'] ."' ")));
$new_checkbox = count($_POST['beschikbaar']);
if ($old_checkbox == $new_checkbox)
{
UPDATE
}
elseif ($old_checkbox < $new_checkbox)
{
INSERT
}
else
{
DELETE
}
// Voeg beschikbaarheid toe via een INSERT
$sql2 = "UPDATE beschikbaarheid
SET dag = '" . $beschikbaar . "'
WHERE medewerker_id = '". $_GET['id'] ."' ";
// Voer SQL uit
mysql_query($sql2) or die("Oops... INSERT INTO beschikbaarheid gaat fout. ".mysql_error());
}
if (!$result = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het wijzigen van de kantoorruimte';
echo ':' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
else
{
$totaal = count($_POST['beschikbaar']);
echo $totaal;
echo ' , ' . $old_checkbox;
echo '<b>Beschikbaarheid is gewijzigd.</b><br>' ;
}
?>
// Zet POSTs om naar variable
foreach($_POST['beschikbaar'] as $key => $value)
{
$beschikbaar = (isset($value)) ? $key : '';
// Controle op huidige aantal dagen beschikbaar en aantal aangevinkte dagen
$old_checkbox = ceil(mysql_num_rows(mysql_query("SELECT * FROM beschikbaarheid WHERE medewerker_id= '". $_GET['id'] ."' ")));
$new_checkbox = count($_POST['beschikbaar']);
if ($old_checkbox == $new_checkbox)
{
UPDATE
}
elseif ($old_checkbox < $new_checkbox)
{
INSERT
}
else
{
DELETE
}
// Voeg beschikbaarheid toe via een INSERT
$sql2 = "UPDATE beschikbaarheid
SET dag = '" . $beschikbaar . "'
WHERE medewerker_id = '". $_GET['id'] ."' ";
// Voer SQL uit
mysql_query($sql2) or die("Oops... INSERT INTO beschikbaarheid gaat fout. ".mysql_error());
}
if (!$result = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het wijzigen van de kantoorruimte';
echo ':' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
else
{
$totaal = count($_POST['beschikbaar']);
echo $totaal;
echo ' , ' . $old_checkbox;
echo '<b>Beschikbaarheid is gewijzigd.</b><br>' ;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Richard Duinmayer
Iemand hier ideëen over / voor?
Regels 9 en 10 => tellen lijkt mij overbodig. En ceil() helemaal aangezien het altijd een integer teruggeeft.
Volgende if()jes lijken mij ook zinloos omdat het niets met het aantal rijen te maken heeft maar met de keys.
Je zal het moeten aanpakken op dezelfde manier als het scriptje dat ik heb gemaakt in je andere post.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$days = array('ma'=>'Maandag', 'di'=>'Dinsdag', 'wo'=>'Woensdag', 'do'=>'Donderdag', 'vr'=>'Vrijdag', 'za'=>'Zaterdag', 'zo'=>'Zondag');
$hulp = array();
while ($arr3 = mysql_fetch_assoc($res))
{
$hulp[] = $arr3['dag'];
}
foreach($days as $day=>$name)
{
echo '<input type="checkbox" name="beschikbaar[' .$day. ']"' . ((in_array($day, $hulp)) ? ' checked="checked"' : '') . '>';
echo $name;
echo '<br>' . "\n";
}
?>
$days = array('ma'=>'Maandag', 'di'=>'Dinsdag', 'wo'=>'Woensdag', 'do'=>'Donderdag', 'vr'=>'Vrijdag', 'za'=>'Zaterdag', 'zo'=>'Zondag');
$hulp = array();
while ($arr3 = mysql_fetch_assoc($res))
{
$hulp[] = $arr3['dag'];
}
foreach($days as $day=>$name)
{
echo '<input type="checkbox" name="beschikbaar[' .$day. ']"' . ((in_array($day, $hulp)) ? ' checked="checked"' : '') . '>';
echo $name;
echo '<br>' . "\n";
}
?>
Ja
Oke dan ga ik daarmee verder, dank je wel
Hoeveel regels is je script?
Deze pagina telt 684 regels...
Zie je PM.