anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 10:41

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Die Gaststätte ...
BeitragVerfasst: Mo 05 Feb, 2007 07:54 
Offline
User
User
Benutzeravatar

Registriert: Do 28 Sep, 2006 03:16
Beiträge: 17
Wohnort: Herne
Geschlecht: Männlich
Hallo auch an alle ^^

also ich habe da mal einen Gedanken gefasst und mir mittels ettlicher Scripts als Vorlagen etwas zusammen geschustert - die Gaststätte ...
Grundlage des ganzen war der Gedanke nach etwaigen Feierlichkeiten wie einer Hochzeit oder sonstigen Anlässen auch entsprechende Feste auslegen zu können ...

kurze Beschreibung der Sache:

-also ein Koch wird ernannt von den Admins , dieser kann in der Küche nicht nur entsprechende Gerichte/Getränke erstellen welche den Gästen als Speisekarte vorliegen sondern auch seinerseits Köche engagieren und denen auch Zugang zur Küche gewähren
-man kann diese Speisen/Getränke kaufen und dann im Speisesaal via RP verköstigen ^^ (Buffs oder sonstige besondere Ereignisse treten NICHT in Kraft)
-soblad man was bestellt hat kann man dem Kellner ein Trinkgeld geben (einmalig pro Tag) oder sich beschweren (maximal 3x , allerdings kann das auch mit Rauswurf enden^^) - endet das mit Rauswurf kann man die Gaststätte für den restlichen Tag nicht mehr betreten
-man kann Einladungen verschicken (als Systemmail) sowie Reservierungen vornehmen (ebenfalls Systemmail - an den Koch/die Köche)

nun habe ich da folgendes Anliegen :

man kann andere Personen einladen , was mittels Systemmail auch so mitgeteilt wird , nur ist ja dann ziemlich doof wenn sich die betreffenden Personen zum Dinner einfinden aber die Eingeladene Person dennoch selber zahlen muss :cry:

meine Frage an Euch hier wäre , wie bewerkstellige ich es das die Eingeladene Person auch wirklich eingeladen ist ?
sprich das das gewählte Gericht/Getränk halt zu lasten des Gastgebers geht ...

ich habe mich mehrfach daran versucht , bin aber kläglich gescheitert , deshalb wende ich mich nun an Euch in der Hoffnung das jemand da 'nen guten Vorschlag für mich hat ...

da mein aktuelles Projekt aus zwei Dateien besteht hänge ich beide in Form eines Rar-Files an ...

ich muss dazu erwähnen das ich unser Dorf bereits über eine gewisse Form von RP-Chars erweitert habe sowie über geänderte Navs , also nicht zu sehr verwundert sein über die entsprechenden Zeilen ...

da es sich um mein erstes Projekt handelt bitte um Nachsicht falls sich nun jemand beleidigt fühlt da ich seinen Code genutzt habe , sobald die Scripte Vollständig sind werde ich jede Vorlage nebst Urheber selbstverständlich Namentlich erwähnen und darauf verweisen das lediglich die Idee von mir ist , ich möchte ja schliesslich mit niemandem Ärger deswegen haben :D

über rasche Antworten würde ich mich sehr freuen falls es Eure Zeit erlaubt ^^

mfg , Thraen


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
irgendwas ist ja immer ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 05 Feb, 2007 16:55 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Also ich würde dir folgendes System vorschlagen:
Lege eine neue Tabelle an, die die einzelnen Bestellungen verwaltet. In dieser werden dann nebst obligatorischer ID der besteller und eventuell der Koch, natürlich das Gericht und schlussendlich die eingeladenen Personen und ihre gerichte verwaltet (die gerichte am einfachsten alle in einem feld). Dazu könntest du hier noch meckerei oder trinkgeld speichern, da bin ich gerade nicht so in der Materie...

Jedenfalls könntest du dann dem Einladenden eine Nummer zuweisen, die natürlich auch der Gast bekommt und über die dann abgerechnet wird (am besten unabhängig von der acctid des Einladenden, dann kann dieser auch mehrere Einladungen vornehmen). Wenn nun ein Gast in eine Bestellungsliste steht, wird seine Bestellung einfach der Liste hinzugefügt und am ende wird das ganze für den Einladenden abgerechnet.

Für die Verwaltung der Gäste solltest du bei beschränkter/geringer Anzahl einzelne Felder oder bei größeren potenziellen Gästen eine arrayspeicherung vornehmen. Die bestellten Gerichte sollten auch am besten für alle Gäste gemeinfam als "implodiertes" array gespeichert werden, so sparst du platz und gesucht wird danach ja nicht.

Ich hoffe dir einigermaßen weitergeholfen zu haben

Auric :wink:

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 13 Feb, 2007 07:23 
Offline
User
User
Benutzeravatar

Registriert: Do 28 Sep, 2006 03:16
Beiträge: 17
Wohnort: Herne
Geschlecht: Männlich
@ Auric :

