Gegevens worden dubbel opgehaald
Ik zal in een situatie schets proberen duidelijk te maken wat het probleem is:
Er worden 2 bezoekers op de 2 verschillende pc's tegelijkertijd ingevoerd, de medewerker op pc1 is sneller met typen dan de medewerker op pc2. Het probleem ontstaat bij de laatste fase van de registratie, het printen van een badge. De medewerker op pc2 krijgt de gegevens van 2 bezoekers op zijn scherm om te printen, de bezoeker van pc1 en de bezoeker van pc2.
Ik weet niet of dit aan een instelling ligt van de server of aan het script.
Ik gebruik WAMP als server, het bezoekersregistratiesysteem draait op pc1 & pc2 is via een netwerkkabel verbonden aan pc1.
Het probleem is mij enigszins duidelijk alleen zonder relevante code kunnen wij hier niets. Is het mogelijk dat je ons wat code laat zien zodat wij de fout (eventueel) op kunnen sporen?
Niels
Ik kan de code wel geven maar denk niet dat je daar veel mee opschiet. Het registreren gebeurt in vier stappen.
1. Invoer gegevens
2. Controle van de invoer
3. Het toewijzen van een bestemming op het terrein
4. Printen van een badge
1. Gegevens die ingevoerd zijn doorsturen naar stap 2
2. Gegevens in een database zetten
3. Gegevens van de bezoeker ophalen
4. Gegevens van de bezoektijd, datum en lokatie in de database zetten, printknop voor de bezoekersbadge
Alle gegevens worden steeds opgehaald en in een database gezet, ik heb het vermoeden dat de database de gegevens te langzaam verwerkt waardoor de ene gebruiker 2 bezoekersgegevens krijgt omdat het te snel gaat.
Als dit niet mogelijk is wil ik best de code geven van de laatste pagina of van eerdere. Het is in principe hele simpele code, niet conform de top php programeurs geschreven, maar voor een stand alone pc werkt het prima.
Kan je niet gelijk bij het begin (openen van de pagina) een random code meegeven die bij de verwerking laat controleren?
de pagina's worden nu geladen op basis van een bezoekers_id
pc1 en pc2 maken dus beiden een verschillend bezoekers_id aan, toch wordt er bij pc2 die een paar seconden later is begonnen met invoeren 2 bezoekers_id's weergegeven.
Onderstaand de code van de laatste print pagina staat hieronder:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<div id="container">
<div id="header"></div>
<div id="wrapper">
<div id="content">
<?php
$bezoeker_id=$_POST['bezoeker_id'];
$con = mysql_connect("..","..","..");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("bezoeker", $con);
$sql = "INSERT INTO `bezoeker`.`bezoek` (bezoeker_id, gebouw_id, badge_nr, bezoekdatum, tijd_in, tijd_uit)
VALUES ('$_POST[bezoeker_id]','$_POST[gebouw_id]','$_POST[badge_nr]','$_POST[bezoekdatum]','$_POST[tijd_in]','NULL')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?php
$bezoeker_id=$_POST['bezoeker_id'];
$bezoekdatum=$_POST['bezoekdatum'];
$tijd_in=$_POST['tijd_in'];
mysql_connect("localhost", "gebruiker", "wachtwoord") or die("Kan geen verbinding maken");
mysql_select_db("bezoeker") or die("Kan geen database selecteren");
$select = "SELECT * FROM bezoeker, bezoek, gebouw where bezoek.bezoekdatum = '$bezoekdatum' AND bezoek.tijd_in = '$tijd_in' AND bezoek.bezoeker_id = bezoeker.bezoeker_id AND bezoek.gebouw_id = gebouw.gebouw_id";
$query = mysql_query($select) or die("Select Failed!");
while ($row = mysql_fetch_object($query)) {
?>
<h3>Alle gegevens zijn ingevoerd, u kunt nu het bezoekersbiljet uitprinten</h3>
<table>
<tr>
<td class="print_label">Naam en voorletters:</td>
<td class="print_input"><?php print $row->voorletters; ?> <?php print $row->tussenvoegsel; ?> <?php print $row->naam; ?></td>
</tr>
<tr>
<td class="print_label">Postcode - Huisnummer:</td>
<td class="print_input"><?php print $row->postcode; ?><?php print $row->huisnummer; ?></td>
</tr>
<tr>
<td class="print_label">Geboortedatum / plaats:</td>
<td class="print_input"><?php print $row->geboortedatum; ?> te, <?php print $row->geboorteplaats; ?></td>
</tr>
<tr>
<td class="print_label">Gelegitimeerd met:</td>
<td class="print_input"><?php print $row->legitimatie; ?> <?php print $row->legitimatienummer; ?></td>
</tr>
<tr>
<td class="print_label">Beroep:</td>
<td class="print_input"><?php print $row->beroep; ?></td>
</tr>
<tr>
<td class="print_label">Kenteken:</td>
<td class="print_input"><?php print $row->kenteken; ?></td>
</tr>
<tr>
<td class="print_label">Datum:</td>
<td class="print_input"><?php print $row->bezoekdatum; ?></td>
</tr>
<tr>
<td class="print_label">Tijd binnenkomst:</td>
<td class="print_input"><?php print $row->tijd_in; ?></td>
</tr>
<tr>
<td class="print_label">Doel van het bezoek:</td>
<td class="print_input"><?php print $row->gebouw_naam; ?></td>
</tr>
<tr>
<td class="print_label">Badgenummer:</td>
<td class="print_input"><?php print $row->badge_nr; ?></td>
</tr>
</table>
<script type="text/javascript">
//<![CDATA[
if (typeof window.print!='undefined'){
document.write('<form>'
+ '<input type="button" name="print" value="printen" class="sendbutton" '
+ 'onClick="javascript:window.print();"> '
+ '</form>');
}
//]]>
</script>
<div class="hoofdmenu"><a href="../../index.php">Terug naar het hoofdmenu</a></div></td>
<?php
}
mysql_free_result($query);
?>
<div id="header"></div>
<div id="wrapper">
<div id="content">
<?php
$bezoeker_id=$_POST['bezoeker_id'];
$con = mysql_connect("..","..","..");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("bezoeker", $con);
$sql = "INSERT INTO `bezoeker`.`bezoek` (bezoeker_id, gebouw_id, badge_nr, bezoekdatum, tijd_in, tijd_uit)
VALUES ('$_POST[bezoeker_id]','$_POST[gebouw_id]','$_POST[badge_nr]','$_POST[bezoekdatum]','$_POST[tijd_in]','NULL')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?php
$bezoeker_id=$_POST['bezoeker_id'];
$bezoekdatum=$_POST['bezoekdatum'];
$tijd_in=$_POST['tijd_in'];
mysql_connect("localhost", "gebruiker", "wachtwoord") or die("Kan geen verbinding maken");
mysql_select_db("bezoeker") or die("Kan geen database selecteren");
$select = "SELECT * FROM bezoeker, bezoek, gebouw where bezoek.bezoekdatum = '$bezoekdatum' AND bezoek.tijd_in = '$tijd_in' AND bezoek.bezoeker_id = bezoeker.bezoeker_id AND bezoek.gebouw_id = gebouw.gebouw_id";
$query = mysql_query($select) or die("Select Failed!");
while ($row = mysql_fetch_object($query)) {
?>
<h3>Alle gegevens zijn ingevoerd, u kunt nu het bezoekersbiljet uitprinten</h3>
<table>
<tr>
<td class="print_label">Naam en voorletters:</td>
<td class="print_input"><?php print $row->voorletters; ?> <?php print $row->tussenvoegsel; ?> <?php print $row->naam; ?></td>
</tr>
<tr>
<td class="print_label">Postcode - Huisnummer:</td>
<td class="print_input"><?php print $row->postcode; ?><?php print $row->huisnummer; ?></td>
</tr>
<tr>
<td class="print_label">Geboortedatum / plaats:</td>
<td class="print_input"><?php print $row->geboortedatum; ?> te, <?php print $row->geboorteplaats; ?></td>
</tr>
<tr>
<td class="print_label">Gelegitimeerd met:</td>
<td class="print_input"><?php print $row->legitimatie; ?> <?php print $row->legitimatienummer; ?></td>
</tr>
<tr>
<td class="print_label">Beroep:</td>
<td class="print_input"><?php print $row->beroep; ?></td>
</tr>
<tr>
<td class="print_label">Kenteken:</td>
<td class="print_input"><?php print $row->kenteken; ?></td>
</tr>
<tr>
<td class="print_label">Datum:</td>
<td class="print_input"><?php print $row->bezoekdatum; ?></td>
</tr>
<tr>
<td class="print_label">Tijd binnenkomst:</td>
<td class="print_input"><?php print $row->tijd_in; ?></td>
</tr>
<tr>
<td class="print_label">Doel van het bezoek:</td>
<td class="print_input"><?php print $row->gebouw_naam; ?></td>
</tr>
<tr>
<td class="print_label">Badgenummer:</td>
<td class="print_input"><?php print $row->badge_nr; ?></td>
</tr>
</table>
<script type="text/javascript">
//<![CDATA[
if (typeof window.print!='undefined'){
document.write('<form>'
+ '<input type="button" name="print" value="printen" class="sendbutton" '
+ 'onClick="javascript:window.print();"> '
+ '</form>');
}
//]]>
</script>
<div class="hoofdmenu"><a href="../../index.php">Terug naar het hoofdmenu</a></div></td>
<?php
}
mysql_free_result($query);
?>
Gewijzigd op 28/06/2011 19:36:52 door Niels K
Ik heb even de code tags toegevoegd zodat het iets overzichtelijker is :-)
Daarnaast, alle vorm van nette foutafhandeling ontbreekt. Graag deze eerst toepassen aan de hand van deze tutorial: klik
Niels
Zal de foutafhandeling met mijn probleem te maken hebben?
Dat snap ik, maar dat is niet het excuus om geen goede code te schrijven. Fouten afhandeling, beveiliging en noem maar op moet een standaard zijn. Niet iets wat je alleen doet op projecten waar ook andere mensen mee te maken krijgen.. ;)
Want niet alleen kwaadwillige mensen kunnen wat kapot maken. Stel dat een medewerker met zijn goede bedoelingen per ongeluk iets verkeerd invoert dan kan (als het heel erg meezit) heel de database verknald zijn.
Niels
zal de tutorial doornemen en wijzigingen doorvoeren
in ieder geval bedankt voor je tijd en advies
ga nu ff naar het onweer kijken.