bon printen uit DB

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Reshad F

Reshad F

12/01/2012 21:03:09
Quote Anchor link
hallo ik heb al vaker voor deze opdracht om hulp gevraagd op phphulp en er was altijd goede hulp van de mensen hier, dus nu weer een vraag!

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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++;
        
        }

    
    ?>
 
PHP hulp

PHP hulp

19/07/2019 04:42:40
 
Roel -

Roel -

12/01/2012 21:04:57
Quote Anchor link
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.
 
Reshad F

Reshad F

12/01/2012 21:28:47
Quote Anchor link
dankjewel ik keek er helemaal overheen, en zag ook dat de while helemaal niet erin hoeft.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
  
        
        
    }

    
    ?>
 
Obelix Idefix

Obelix Idefix

12/01/2012 21:43:47
Quote Anchor link
Waarom echo je $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.
 
Erwin H

Erwin H

12/01/2012 22:59:02
Quote Anchor link
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.
 
Reshad F

Reshad F

13/01/2012 09:26:09
Quote Anchor link
ik heb het even opnieuw opgebouwd met foutafhandelingen d.m.v een tut op phphulp, en heb het zover nodig al aangepast maar nu krijg ik alles heel lelijk achter elkaar...

hier de code

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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'];
}
    }

?>


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
 
Jurgen B

Jurgen B

13/01/2012 13:06:20
Quote Anchor link
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.
 

13/01/2012 16:22:18
Quote Anchor link
Ik zou m'n tabellen er zo uit laten zien...
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).
Gewijzigd op 13/01/2012 16:24:57 door
 
Jurgen B

Jurgen B

13/01/2012 16:42:37
Quote Anchor link
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!


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.