thx for help ^^ ich muss mich entschuldigen das ich erst jetzt danke sage ,
habe leider z.Zt. etwas Stress - was Schichtdienst doch so alles versaut ...

zum Thema , also eine einzige Tabelle anlegen und diese um Einladungen erweitern , mit eigener ID wenn ichs richtig verstanden habe - ist nur so das ich nicht so weit bin wie Ihr es seid - zum überarbeiten der Codes hats bei mir ja noch gereicht aber da ist's dann bei mir auch schon Ende mit raffen ^^

könntest Du mir da vielleicht so'n kleines Beispiel geben wie Du das genau meinst ? ich werde mich dann damit solange im Keller einsperren bis ich's raus hab :???:

mfg , Thraen

_________________
irgendwas ist ja immer ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Feb, 2007 22:04 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Für die Verwaltung der Gerichte und Bestellungen könntest du diese beiden Klassen beispielsweise verwenden:

[php]<?php

/**
CREATE TABLE `gerichte` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(32) NOT NULL UNIQUE,
`gems` INT NOT NULL,
`gold` INT NOT NULL,
`author` INT NOT NULL
);
CREATE TABLE `bestellungen` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`besteller` INT NOT NULL,
`koch` INT NOT NULL,
`gaeste` VARCHAR(255) NOT NULL,
`gerichte` INT NOT NULL
);
*/

require_once "common.php";

class gericht {
var $id, $name, $gems, $gold, $author, $saved;

function gericht($id = 0) {
if($id > 0) { // Bestehendes Gericht einlesen
$sql = "SELECT * FROM `gerichte` WHERE `id`=".$id;
$result = db_query($sql) or die(db_error(LINK));
$this->read(db_fetch_assoc($result));
} else { // Neues Gericht Anlegen
global $session;
$this->id = $this->getNewID();
$this->author = $session['user']['acctid'];
$this->saved = false;
}
}

function getNewID() {
$sql = "SELECT MAX(`id`) AS `anzahl` FROM `gerichte`";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
return $row['anzahl']+1;
}

function read($row) {
$this->id = $row['id'];
$this->name = $row['name'];
$this->gold = $row['gold'];
$this->gems = $row['gems'];
$this->author = $row['author'];
$this->saved = true;
}

function setData($name=false,$gold=false,$gems=false) {
if($name != false) $this->name = $name;
if($gold != false) $this->gold = $gold;
if($gems != false) $this->gems = $gems;
}

function speichern() {
$sql = ($this->saved?"UPDATE":"INSERT INTO");
$sql .= " `gerichte` (`id`,``name`,`gold`,`gems`,`author`) ";
$sql .= "VALUES (".$this->id.",'".$this->name."',".$this->gold.",".$this->gems.",".$this->author.")";
db_query($sql) or die(db_error(LINK));
}

function getPrice($id) {
$sql = "SELECT `gold`, `gems` FROM `gerichte` WHERE `id`=".$id;
$result = db_query($sql) or die(db_error(LINK));
return db_fetch_assoc($result);
}

}

class bestellung {
var $id, $besteller, $koch, $gaeste, $gerichte, $saved;

function bestellung($indata = 0, $koch = 0) {
if($indata > 0) { // Bestehende Bestellung einlesen
$sql = "SELECT * FROM `bestellungen` WHERE `id`=".$indata;
$result = db_query($sql) or die(db_error(LINK));
$this->read(db_fetch_assoc($result));
} else { // Neue Bestellung anlegen
global $session;
$this->id = $this->getNewID();
$this->besteller = $session['user']['acctid'];
$this->koch = $koch;
$this->saved = false;
}
}

function getNewID() {
$sql = "SELECT MAX(`id`) AS `anzahl` FROM `bestellungen`";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
return $row['anzahl']+1;
}

function read($row) {
$this->id = $row['id'];
$this->besteller = $row['besteller'];
$this->koch = $row['koch'];
$this->gaeste = explode(';',$row['gaeste']);
$this->gerichte = explode(';',$row['gerichte']);
$this->saved = true;
}

function speichern() {
$gaeste = implode(';',$this->gaeste);
$gerichte = implode(';',$this->gerichte);
$sql = ($this->saved?"UPDATE":"INSERT INTO");
$sql .= " `bestellungen` (`id`,`besteller`,`koch`,`gaeste`,`gerichte`) ";
$sql .= "VALUES (".$this->id.",".$this->besteller.",".$this->koch.",'".$gaeste."','".$gerichte."')";
db_query($sql) or die(db_error(LINK));
}

function add($gast, $gericht) {
$this->gaeste[] = $gast;
$this->gerichte[] = $gericht;
}

function getPrice() {
foreach ($this->gerichte as $val) $summe += gericht::getPrice($val);
return $summe;
}
}

?>[/php]

Das ist jetzt völlig eigenständig geschrieben, ich hatte mir deine Version noch immer nicht wirklich angesehen. Du kannst due klassen aber gerne übernehmen oder umschreiben. Oben steht noch der passende Query dazu im Source.

