Rijen in database verplaatsen naar ander tabel.
Ik wil een rij verplaatsen van mijn ene tabel naar een andere(SQL).
Hij moet dus van pagina 1 naar pagina 2 en hij moet dan niet meer zichtbaar zijn op pagina 1.
Dit is wat ik nu allemaal heb:
Ik denk dat ik in deze 2 wat moet aanpassen
1
2
Gewijzigd op 27/07/2018 12:27:31 door - Ariën -
Ook zul je je queries wat veiliger moeten maken zodat deze niet vatbaar zijn voor SQL-injectie. Ik neem aan dat de pagina's waarin deze bewerkingen worden ge-include ook worden afgeschermd zodat niet iedereen deze zomaar uit kan voeren?
Na een header('Location: ...') hoort overigens bijna altijd een exit te staan, zoals hier wordt uitgelegd.
Ik weet niet precies waar die functionaliteit over gaat - ruilverzoeken van diensten? - maar is de naamgeving van de kolommen ook niet een beetje apart? Er staat "dienstvan" en "overgenomendoor", maar is dat niet meer zoiets als "eigenaar" en "geinteresseerde" (of "aanbieder" en "vrager")? De kolomnamen suggereren dat het al een voldongen feit is, terwijl het meer een voorstel is? Dan zou ik eigenlijk ook een historie verwachten van wie de dienst allemaal was, en een tabel met diensten met de huidige eigenaar?
Omdat dit een administratief systeem betreft en dit soort bewerkingen als ondeelbare acties uitgevoerd dienen te worden zou ik eigenlijk hier en daar ook het gebruik van transacties verwachten.
En omdat dit een administratief systeem betreft wil je misschien deze informatie ook bewaren, als je het (geweigerd) ruilverzoek verwijdert, dan "vernietig" je in zekere zin "bewijs" dat er ooit een verzoek is ingediend. Mogelijk is het een beter idee om zo'n tabel een soort van status-kolom te geven ("active" of "deleted" ofzo) waar je op kunt filteren (WHERE active = 1 of WHERE deleted = 0). Zo kun je altijd nog de "getuigen" van zo'n verzoek terugvinden, al zijn die niet direct op het scherm te zien. Wees spaarzaam in wat je permanent verwijdert, tenzij dit voor directe capaciteitsproblemen zorgt, uiteraard.
- Ariën - op 27/07/2018 08:08:45:
Kan je jouw code even delen hier tussen de [code] en [/code] UBB-tags voordat je afbeelding niet meer werkt en zodat we eventueel delen van je code kunnen copy/pasten?
Deze code zou dan een rij uit de tabel moeten verplaatsen
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
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
<?php
function getweigerruilverzoek($database)
{
$dienstvan = "";
$overgenomendoor = "";
$datum = "";
$tijd = "";
$reden = "";
$door = "";
if (empty($_GET["id"]))
{
// toevoegen
if (isset($_POST["weiger"]))
{
// alleen wanneer submit button is geklikt
$query = "INSERT INTO `geweigerd` (`dienstvan`, `overgenomendoor`, `datum`, `tijd`, `reden`, `door`) VALUES ('" . $_POST["dienstvan"] . "', '" . $_POST["overgenomendoor"] . "', '" . $_POST["datum"] . "', '" . $_POST["tijd"] ."', '" . $_POST["reden"] . "', '" . $_POST["door"] . "') FROM `ruilverzoek`";
$database->query($query);
header("Location: index.php?content=geweigerd");
}
}
// geef formulier terug mits nodig
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">Weiger formulier</span></h5>
<form action="index.php?content=geweigerd" method="post">
<table>
<tr><td>Reden:</td><td><input type="text" name="reden" value="" placeholder="Reden weigering"' . $reden . '" /></td></tr>
<tr><td>Door:</td><td><input type="text" name="door" value="" placeholder="Geweigerd door?"' . $door . '" /></td></tr>
<tr><td></td><td><input type="submit" name="Weiger" value="Weigeren" /></td></tr>
</table>
</form>';
}
?>
function getweigerruilverzoek($database)
{
$dienstvan = "";
$overgenomendoor = "";
$datum = "";
$tijd = "";
$reden = "";
$door = "";
if (empty($_GET["id"]))
{
// toevoegen
if (isset($_POST["weiger"]))
{
// alleen wanneer submit button is geklikt
$query = "INSERT INTO `geweigerd` (`dienstvan`, `overgenomendoor`, `datum`, `tijd`, `reden`, `door`) VALUES ('" . $_POST["dienstvan"] . "', '" . $_POST["overgenomendoor"] . "', '" . $_POST["datum"] . "', '" . $_POST["tijd"] ."', '" . $_POST["reden"] . "', '" . $_POST["door"] . "') FROM `ruilverzoek`";
$database->query($query);
header("Location: index.php?content=geweigerd");
}
}
// geef formulier terug mits nodig
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">Weiger formulier</span></h5>
<form action="index.php?content=geweigerd" method="post">
<table>
<tr><td>Reden:</td><td><input type="text" name="reden" value="" placeholder="Reden weigering"' . $reden . '" /></td></tr>
<tr><td>Door:</td><td><input type="text" name="door" value="" placeholder="Geweigerd door?"' . $door . '" /></td></tr>
<tr><td></td><td><input type="submit" name="Weiger" value="Weigeren" /></td></tr>
</table>
</form>';
}
?>
Hier in moeten de rijen komen, wanneer ze worden geweigerd.
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
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
<?php
function getGeweigerd($database)
{
$returnOutput = "";
$query = "SELECT * FROM `geweigerd`";
$result = $database->query($query);
if ($result->num_rows > 0)
{
$returnOutput .= "<table border='1' width='150%'>";
$returnOutput .= '<tr>';
$returnOutput .= '<th>Dienst van:</th>';
$returnOutput .= '<th>Wordt overgenomen door:</th>';
$returnOutput .= '<th>Datum:</th>';
$returnOutput .= '<th>Tijd:</th>';
$returnOutput .= '<th>Reden:</th>';
$returnOutput .= '<th>Door:</th>';
$returnOutput .= '</tr>';
while ($row = $result->fetch_assoc())
{
$returnOutput .= '<tr>';
$returnOutput .= '<td>' . $row["dienstvan"] . '</td>';
$returnOutput .= '<td>' . $row["overgenomendoor"] . '</td>';
$returnOutput .= '<td>' . $row["datum"] . '</td>';
$returnOutput .= '<td>' . $row["tijd"] . '</td>';
$returnOutput .= '<td>' . $row["reden"] . '</td>';
$returnOutput .= '<td>' . $row["door"] . '</td>';
}
$returnOutput .= "</table>";
}
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">Geweigerde Ruilverzoeken</span></h5>'.$returnOutput."<br><br>";
}
?>
function getGeweigerd($database)
{
$returnOutput = "";
$query = "SELECT * FROM `geweigerd`";
$result = $database->query($query);
if ($result->num_rows > 0)
{
$returnOutput .= "<table border='1' width='150%'>";
$returnOutput .= '<tr>';
$returnOutput .= '<th>Dienst van:</th>';
$returnOutput .= '<th>Wordt overgenomen door:</th>';
$returnOutput .= '<th>Datum:</th>';
$returnOutput .= '<th>Tijd:</th>';
$returnOutput .= '<th>Reden:</th>';
$returnOutput .= '<th>Door:</th>';
$returnOutput .= '</tr>';
while ($row = $result->fetch_assoc())
{
$returnOutput .= '<tr>';
$returnOutput .= '<td>' . $row["dienstvan"] . '</td>';
$returnOutput .= '<td>' . $row["overgenomendoor"] . '</td>';
$returnOutput .= '<td>' . $row["datum"] . '</td>';
$returnOutput .= '<td>' . $row["tijd"] . '</td>';
$returnOutput .= '<td>' . $row["reden"] . '</td>';
$returnOutput .= '<td>' . $row["door"] . '</td>';
}
$returnOutput .= "</table>";
}
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">Geweigerde Ruilverzoeken</span></h5>'.$returnOutput."<br><br>";
}
?>
Toevoeging op 27/07/2018 12:31:57:
Thomas van den Heuvel op 27/07/2018 11:15:05:
@Merdin K wat ik je in ieder geval zou aanraden is dat je dit soort operaties verder compartimenteert in aparte acties. Nu bestaat namelijk het gevaar dat dit verzandt in een brei spaghetti-code.
Ook zul je je queries wat veiliger moeten maken zodat deze niet vatbaar zijn voor SQL-injectie. Ik neem aan dat de pagina's waarin deze bewerkingen worden ge-include ook worden afgeschermd zodat niet iedereen deze zomaar uit kan voeren?
Na een header('Location: ...') hoort overigens bijna altijd een exit te staan, zoals hier wordt uitgelegd.
Ik weet niet precies waar die functionaliteit over gaat - ruilverzoeken van diensten? - maar is de naamgeving van de kolommen ook niet een beetje apart? Er staat "dienstvan" en "overgenomendoor", maar is dat niet meer zoiets als "eigenaar" en "geinteresseerde" (of "aanbieder" en "vrager")? De kolomnamen suggereren dat het al een voldongen feit is, terwijl het meer een voorstel is? Dan zou ik eigenlijk ook een historie verwachten van wie de dienst allemaal was, en een tabel met diensten met de huidige eigenaar?
Omdat dit een administratief systeem betreft en dit soort bewerkingen als ondeelbare acties uitgevoerd dienen te worden zou ik eigenlijk hier en daar ook het gebruik van transacties verwachten.
En omdat dit een administratief systeem betreft wil je misschien deze informatie ook bewaren, als je het (geweigerd) ruilverzoek verwijdert, dan "vernietig" je in zekere zin "bewijs" dat er ooit een verzoek is ingediend. Mogelijk is het een beter idee om zo'n tabel een soort van status-kolom te geven ("active" of "deleted" ofzo) waar je op kunt filteren (WHERE active = 1 of WHERE deleted = 0). Zo kun je altijd nog de "getuigen" van zo'n verzoek terugvinden, al zijn die niet direct op het scherm te zien. Wees spaarzaam in wat je permanent verwijdert, tenzij dit voor directe capaciteitsproblemen zorgt, uiteraard.
Ook zul je je queries wat veiliger moeten maken zodat deze niet vatbaar zijn voor SQL-injectie. Ik neem aan dat de pagina's waarin deze bewerkingen worden ge-include ook worden afgeschermd zodat niet iedereen deze zomaar uit kan voeren?
Na een header('Location: ...') hoort overigens bijna altijd een exit te staan, zoals hier wordt uitgelegd.
Ik weet niet precies waar die functionaliteit over gaat - ruilverzoeken van diensten? - maar is de naamgeving van de kolommen ook niet een beetje apart? Er staat "dienstvan" en "overgenomendoor", maar is dat niet meer zoiets als "eigenaar" en "geinteresseerde" (of "aanbieder" en "vrager")? De kolomnamen suggereren dat het al een voldongen feit is, terwijl het meer een voorstel is? Dan zou ik eigenlijk ook een historie verwachten van wie de dienst allemaal was, en een tabel met diensten met de huidige eigenaar?
Omdat dit een administratief systeem betreft en dit soort bewerkingen als ondeelbare acties uitgevoerd dienen te worden zou ik eigenlijk hier en daar ook het gebruik van transacties verwachten.
En omdat dit een administratief systeem betreft wil je misschien deze informatie ook bewaren, als je het (geweigerd) ruilverzoek verwijdert, dan "vernietig" je in zekere zin "bewijs" dat er ooit een verzoek is ingediend. Mogelijk is het een beter idee om zo'n tabel een soort van status-kolom te geven ("active" of "deleted" ofzo) waar je op kunt filteren (WHERE active = 1 of WHERE deleted = 0). Zo kun je altijd nog de "getuigen" van zo'n verzoek terugvinden, al zijn die niet direct op het scherm te zien. Wees spaarzaam in wat je permanent verwijdert, tenzij dit voor directe capaciteitsproblemen zorgt, uiteraard.
Dit alles wat jij aangeeft is binnen 3 tellen aan te passen. Maar ik vraag hier niet om. Mijn vraag is hoe ik ervoor kan zorgen dat er een rij van de ene tabel naar een andere tabel geplaatst kan worden.
Alvast bedankt.
Gewijzigd op 27/07/2018 12:33:23 door Merdin K
Je wilt toch niet dat mensen straks via een SQL-injection in jouw database gaan graven, terwijl je mogelijk zelfs een datalek moet aangeven bij de Autoriteit Persoonsgegevens? Wees blij dat Thomas je gewaarschuwd heeft en nog wat zinvolle tips gegeven heeft over je code.
Verder zie ik maar één tabel 'geweigerd' in beide codes. Dus wat valt er over te hevelen?
- Ariën - op 27/07/2018 12:37:57:
Verder zie ik maar één tabel 'geweigerd' in beide codes. Dus wat valt er over te hevelen?
Hij moet uit een andere tabel namelijk 'ruilverzoek', de rij verplaatsen naar de tabel 'geweigerd'
hier evt de code van 'ruilverzoek' en de code die het toevoegen van een ruilverzoek mogelijk maakt.
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
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
<?php
function getRuilverzoeken($database)
{
$returnOutput = "";
$query = "SELECT * FROM `ruilverzoek`";
$result = $database->query($query);
$returnOutput .= '<a href="index.php?content=addruilverzoek"><button>Nieuw ruilverzoek</button></a>';
if ($result->num_rows > 0)
{
$returnOutput .= "<table border='1' width='150%'>";
$returnOutput .= '<tr>';
$returnOutput .= '<th>Dienst van:</th>';
$returnOutput .= '<th>Wordt overgenomen door:</th>';
$returnOutput .= '<th>Datum:</th>';
$returnOutput .= '<th>Tijd:</th>';
$returnOutput .= '</tr>';
while ($row = $result->fetch_assoc())
{
$returnOutput .= '<tr>';
$returnOutput .= '<td>' . $row["dienstvan"] . '</td>';
$returnOutput .= '<td>' . $row["overgenomendoor"] . '</td>';
$returnOutput .= '<td>' . $row["datum"] . '</td>';
$returnOutput .= '<td>' . $row["tijd"] . '</td>';
}
$returnOutput .= "</table>";
}
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">Ruilverzoeken</span></h5>'.$returnOutput."<br><br>";
}
?>
function getRuilverzoeken($database)
{
$returnOutput = "";
$query = "SELECT * FROM `ruilverzoek`";
$result = $database->query($query);
$returnOutput .= '<a href="index.php?content=addruilverzoek"><button>Nieuw ruilverzoek</button></a>';
if ($result->num_rows > 0)
{
$returnOutput .= "<table border='1' width='150%'>";
$returnOutput .= '<tr>';
$returnOutput .= '<th>Dienst van:</th>';
$returnOutput .= '<th>Wordt overgenomen door:</th>';
$returnOutput .= '<th>Datum:</th>';
$returnOutput .= '<th>Tijd:</th>';
$returnOutput .= '</tr>';
while ($row = $result->fetch_assoc())
{
$returnOutput .= '<tr>';
$returnOutput .= '<td>' . $row["dienstvan"] . '</td>';
$returnOutput .= '<td>' . $row["overgenomendoor"] . '</td>';
$returnOutput .= '<td>' . $row["datum"] . '</td>';
$returnOutput .= '<td>' . $row["tijd"] . '</td>';
}
$returnOutput .= "</table>";
}
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">Ruilverzoeken</span></h5>'.$returnOutput."<br><br>";
}
?>
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
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
<?php
function getaddruilverzoek($database)
{
$dienstvan = "";
$overgenomendoor = "";
$datum = "";
$tijd = "";
if (empty($_GET["id"]))
{
// toevoegen
if (isset($_POST["addEdit"]))
{
// alleen wanneer submit button is geklikt
$query = "INSERT INTO `ruilverzoek` (`dienstvan`, `overgenomendoor`, `datum`, `tijd`) VALUES ('" . $_POST["dienstvan"] . "', '" . $_POST["overgenomendoor"] . "', '" . $_POST["datum"] . "', '" . $_POST["tijd"] ."')";
$database->query($query);
header("Location: index.php?content=ruilverzoeken");
}
}
else
{
// wijzigen
$id = $_GET["id"];
$query = "SELECT * FROM `ruilverzoek` WHERE `id` = $id";
$result = $database->query($query);
$row = $result->fetch_assoc();
$dienstvan = $row["dienstvan"];
$overgenomendoor = $row["overgenomendoor"];
$datum = $row["datum"];
$tijd = $row["tijd"];
if (isset($_POST["addEdit"]))
{
// alleen wanneer submit button is geklikt
$query = "UPDATE `ruilverzoek` SET `dienstvan`='" . $_POST["dienstvan"] . "', `overgenomendoor`='" . $_POST["overgenomendoor"] . "', `datum`='" . $_POST["datum"] . "', `tijd`=" . $_POST["tijd"] . "' WHERE `id`=$id";
$database->query($query);
header("Location: index.php?content=ruilverzoeken");
}
}
// geef formulier terug mits nodig
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">admin</span></h5>
<form action="" method="post">
<table>
<p style="color:red;">Zorg ervoor dat je de gegevens meteen GOED invoert, aangezien je deze niet meer kan aanpassen!</p>
<tr><td>Dienst van:</td><td><input type="text" name="dienstvan" value="' . $dienstvan . '" /></td></tr>
<tr><td>Wordt overgenomen door:</td><td><input type="text" name="overgenomendoor" value="' . $overgenomendoor . '" /></td></tr>
<tr><td>Datum:</td><td><input type="text" name="datum" value="" placeholder="dd-mm-yyyy"' . $datum . '" /></td></tr>
<tr><td>Tijd:</td><td><input type="text" name="tijd" value="" placeholder="00:00 - 00:00"' . $tijd . '" /></td></tr>
<tr><td></td><td><input type="submit" name="addEdit" value="Add or Edit" /></td></tr>
</table>
</form>';
}
?>
function getaddruilverzoek($database)
{
$dienstvan = "";
$overgenomendoor = "";
$datum = "";
$tijd = "";
if (empty($_GET["id"]))
{
// toevoegen
if (isset($_POST["addEdit"]))
{
// alleen wanneer submit button is geklikt
$query = "INSERT INTO `ruilverzoek` (`dienstvan`, `overgenomendoor`, `datum`, `tijd`) VALUES ('" . $_POST["dienstvan"] . "', '" . $_POST["overgenomendoor"] . "', '" . $_POST["datum"] . "', '" . $_POST["tijd"] ."')";
$database->query($query);
header("Location: index.php?content=ruilverzoeken");
}
}
else
{
// wijzigen
$id = $_GET["id"];
$query = "SELECT * FROM `ruilverzoek` WHERE `id` = $id";
$result = $database->query($query);
$row = $result->fetch_assoc();
$dienstvan = $row["dienstvan"];
$overgenomendoor = $row["overgenomendoor"];
$datum = $row["datum"];
$tijd = $row["tijd"];
if (isset($_POST["addEdit"]))
{
// alleen wanneer submit button is geklikt
$query = "UPDATE `ruilverzoek` SET `dienstvan`='" . $_POST["dienstvan"] . "', `overgenomendoor`='" . $_POST["overgenomendoor"] . "', `datum`='" . $_POST["datum"] . "', `tijd`=" . $_POST["tijd"] . "' WHERE `id`=$id";
$database->query($query);
header("Location: index.php?content=ruilverzoeken");
}
}
// geef formulier terug mits nodig
return '<h5 class="w3-center w3-padding-48"><span class="w3-tag w3-wide">admin</span></h5>
<form action="" method="post">
<table>
<p style="color:red;">Zorg ervoor dat je de gegevens meteen GOED invoert, aangezien je deze niet meer kan aanpassen!</p>
<tr><td>Dienst van:</td><td><input type="text" name="dienstvan" value="' . $dienstvan . '" /></td></tr>
<tr><td>Wordt overgenomen door:</td><td><input type="text" name="overgenomendoor" value="' . $overgenomendoor . '" /></td></tr>
<tr><td>Datum:</td><td><input type="text" name="datum" value="" placeholder="dd-mm-yyyy"' . $datum . '" /></td></tr>
<tr><td>Tijd:</td><td><input type="text" name="tijd" value="" placeholder="00:00 - 00:00"' . $tijd . '" /></td></tr>
<tr><td></td><td><input type="submit" name="addEdit" value="Add or Edit" /></td></tr>
</table>
</form>';
}
?>
Gewijzigd op 27/07/2018 13:08:58 door - Ariën -
Een ruilverzoek die geweigerd is, kan je toch prima flaggen als 'geweigerd'?
Ik zie vaak weinig redenen dat je data vanuit een ene naar een andere tabel wilt overhevelen. De entiteit (ruilverzoeken, of beter gezegd items of diensten) blijft immers hetzelfde, dus het kan prima in één tabel. Ik kan me wel indenken als je een tabel juist uit wilt splitsen t.b.v. een conversie tot een betere structuur van bijv. een één-op-één relatie naar een één-op-veel, dat je dit wilt doen. Maar daar is in dit geval geen sprake van, want het blijft één entiteit en dezelfde relatie.
Maar als je echt niet anders wilt, kan je het met een SQL-code zelf overhevelen. Een sample van de MySQL-site is hierbij:
Code (php)
1
2
3
2
3
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Maar ik raad dit niet aan.
Gewijzigd op 27/07/2018 13:10:33 door - Ariën -
Er werken meer dan 80 personen in dit bedrijf. En er zijn in de whatsappgroep constant mensen die willen ruilen.
Ik wil het splitsen zodat er een duidelijk overzicht is.
Zo kunnen mensen zien, oh, mijn ruilverzoek is geaccepteerd. Top.
Of oh mijn ruilverzoek is geweigerd, waarom? De reden staat er dan bij. Dan wordt na 1 week deze verwijderd uit de tabel in de database.
Als ik nu in 1 tabel dit ga doen, komen er steeds de zelfde ruilverzoeken met alleen een andere naam bij 'overgenomen door'. En dit brengt chaos en geen overzicht.
Dus als je me aub een code kan sturen die dit doet, dan zou dat heel fijn zijn. Ik ben namelijk niet een expert in php etc en dit is de eerste keer dat ik zo'n systeem bouw. Het security gedeelte komt later nog, want ik ga dit laten nakijken door een php-expert. Alleen is het nu vakantie, dus kan ik daar niet in contact mee komen.
Edit:
Het is niet nodig om het voorlaatste bericht in een thread integraal te quoten. Vandaar dat ik deze heb weggesnoeid. Zo blijft het topic beter leesbaarder.
Gewijzigd op 27/07/2018 13:24:45 door - Ariën -
Ik kan me niet indenken dat het een rotzooi wordt, of laat je mensen soms direct in je database-tool (phpMyAdmin) werken zonder een custom gebouwde GUI? Je kan zelf in de gebruikersomgeving prima de reden tonen als een item geweigerd is, en niet tonen als deze niet geweigerd is. Ik weet niet waar het allemaal precies om draait, maar je kan ook een tabel bijhouden met alle transacties met de mutaties. Dan kan je prima terughalen of iets al eerder is aangepast. Uiteraard komen transactions in MySQL om de hoek kijken.
maar ik blijf hierin geen reden vinden om alles over te hevelen naar een andere tabel. Ik denk dat je PHP-expert dat ook wel zult vinden. ;-)
Gewijzigd op 27/07/2018 13:25:24 door - Ariën -
Quote:
Als ik nu in 1 tabel dit ga doen, komen er steeds de zelfde ruilverzoeken met alleen een andere naam bij 'overgenomen door'. En dit brengt chaos en geen overzicht.
Uit database-optiek snijdt dat meer hout dan records overhevelen van tabel A naar tabel B. Maak gewoon een status-kolom aan op een of andere manier... Stel dat je straks statistieken wilt genereren van deze informatie? "Hoeveel ruilverzoeken waren er, hoeveel zijn er geweigerd, hoeveel zijn er geaccepteerd". Je wilt dan toch niet dat je die informatie uit meerdere tabellen bij elkaar moet sprokkelen?
Dit lijkt mij sowieso ff een moment om na te denken over wat je volgende stap(pen) zijn in plaats van alles er in lopen te hakken en later tot de conclusie te komen dat je toch in de eerderegenoemde chaos terecht bent gekomen.
Quote:
Dus als je me aub een code kan sturen die dit doet, dan zou dat heel fijn zijn. Ik ben namelijk niet een expert in php etc en dit is de eerste keer dat ik zo'n systeem bouw.
Reden te meer om na te denken over wat je doet.
Quote:
Het security gedeelte komt later nog, want ik ga dit laten nakijken door een php-expert. Alleen is het nu vakantie, dus kan ik daar niet in contact mee komen.
Zodat hij nog eens dunnetjes kan overdoen wat je nu doet? :/
Ik zou er zelf overigens niet blij van worden als ik in zijn huid zou kruipen. ;-)
Gewijzigd op 27/07/2018 13:46:28 door - Ariën -
Thomas van den Heuvel op 27/07/2018 13:42:18:
Ja maar dit hoef ik allemaal dus niet.
Het is gewoon een simpel systeem waar mensen een ruilverzoek kunnen doen en laten accepteren/weigeren door een manager.
Dan wordt na 1 week het verzoek verwijderd uit de tabel als hij is geweigerd. Waarom zou ik ruilverzoeken behouden, dat is hetzelfde als wanneer ik naar het restaurant bel en mijn ruilverzoek indien en zij zeggen: nee het ruilen kan niet. Dat ik dan tegen hun zeg: oh jammer, maar sla het wel op!!!
Dat is toch niet logisch.
Quote:
Stel dat je straks statistieken wilt genereren van deze informatie? "Hoeveel ruilverzoeken waren er, hoeveel zijn er geweigerd, hoeveel zijn er geaccepteerd". Je wilt dan toch niet dat je die informatie uit meerdere tabellen bij elkaar moet sprokkelen?
Ja maar dit hoef ik allemaal dus niet.
Het is gewoon een simpel systeem waar mensen een ruilverzoek kunnen doen en laten accepteren/weigeren door een manager.
Dan wordt na 1 week het verzoek verwijderd uit de tabel als hij is geweigerd. Waarom zou ik ruilverzoeken behouden, dat is hetzelfde als wanneer ik naar het restaurant bel en mijn ruilverzoek indien en zij zeggen: nee het ruilen kan niet. Dat ik dan tegen hun zeg: oh jammer, maar sla het wel op!!!
Dat is toch niet logisch.
Waarom zou je het behouden? Zodat je later nog eens statistieken kan uitdraaien.
Je weet nooit of je dat ooit nog eens nodig hebt. Zeg nooit 'nooit'.....
Later kan je er spijt van hebben dat je niet weet of je het afgelopen jaar meer of minder ruilverzoeken gehad hebt. Hieruit kan je prima rapportages opmaken of wijzigingen aan je site hebben bijgedragen aan een grotere conversie bijvoorbeeld. Zulke dingen wil je daarom al graag behouden.
Er zijn ook mensen die uit oogpunt van de grootte van de database vrezen dat de boel trager zou worden. Maar dat is allemaal schijn. De database van mijn website is momenteel al 40 MB en die van Tweakers is voor zover ik weet iets van 20 á 30 gigabyte.
Gewijzigd op 27/07/2018 13:55:31 door - Ariën -
Ik weet 1000% zeker dat ik die data niet nodig zal hebben.
Gewijzigd op 27/07/2018 14:00:08 door - Ariën -
Merdin K op 27/07/2018 13:54:59:
Ik weet 1000% zeker dat ik die data niet nodig zal hebben.
Ik benadruk nog even:
Quote:
Je weet nooit of je dat ooit nog eens nodig hebt. Zeg nooit 'nooit'.....
En lees even de rest daarna nog even. En wat kan het nou voor kwaad als je alles van de alle jaren opslaat? De overzichtelijkheid gaat echt niet verloren.
Gewijzigd op 27/07/2018 13:58:53 door - Ariën -
Of ik deze data nou zou willen of niet, dit is nog steeds niet het doel van mijn topic. Je kan constant hierover doorgaan, want het lijkt nu dat ik eigenwijs aan het doen ben, maar ik weet wat ik zeg.
Dus als je mij kan helpen met rijen overplaatsen naar andere tabellen dan hoor ik het graag. Het overige boeit mij niet op dit moment.
Gewijzigd op 27/07/2018 14:05:04 door - Ariën -
Ik raad het alleen niet aan, en raad je eerder aan dit even te overleggen met je PHP-expert als die terug is van zijn vakantie.
Maar stiekem ben ik nog best wel benieuwd naar je argumentatie waarom je alles niet wilt bewaren. ;-)
Maar geloof me, dit hierboven is het beste advies wat ik kan zeggen nu ik me al 12 jaar met PHP bezig houd.
Gewijzigd op 27/07/2018 14:05:32 door - Ariën -
De rooster van de vorige dag wordt weggegooid wanneer die niet meer nodig is, dus ruilverzoeken bewaren heeft dan ook geen zin.
Edit:
Het is niet nodig om elk voorgaande bericht integraal hier te quoten. Zie ook mijn vorige mod-edit.
Gewijzigd op 27/07/2018 14:26:49 door - Ariën -
SQL-code voorbeeld prima gebruiken om de data over te hevelen. Je dient hem nog wel even aan te passen naar jouw situatie.
Als je dat écht zo graag wilt, dan kan je de door mij geplaatste Gewijzigd op 27/07/2018 14:25:24 door - Ariën -
Ik vrees dat die PHP-expert een beroerde eerste dag gaat hebben als 'ie terug is van vakantie.
Merdin K op 27/07/2018 14:18:18:
De rooster van de vorige dag wordt weggegooid wanneer die niet meer nodig is, dus ruilverzoeken bewaren heeft dan ook geen zin.
Als je geweigerde ruilverzoeken toch niet wilt bewaren, waarom zou je ze dan überhaupt naar een andere tabel willen overhevelen? Allemaal dubbel werk dat meer problemen introduceert dan oplost.
Ik zou inderdaad (zoals eerder gesuggereerd) gaan voor een statusveld om aan te geven dat een verzoek geweigerd is, gecombineerd met een mechanisme om regelmatig de records met status 'geweigerd' (en eventueel een datum die ouder is dan xxx dagen) te verwijderen uit de tabel. Of de gegevens gewoon laten staan. Nu worden de oude werkschema's nog weggegooid, maar woor hetzelfde geldt leest de manager volgende week een boek en vindt 'ie ineens dat alles anders moet.