bon printen uit DB
ik wil graag voor de klant die gegeten heeft een bon weergeven om deze vervolgens uit te printen nu heb ik dit maar krijg ik de volgende foutmelding:
Parse error: syntax error, unexpected $end in /Applications/XAMPP/xamppfiles/htdocs/italianrestaurant/admin.php on line 341
bon maken <br/>
<label>klant nummer</label><input type="text" name="klant"/><br/>
<input type="submit" name="bon" value="bon maken" />
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
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
<?php
include ("connect.php");
if (isset($_POST['bon'])) {
$result = mysql_query("SELECT * FROM reservering WHERE klant='$reservering_id'");
$bon=0;
while($row = mysql_fetch_assoc($result)) {
$datum = $row['datum1'];
$tijd = $row['tijd'];
$aantal = $row['aantal'];
$tafel = $row['tafel'];
$klant = $row['reservering_id'];
$gerecht = $row['gerecht'];
$gerecht2 = $row['gerecht2'];
$gerecht3 = $row['gerecht3'];
$gerecht4 = $row['gerecht4'];
$gerecht5 = $row['gerecht5'];
$gerecht6 = $row['gerecht6'];
$gerecht7 = $row['gerecht7'];
$gerecht8 = $row['gerecht8'];
print "$datum, klant_ID: $klant tafel: $tafel <br/> gerechten: $gerecht, $gerecht2, $gerecht3, $gerecht4, $gerecht6, $gerecht7, $gerecht8 <br/><br/>";
$bon++;
}
?>
include ("connect.php");
if (isset($_POST['bon'])) {
$result = mysql_query("SELECT * FROM reservering WHERE klant='$reservering_id'");
$bon=0;
while($row = mysql_fetch_assoc($result)) {
$datum = $row['datum1'];
$tijd = $row['tijd'];
$aantal = $row['aantal'];
$tafel = $row['tafel'];
$klant = $row['reservering_id'];
$gerecht = $row['gerecht'];
$gerecht2 = $row['gerecht2'];
$gerecht3 = $row['gerecht3'];
$gerecht4 = $row['gerecht4'];
$gerecht5 = $row['gerecht5'];
$gerecht6 = $row['gerecht6'];
$gerecht7 = $row['gerecht7'];
$gerecht8 = $row['gerecht8'];
print "$datum, klant_ID: $klant tafel: $tafel <br/> gerechten: $gerecht, $gerecht2, $gerecht3, $gerecht4, $gerecht6, $gerecht7, $gerecht8 <br/><br/>";
$bon++;
}
?>
Je hebt je if op regel 4 niet afgesloten. Zet nog een } op regel 32 en hij doet het weer. Overigens heb je veel te veel variabelen aangemaakt, dat is nergens voor nodig.
ja ik zal vast wel teveel variabelen hebben maar ik ben php nog maar aan het leren zit op school en weet nog niet alles makkelijk op te schrijven :)
ik heb nu dit en ik krijg als error resource id #4...
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
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
<?php
include ("connect.php");
if (isset($_POST['bon'])) {
$result = mysql_query("SELECT * FROM reservering WHERE reservering_id='$klant'");
$datum = $row['datum1'];
$tijd = $row['tijd'];
$aantal = $row['aantal'];
$tafel = $row['tafel'];
$klant = $row['reservering_id'];
$gerecht = $row['gerecht'];
$gerecht2 = $row['gerecht2'];
$gerecht3 = $row['gerecht3'];
$gerecht4 = $row['gerecht4'];
$gerecht5 = $row['gerecht5'];
$gerecht6 = $row['gerecht6'];
$gerecht7 = $row['gerecht7'];
$gerecht8 = $row['gerecht8'];
echo $result;
}
?>
include ("connect.php");
if (isset($_POST['bon'])) {
$result = mysql_query("SELECT * FROM reservering WHERE reservering_id='$klant'");
$datum = $row['datum1'];
$tijd = $row['tijd'];
$aantal = $row['aantal'];
$tafel = $row['tafel'];
$klant = $row['reservering_id'];
$gerecht = $row['gerecht'];
$gerecht2 = $row['gerecht2'];
$gerecht3 = $row['gerecht3'];
$gerecht4 = $row['gerecht4'];
$gerecht5 = $row['gerecht5'];
$gerecht6 = $row['gerecht6'];
$gerecht7 = $row['gerecht7'];
$gerecht8 = $row['gerecht8'];
echo $result;
}
?>
Ik zou verwachten dat je bv echo $datum doet of echo $gerecht.
Waarom maak je al die variabelen aan?
Gebruik geen *
Bouw foutafhandeling in.
Variabelen buiten quotes.
Je krijgt die error denk ik omdat je na het verwijderen van je while loop geen fetch meer doet. Dus "$row = mysql_fetch_assoc($result)" heb je nog wel nodig voor je die $row kunt aanspreken.
hier de code
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
include ("connect.php");
if (isset($_POST['bon'])) {
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql_get_user = "SELECT *
FROM reservering
WHERE reservering_id='".mysql_real_escape_string($_POST['reservering_id'])."'
";
# Check of query is gelukt
if (($result_get_user = mysql_query($sql_get_user)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_user,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_get_user) == 0)
{
# De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
# -> Als er geen rij is echoën we hier:
echo 'Er is geen klant met dit klanten id!';
}
else
{
# Hier is er wel een rij dus ->
#we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
$row_user = mysql_fetch_assoc($result_get_user);
echo $row_user['reservering_id'];
echo $row_user['datum1'];
echo $row_user['tijd'];
echo $row_user['aantal'];
echo $row_user['tafel'];
echo $row_user['gerecht'];
echo $row_user['gerecht2'];
echo $row_user['gerecht3'];
echo $row_user['gerecht4'];
echo $row_user['gerecht5'];
echo $row_user['gerecht6'];
echo $row_user['gerecht7'];
echo $row_user['gerecht8'];
}
}
?>
include ("connect.php");
if (isset($_POST['bon'])) {
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql_get_user = "SELECT *
FROM reservering
WHERE reservering_id='".mysql_real_escape_string($_POST['reservering_id'])."'
";
# Check of query is gelukt
if (($result_get_user = mysql_query($sql_get_user)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_user,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result_get_user) == 0)
{
# De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
# -> Als er geen rij is echoën we hier:
echo 'Er is geen klant met dit klanten id!';
}
else
{
# Hier is er wel een rij dus ->
#we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
$row_user = mysql_fetch_assoc($result_get_user);
echo $row_user['reservering_id'];
echo $row_user['datum1'];
echo $row_user['tijd'];
echo $row_user['aantal'];
echo $row_user['tafel'];
echo $row_user['gerecht'];
echo $row_user['gerecht2'];
echo $row_user['gerecht3'];
echo $row_user['gerecht4'];
echo $row_user['gerecht5'];
echo $row_user['gerecht6'];
echo $row_user['gerecht7'];
echo $row_user['gerecht8'];
}
}
?>
en nu zal deze vraag denk ik hier niet meer thuis horen maar iemand enig idee hoe ik dit gelijk in een nieuwe pagina krijg als een bon? om het uit te printen
En om een beetje offtopic te gaan. Je database ziet er niet bepaald genormaliseerd uit, gerecht1 gerecht2 etc. Hier zou ik ook eens naar kijken als ik jou was. Denk dan bijv aan een tabel die uit de kolommen klant en gerecht bestaat. Hier kunnen dan een variabel aantal gerechten per klant in komen.
Tabel gerechten
- Uniek id
- Naam van het gerecht
- Prijs
Tabel met de klant
- Gerecht (Uniek id)
- Naam v/d personen
- Datum
- Eventueel een reserveer datum die je dan update als je de bon uitprint
En dan kun je gemakkelijk met een query de prijzen en dergelijke ophalen. Natuurlijk als ze meerdere gerechten kunnen eten zul je de ID's in het veld moeten scheiden met een spatie en dan voor elk ID de prijs ophalen enzo.
Dan kun je gemakkelijk in de toekomst prijzen updaten enzo!
Ook zou ik wel nog kijken of $klant wel bestaat, want dit is waarschijnlijk een invoerveld.
Dan kun je met HTML de bon tonen (opmaak) en die dan uitprinten (misschien met JavaScript of jQuery).
Aaron - op 13/01/2012 16:22:18:
En dan kun je gemakkelijk met een query de prijzen en dergelijke ophalen. Natuurlijk als ze meerdere gerechten kunnen eten zul je de ID's in het veld moeten scheiden met een spatie en dan voor elk ID de prijs ophalen enzo.
Dan kun je gemakkelijk in de toekomst prijzen updaten enzo!
Dan kun je gemakkelijk in de toekomst prijzen updaten enzo!
Tenzij ik je verkeerd begrijp, maar volgens mij niet, is dit een slecht voorbeeld. Hetgeen ik eerder zei is precies wat jij hier nog een keer doet en zeker geen genormaliseerd database model. Elke kolom uit een rij bevat 1 (één) gegeven en nooit meer dan dat.
Het idee zou als volgt kunnen zijn (ik zie originele voorbeeld bij de reply niet dus het gaat om het idee)
Reservering
id (uniek id voor de reservering)
naam (wie heeft de reservering geboekt)
aantal personen (spreekt voor zich)
datum (voor wanneer en welke tijd is deze reservering geboekt)
Gerecht
id (uniek id voor het gerecht)
naam (naam van het gerecht)
prijs (prijs van het gerecht)
reservering_gerecht (sorry weet even geen betere naam)
reservering id
gerecht id
De laatste tabel koppelt de reserving met bestelde gerechten. Een reservering komt er dus meerdere keren in te staan met al dan niet dezelfde gerechten. Een paar simpele queries geven de gewenste gegevens zoals een lijst met bestelde gerechten met hun individuele prijs en een totaal prijs.
Deze tabellen zijn uiteraard aan te passen om missende gegevens te plaatsen maar het idee mag duidelijk zijn. Op deze manier splits je gegevens, en is alles goed en duidelijk beheerbaar.
Gewijzigd op 13/01/2012 16:45:28 door Jurgen B