Die Idee hat mich ebenfalls gepacktz, ich werde also wahrscheinlich selbst ein solches Gasthaus entwickeln. Mal sehen, was dabei raus kommt.

Ich hoffe, das hilft dir so erstmal weiter.
Auric :wink:

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Feb, 2007 22:17 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Auric,
aber bitte nächste mal auf die Double und Single Quotes achten =).
Denn man kann bereits in dem Script, zum größtenteil die Single Quotes nutzen ;). *hihi*
Und den Code sowieso bissl schöner schreiben =), vllt bei DB mit pack_key(?) - weiss grad ned ob so richtig war >.< arbeiten =)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Feb, 2007 22:33 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
pack_keys?hm, mal ansehen
und die Quotes sollen mich auch nicht stören.. die 4% Leistung sollens dann auch wohl sein. Außerdem müsste ich es ja um maximale Performance zu erreichen auch strukturert und nicht objektorientiert schreiben. Und für 20 Minuten bin ich damit schon ganz zufrieden ^^

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Feb, 2007 22:50 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Btw.:
Die OOP Technik ist in PHP5 auf jeden fall, faszinierender =). Ich würde nicht unbedingt Raten bei kleinen Projekten OOP zu nutzen, und auch nicht auf PHP4 Basis. PHP5 wäre ja noch angemessen =), siehe "Eliwoods Commentary".
Aber in deinem falle, wäre eine Funktions strukturierung besser - alleine wie du bereits sagtes, den Performance Gründen. Und 4% kann in gewissen fällen doch sehr viel bringen. Besonders für nicht gerade sehr schnelle Server.

Argh!, verschrieben... Meinte "foreign_keys" - denn damit kann man Tabellenfelder anderer Tabellen miteinander Verknüpfen, und wenn einer der beiden (oder auch mehreren) geändert wird, werden die anderen auch auf den Wert geändert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 15 Feb, 2007 11:13 
Offline
User
User
Benutzeravatar

Registriert: Do 28 Sep, 2006 03:16
Beiträge: 17
Wohnort: Herne
Geschlecht: Männlich
danke für die Hilfe ^^

dann werde ich mich mal an die Arbeit machen ...

mfg , Thraen

_________________
irgendwas ist ja immer ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 15 Feb, 2007 13:19 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Nun ja, ich progge in letzter Zeit hauptsächlich mit Delphi und daher strikt OOP. Und da mein Server nur PHP4 unterstützt schreibe ch es natürlich darin... auch aus Kompatiblitätsgründen.

Und mit den Fremsschlüsseln ist das so eine Sache... sowohl auf meinem XAMPP als auch bei MySQL auf dem Server verursachen die Fehler bei der Eingabe, sprich: man kann sie nicht wirklich benutzen. Außerdem würde sich das nur in den Fällen "besteller", "gericht" und "koch" lohnen. Wäre zwar schon elegant, aber funktioniert eben leider nicht.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 15 Feb, 2007 15:18 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Es tut schon Funktionieren, es kommt nur darauf an wie man es zum Funktionieren bringt =). Lohnen tut es sich bereits in vielen Scripten, ob es eine gesplitte Accounts Tabelle ist... oder auch mal für andere Multi Handling Scripte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gaststätte ...
BeitragVerfasst: Mo 24 Mär, 2008 15:48 
Offline
Eingeweihter
Eingeweihter

Registriert: Fr 28 Sep, 2007 23:17
Beiträge: 61
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://yamasura.spidix.de/source.php
Bei mir kann ich die Datei garnicht entpacken da kommt nur ein Fehler das die gaststaette.php plötzlich zuende sei.
Könnstest du bitte mal nur die gaststaette.php datei als Anhang freugeben?

_________________
Logd= http://yamasuralogd.spidix.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gaststätte ...
BeitragVerfasst: Mo 24 Mär, 2008 16:56 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
MyISAM kennt keine Foreign-Keys - ist also erstmal nicht gut für Server, die kein InnoDB haben. Double Quotes sind nach Benchmarks tatsächlich schneller als Singlequotes - warum auch immer. Irgendwo gibts die Seite mit solchen Benchmarks (Kevz, du hast glaub auch mal einen Link dahin gepostet, hier oder auf Dragonprime). Aber das ist vernachlässigbar.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gaststätte ...
BeitragVerfasst: Mo 24 Mär, 2008 17:20 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 20 Sep, 2004 23:43
Beiträge: 164
Wohnort: Berlin
LoGD: http://www.atrahor.de/source.php
*spam*
benchmark.nophia.de/benchmarks.html

_________________
Atrahor.de
http://www.atrahor.de/ci_images.php?id=1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gaststätte ...
BeitragVerfasst: Mo 24 Mär, 2008 17:58 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
dragonslayer hat geschrieben:
*spam*
benchmark.nophia.de/benchmarks.html


Genau das wars. Danke :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 18 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum