Meerdere gegevens tegelijk uploaden
Ik heb om de uitslagen van volleybalwedstrijden gemakkelijk in te voeren een pagina. Op de pagina worden de gegevens uit de database in een formulier weergegeven.
Ik wil graag dat als ik de gegevens in dat formulier verander/aanvul, het ook in de database wordt veranderd/aangevuld.
Nu worden alleen de gegevens van de laatste rij in de database gezet.
(http://thijs.vcriethoven.nl/h2_beheer.php) Als je hier kijkt word misschien mijn probleem duidelijker.
Wie kan mij hierbij helpen? Het volgende heb ik:
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
<?
$sql = "SELECT * FROM h2 ORDER BY datum";
$query = mysql_query($sql);
while($rij = mysql_fetch_object($query)) {
$id = htmlspecialchars($rij->id);
$datum = htmlspecialchars($rij->datum);
$thuis = htmlspecialchars($rij->thuis);
$uit = htmlspecialchars($rij->uit);
$puntenthuis = htmlspecialchars($rij->puntenthuis);
$puntenuit = htmlspecialchars($rij->puntenuit);
$streep = htmlspecialchars($rij->streep);
?>
<form method="post" action="h2_beheer.php">
<tr>
<td><font color="#3399CC"><input type="text" name="datum" size="20" value="<?= $datum ?>" /></font></td>
<td><font color="#3399CC"><input type="text" name="thuis" size="20" value="<?= $thuis ?>" /></font></td>
<td><font color="#3399CC"><?= $streep ?></font></td>
<td><font color="#3399CC"><input type="text" name="uit" size="20" value="<?= $uit ?>" /></font></td>
<td><font color="#3399CC"><input type="text" name="puntenthuis" size="2" value="<?= $puntenthuis ?>" /></font></td>
<td><font color="#3399CC"><?= $streep ?></font></td>
<td><font color="#3399CC"><input type="text" name="puntenuit" size="2" value="<?= $puntenuit ?>" /></font></td>
<td><font color="#3399CC"><input type="hidden" name="id" value="<?= $id ?>" />
</tr>
<?
}
?>
<tr>
<td style="text-align: right" colspan="7">
<input type="submit" value="Verzenden" name="submit"></td>
</tr>
</form>
</table>
<?
if($_POST['submit']) {
$sql = "SELECT id FROM h2 WHERE id='" . $_GET["id"] ."'";
$sql = "UPDATE h2
SET datum='".$_POST['datum']."',
thuis='".$_POST['thuis']."',
uit='".$_POST['uit']."',
puntenthuis='".$_POST['puntenthuis']."',
puntenuit='".$_POST['puntenuit']."'
WHERE id= $id";
$query = mysql_query($sql);
}
?>
$sql = "SELECT * FROM h2 ORDER BY datum";
$query = mysql_query($sql);
while($rij = mysql_fetch_object($query)) {
$id = htmlspecialchars($rij->id);
$datum = htmlspecialchars($rij->datum);
$thuis = htmlspecialchars($rij->thuis);
$uit = htmlspecialchars($rij->uit);
$puntenthuis = htmlspecialchars($rij->puntenthuis);
$puntenuit = htmlspecialchars($rij->puntenuit);
$streep = htmlspecialchars($rij->streep);
?>
<form method="post" action="h2_beheer.php">
<tr>
<td><font color="#3399CC"><input type="text" name="datum" size="20" value="<?= $datum ?>" /></font></td>
<td><font color="#3399CC"><input type="text" name="thuis" size="20" value="<?= $thuis ?>" /></font></td>
<td><font color="#3399CC"><?= $streep ?></font></td>
<td><font color="#3399CC"><input type="text" name="uit" size="20" value="<?= $uit ?>" /></font></td>
<td><font color="#3399CC"><input type="text" name="puntenthuis" size="2" value="<?= $puntenthuis ?>" /></font></td>
<td><font color="#3399CC"><?= $streep ?></font></td>
<td><font color="#3399CC"><input type="text" name="puntenuit" size="2" value="<?= $puntenuit ?>" /></font></td>
<td><font color="#3399CC"><input type="hidden" name="id" value="<?= $id ?>" />
</tr>
<?
}
?>
<tr>
<td style="text-align: right" colspan="7">
<input type="submit" value="Verzenden" name="submit"></td>
</tr>
</form>
</table>
<?
if($_POST['submit']) {
$sql = "SELECT id FROM h2 WHERE id='" . $_GET["id"] ."'";
$sql = "UPDATE h2
SET datum='".$_POST['datum']."',
thuis='".$_POST['thuis']."',
uit='".$_POST['uit']."',
puntenthuis='".$_POST['puntenthuis']."',
puntenuit='".$_POST['puntenuit']."'
WHERE id= $id";
$query = mysql_query($sql);
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Thijs Bree
Het script ziet er niet al te best uit... <font> hoort al sinds jaar en dag niet meer thuis in html-code, dit is een vervallen tag. Gebruik css om je webpagina op te maken.
Jij wilt ook een datum in de database zetten, maar je controleert nergens of deze datum wel een datum is. Vervolgens controleer je nergens of deze wel de juiste opmaak heeft (yyyy-mm-dd en opslaan in een DATE) en donder je de boel zonder enige controle in de database. Je vergeet ook nog te controleren of de query wel is gelukt en ik kan je nu al verklappen dat deze vroeg of laat zal gaan mislukken. Wet van Murphy.
Ook het datamodel klopt niet, je slaat berekende gegevens op in de database. Als je met 3-0 wint, kun je onmogelijk 0 of 1 punten aan deze wedstrijd overhouden. In jouw database is dat wel mogelijk. Maak je meer doelpunten dan de tegenstander, dan heb je automatisch gewonnen (en dus 3 punten), dat hoef je niet in de database op te slaan.
Het uploaden van meerdere gegevens gelijktijdig, is dus wel het minste probleem dat je nu hebt...
Begin eerst eens met normalisatie en dus het opzetten van een goede database. Vervolgens ga je overal een foutafhandeling inbouwen en dán pas heb je tijd om het probleem met meerdere formulieren op te lossen.
Geef verschillende formulieren, verschillende namen...
De datum wordt in de database opgeslagen als een DATE.
Dit script is niet bedoeld om dingen te berekenen, het hoeft enkel de uitslagen weer te geven, dus dan moet de uitslag wel in de database komen neem ik aan.
En in het geposte stuk script staat maar 1 formulier, dus hoe moet ik die verschillende namen geven? Wat bedoel je daarmee?
En hoe weet je of mijn database niet goed is opgezet? Dit is toch een goede tabel, meer is er toch niet nodig?
CREATE TABLE `h2` (
`id` int(8) NOT NULL auto_increment,
`datum` date NOT NULL default '0000-00-00',
`thuis` varchar(25) default NULL,
`uit` varchar(25) default NULL,
`puntenthuis` char(1) default NULL,
`puntenuit` char(1) default NULL,
`streep` char(1) NOT NULL default '-',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;