Anzeige

ModellierungsProblem?

ModellierungsProblem? | PSD-Tutorials.de

Erstellt von Smax, 25.09.2008.

  1. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    Hallo,

    folgendes Problem.
    Also ich will ein Skript für Ferienwohnungen basteln und zwar mit folgenden Funktionen.
    Es gibt 6x 2Pers Whg, 1x 3Pers. Whg und 1x 4Pers Whg, die 2er kostet z.b. 100? die 3er u. 4er z.b. 200? jeweils pro Nacht. Zudem soll es im Admin Bereich möglich sein für jeden Monat einen bestimmten Aufpreis einzugeben also z.b. 100? + 20% im Juni(wegen Saison)...
    Mein Problem ist aktuell dass ich nicht weiß was ich jetzt an Tabellen in phpmyadmin anlegen soll... aktuell habe ich nur eine grobe Eingabemaske fertig Test Calculator

    Wer kann helfen bzw. hat vll.nen Tipp für mich wich ich sowas sinnvoll angehe?
    Danke
     
    #1      
  2. gp812

    gp812 Newbster

    Dabei seit:
    23.12.2007
    Beiträge:
    278
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS3, EditPlus
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Ich wurde 3 Tabellen anlegen:
    - Wohnungen (Wohnung_id|Name|Beschreibung|Personen|Preis|..)
    - Belegung (id|Wohnung_id|datum_von|datum_bis)
    - Zuschlag (id|Wohnung_id|datum_von|datum_bis|Zuschlag)

    Dann ist eigentlich alles erfasst.
     
    #2      
  3. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Hm ja ok so ungefähr hatte ich das nur weiß ich jetzt nicht genau wie ich dann prüfe ob z.b. eine der 2 Pers Wohnungen frei ist ... wie muss ich das denn machen? Würdest du also z.b. in der tb 6 2Pers Wohnungen anlegen und jeweils 1 3er und 1 4er oder?
     
    #3      
  4. gp812

    gp812 Newbster

    Dabei seit:
    23.12.2007
    Beiträge:
    278
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS3, EditPlus
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Ja. Alle Wohnungen einzeln anlegen, damit jede eigene Id bekommt. Dann bei Buchungen in der Belegungstabelle Daten eintragen.
     
    #4      
  5. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    ok dann probier ich mal ob ich so weiterkomme wenn nicht dann meld ich mich hier nochmal.
    die whg_id muss ich ja nur einmal anlegen und dann die tabelle verbinden oder?
     
    #5      
  6. gp812

    gp812 Newbster

    Dabei seit:
    23.12.2007
    Beiträge:
    278
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS3, EditPlus
    ModellierungsProblem?
    AW: ModellierungsProblem?

    In der Tabelle Wohnungen den Feld 'Wohnung_Id' als PRIMARY KEY anlegen.
    Und als Eigenschaft 'AUTO_INCREMENT' einsetzten. Dann hat jede deine Wohnung beim Eintragen eigenes Id.
     
    #6      
  7. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Also so ganz verstehe ich jetzt nicht was du damit meinst?
    Muss ich das nur in der Tabelle wohnungen machen?
    Wie ist das dann in der Tabelle Belegung da hab ich ja auch ein feld namens Wohnungs_ID muss ich das mit der tabelle wohnugen verbinden oder wie?

    Danke für deine Hilfe
     
    #7      
  8. gp812

    gp812 Newbster

    Dabei seit:
    23.12.2007
    Beiträge:
    278
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS3, EditPlus
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Ja. Wohnung_Id bezieht sich immer auf Eintrag in der Tabelle Wohnungen.
     
    #8      
  9. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    ja ich versteh des nur grad nicht kommt des durch den unterstrich oder wie meinst du das jetzt?
     
    #9      
  10. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Kann mir einer sagen warum die header-funktion hier nicht funzt?
    PHP:
    1.  
    2. <?php
    3.       include('dbconnect.php');
    4.      
    5.             $new_begin = explode('.', $_POST['begin']);
    6.             $new_end = explode('.', $_POST['end']);
    7.             $timestamp_begin = mktime( 0, 0, 0, $new_begin[1], $new_begin[0], $new_begin[2] );
    8.             $timestamp_end = mktime( 0, 0, 0, $new_end[1], $new_end[0], $new_end[2] );
    9.            
    10.             $aendern = "UPDATE zuschlag Set begin = '$timestamp_begin', end = '$timestamp_end', zuschlag = '".$_POST['zuschlag']."'
    11.                  WHERE whg_id = '".$_POST['whg_id']."'";
    12.             $update = mysql_query($aendern);
    13.             header("Location: http://www.maxschuster.de/admin.php");
    14.         ?>
    15.  
     
    #10      
  11. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Hallo,

    also ich versteh immer noch nicht wie ich die Wohnungstypen mit den verschiedenen Preisen verbinde und wie ich prüfen kann ob im besagten Zeiraum überhaupt noch was frei ist...?
    Wer kann helfen bin für jede Hilfe dankebar ...
     
    #11      
  12. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Ach herrjeh... ich hatte mich bisher ja rausgehalten und gehofft es macht jemand anderes... aber ich will es jetzt mal versuchen:

    Als Beispiel hast du folgende Tabellen:
    Tabelle Wohnung: ID - Wohnungs Bezeichnung
    Tabelle Preise: ID - Wohnungs ID - Preis

    Du trägst in de Tabelle Wohnung, die Wohnung "Beispielwohnung" ein. Diese bekommt (möglichst automatisch via autoincrement) die ID "1".
    Bei deinen Preisen trägst du nun ein, dass die Beispielwohnung 500,- Euro kostet. Und zwar nimmst du nun aus der Tabelle Wohnung die ID für deine Beispielwohnung, und trägst diese mit dem Preis und einer ID für den Preis (in diesem Beispiel die 7) in der Tabelle Preis ein.

    Du hast also folgende Datensätze:
    Tabelle Wohnung: 1 - Beispielwohnung
    Tabelle Preise: 7 - 1 - 500

    Du kannst nun in deinem SQL-Befehl über WHERE oder auch JOIN diese Tabellen "verknüpfen". Wenn du nun wissen möchtest wieviel die Beispielwohnung kostet:

    PHP:
    1. $variable = ID der Wohnung
    2. SELECT * FROM Preise WHERE Wohnungs ID = $variable;
    Mit JOIN geht das ganze noch viel umfangreicher, ich bin aber nicht so tief drin, als das ich das aus dem stehgreif erklären kann. Außerdem musst du mal schauen was du für dich brauchst...

    Edit: Das jetzt alles bissl unrein gesprochen, ich hoffe du verstehst das!? Wenn du es brauchst kann ich aber schnell ein kleines funktionelles Beispiel frickeln...
     
    Zuletzt bearbeitet: 26.09.2008
    #12      
  13. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Hallo

    also erstmal danke für deine Antwort.
    Ja also es ist so wie oben geschrieben hab ich 3 Tabellen angelegt Eine belegung(mit den Feldern id, whg_id, begin und end), eine wohnung (mit whg_id, personen und preis) und zuschlag (mit id, begin, end, zuschlag). So soll also so funktionieren dass man im adminbereich für alle wohnungen für bestimmte Zeiträume einen bestimmten zuschlag hinzufügen kann. Mein Problem ist dass ich nicht ganz verstehe wie ich die wohnungs_id von einer in die andere Tabelle übernehmen kann und wie ich am besten ermitteln kann ob überhaupt im gewünschten zeitraum noch was frei ist. Es gibt 6 2Personen Wohnungen, 1 3Personen Whg und eine 4Pers Whg. Denke das prüfen auf frei oder nciht geht mit einer Schleife nur wie genau...

    Ich weiß ich drücke mich nicht präzise aus kenn das Fachvokabular leider noch nicht so gut...

    Wär super wenn du mir nochmal helfen könntest dein bsp eben hat mir zumindest schon mal einen kleinen einblick gegeben.
     
    #13      
  14. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Na ich versteh dich schon, leider ist das Thema recht komplex und scheinbar denkst du noch zu kompliziert...

    Mach dich mal frei von dem Gedanken, dass du den Inhalt aus der einen Tabelle in die andere bekommen musst. Das ist der falsche Ansatz. Am besten vergisst du alles worum es geht und was dein Ziel ist und fängst nochmal bei Null an zu denken:

    Du hast eine Tabelle in der 3 Wohnungen stehen, diese Wohnungen haben einen Namen und eine ID.
    Du liest aus der Tabelle Namen und IDs aus und fügst die zu einem Dropdownmenu zusammen:
    HTML:
    1. <option value="Id">Name</option>
    Das Dropdownmenu ist Teil eines Formulares, neben dem Ddmenu hast du noch ein Inputfeld für den Preis.
    Du wählst also die richtige Wohnung aus, tippst den Preis ein und schickst das Formular ab.
    Auf der Seite die das ganze entgegen nimmt, nimmst du nun den Preis und den Wert aus dem Dropdownmenu. Den Wert haben wir ja über value bestimmt und entspricht der ID der Wohnung.
    Beide Werte, Preis und ID, schreibst du nun in die Tabelle für die Preise.
    Fertig.

    Für die Anzeige gehst du ähnlich vor. Du übergibst die Wohnungsid an deine Seite und fragst über diese ID den Preis ab (siehe mein erstes Beispiel).

    Bei der Buchung ist das ähnlich, du hast in der Tabelle die Wohnungsids und die Zeiträume (also für alle Wohnungen) stehen.
    Du nimmst also die Wohnungsid von der Wohnung die du buchen willst und fragst nun ob in der Tabelle schon Datensätze mit dieser ID vorhanden sind. Wenn ja kannst du dir die anzeigen lassen und weißt in welchen Zeiträumen diese Wohnung besetzt ist...
     
    #14      
  15. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    @Top_Gun:

    Also nochmal herzlichen Dank für deine Antwort die es mir echt leichter macht das ganze zu verstehen. Ich machs jetzt auch so wie du gesagt hast und geh ein Prob nach dem anderen an. Mein aktuelles gesaltet sich wie folgt:

    Ich habe eine Tabelle in der DB namens zuschlag mit (id, begin, end, zuschlag)
    So ich habe dann schon paar Zuschlagszeiträume eingetragen nur wie prüfe ich ob das gewählte Datum im Zuschlagsbereich liegt. Ich muss ja auch beachten dass wenn der Zuschlagsbereich von 1.12.2008-5.12.2008 geht der Urlauber wenn er von 28.11.2008 bis 4.12.2008 bleibt mal Zuschlag zahlen muss und mal nicht...
    Wie mache ich das denn?
    Hab mal mit ner Schleife begonnen:
    PHP:
    1.  
    2. <?php
    3.           $timestamp_begin = mktime( 0, 0, 0, $_GET['beginMonth'], $_GET['beginDay'], $_GET['beginYear'] );
    4.           $timestamp_end = mktime( 0, 0,0, $_GET['endMonth'], $_GET['endDay'], $_GET['endYear']);
    5.           $naechte = ($timestamp_end - $timestamp_begin)/86400;
    6.       $whg_typ = $_GET['beds'];
    7.       switch($whg_typ){ case 1: $whg_price = 35; break 1; case 2: $whg_price = 35; break 1;
    8.                         case 3: $whg_price = 50; break 1; case 4: $whg_price = 50; break 1;}
    9.       $price = $naechte * $whg_price;
    10.              
    11.           $abfrage = "SELECT * FROM zuschlag ORDER BY begin";
    12.       $output = mysql_query($abfrage) OR die (mysql_error());
    13.           while($row = mysql_fetch_object($output)){
    14.         if(($timestamp_begin < $row->begin AND $timestamp_end < $row->begin) OR ($timestamp_begin > $row->end)){
    15.         $zuschlag = 0;
    16.         echo $zuschlag;
    17.         break;
    18.         };
    19.       };
    20.          
    21.             if(isset($_GET['beginDay']))
    22.             {
    23.             echo '<table>
    24.                 <tr><td colspan=\"2\">';
    25.                         echo '<b>Preis für '.$_GET['beds']; if($beds == 1){echo ' Person';}else{echo ' Personen';}
    26.                         echo ' vom '.$_GET['beginDay'].'.'.$_GET['beginMonth'].'.'.$_GET['beginYear'].' bis '
    27.                         .$_GET['endDay'].'.'.$_GET['endMonth'].'.'.$_GET['endYear'].': </b>';
    28.             echo '</td></tr>
    29.                 <tr><td>Übernachtungspreis pro Nacht (inkl. Zu-/Abschläge): '.$whg_price.' &euro;</td></tr>
    30.                 <tr><td>Anzahl Übernachtungen: '.$naechte.'</td></tr>
    31.                 <tr><td><b>Gesamtpreis: '.$price.' &euro;</b></td></tr>
    32.                 <tr><td>&nbsp;</td></tr>
    33.                 <tr><td>Bitte beachten Sie dass eine endgültige Buchungsbestätigung erst durch uns per Mail erfolgt.</td></tr>
    34.                 <tr><td><input type="submit" value="buchen!" name="buchen"></td></tr>
    35.             </table>';
    36.             }
    37.         ?>
    38.  
    Wär nett wenn du mir nochmal helfen könnest
     
    Zuletzt bearbeitet: 26.09.2008
    #15      
  16. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Sry, ich hab wenig Zeit am WE, und hab mir daher dein Beispiel nicht angeschaut. Aber ich will wenigstens mal meine Gedanken zu dem Thema in den Raum werfen:

    Die Sache einer Zeitberechnung bietet immer Problematiken, du musst rausfinden wieviele Tage die Monate haben, du musst schauen ob das Jahr nen Schaltjahr ist etc. soweit ich weiß kann das alles die Date-Funktion...
    Da du ja pro Tag schauen musst welchen Preis es kostet würde ich es so angehen, von Beginn bis Ende eine Schleife, schauen in welchen Zeitraum dieser eine Tag (sollte über < und > gehen) liegt und gleich schauen welcher Preis dazugehört (kannst du gleich in nem array speichern...

    So meine Idee... ab Montag hab ich wieder mehr Zeit, dann können wir uns nochmal unterhalten...
     
    #16      
  17. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Hallo Top_Gun, ja wär super ich les mich jetzt heute nochmal bisschen mehr in die ganze Thematik ein weil ich eben absoluter php-Anfänger bin und daher noch ncith so viel Ahnung habe außerdem denke ich dass ich auch einige Form-Fehler habe also man Teile des Codes ganz einfach abkürzen könnte nur ich weiß eben nciht wie... bin ja schon froh dass es überhaupt einigermaßen klappt ;-)

    Wenn du Zeit hast wär echt cool wenn du nochmal drüberschauen könntest.

    gruß max
     
    #17      
  18. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    ModellierungsProblem?
    AW: ModellierungsProblem?

    Ich habe mir jetzt nicht den gesamten Thread durchgelesen und konnte auch alle Formulierungen nicht ganz verstehen, trotzdem versuche ich mal was hilfreiches einzuwerfen:

    Du willst feststellen, ob und wie ein Zuschlag in einem bestimmten Zeitraum angewandt werden muss? Dann nimm dir doch einfach jeden Tag deines Zeitraums und schau in der Datenbank ob dieser mit einem oder mehr Zuschlägen belegt ist. Schleife drüberjagen, alles zusammenzählen und fertig.
    Deine Datenbankstruktur kenne ich nicht, aber wenn du alles mit Timestamps geregelt hast, ist es ja kein Problem mit BETWEEN (MySQL vorausgesetzt) alle Datensätze zu finden, die einen bestimmten Tag betreffen.


    Duddle
     
    #18      
  19. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    ModellierungsProblem?
    AW: ModellierungsProblem?

    So ist nicht ganz so einfach wie ich dachte und auch ich stecke gerade... Und zwar bei der SQL Abfrage... Between hilft da glaub ich gar nicht viel... Ich habe ja nur ein Datum mit dem ich Abfrage und in der Datenbank stehen zwei Daten (Anfang und Ende) die einen Zeitraum definieren. Ich muss also Abfragen ob mein Datum in dem Zeitraum liegt... Stehe gerade auf dem Schlauch, hier mal meine Überlegungen (ungetestet):

    Edit: Oh man manchmal blockier ich mich irgendwie selbst... Teste das mal, sollte klappen...
    PHP:
    1. <?php
    2.  
    3. $Anfang_Datum = "2008.11.29";
    4. $End_Datum = "2009.01.10";
    5.  
    6. list($ay,$am,$ad) = split("\\.",$Anfang_Datum);
    7. list($ey,$em,$ed) = split("\\.",$End_Datum);
    8.  
    9. $A_Wert = mktime(0,0,0,$am,$ad,$ay);
    10. $E_Wert = mktime(0,0,0,$em,$ed,$ey);
    11.  
    12. $DIFF = $E_Wert - $A_Wert;
    13.  
    14. $Tage = floor($DIFF/86400);
    15.  
    16. list($hy,$hm,$hd) = split("\\.",$Anfang_Datum);
    17.  
    18. for ($a=0;$a<$Tage;$a++) {
    19.     if (checkdate($hm,$hd,$hy)) {
    20.         $Hilfs_Datum  = date("Y-m-d",mktime(0, 0, 0, $hm, $hd, $hy));
    21.         $sql = "SELECT * FROM Tabelle WHERE Anfangsdatum < ".$Hilfs_Datum." AND Enddatum > ".$Hilfs_Datum;
    22.         $erg = mysql_query($sql);
    23.         // Hier die Berechnung für den Preis
    24.     } elseif (checkdate(1,($hd+1),$hy)) {
    25.         $hm = 1;
    26.         $hd = $hd + 1;
    27.         $Hilfs_Datum  = date("Y-m-d",mktime(0, 0, 0, $hm, $hd, $hy));
    28.         $sql = "SELECT * FROM Tabelle WHERE Anfangsdatum < ".$Hilfs_Datum." AND Enddatum > ".$Hilfs_Datum;
    29.         $erg = mysql_query($sql);
    30.         // Hier die Berechnung für den Preis
    31.     } elseif (checkdate(1,1,($hy+1))) {
    32.         $hd = 1;
    33.         $hm = 1;
    34.         $hy = $hy + 1;
    35.         $Hilfs_Datum  = date("Y-m-d",mktime(0, 0, 0, $hm, $hd, $hy));
    36.         $sql = "SELECT * FROM Tabelle WHERE Anfangsdatum < ".$Hilfs_Datum." AND Enddatum > ".$Hilfs_Datum;
    37.         $erg = mysql_query($sql);
    38.         // Hier die Berechnung für den Preis
    39.     } else {
    40.         echo "Fehler: Es konnte kein gültiges Datum berechnet werden.";
    41.     }
    42.     $hd = $hd + 1;
    43. }
    44.  
    45. ?>
    Edit 2: Bitte halt die Namen in den SQL-Strings so anpassen wie du es brauchst und die Variablen Anfang_ und End_Datum mit den echten Daten füllen. Alle sind auf das englische Date-Format ausgelegt. Kann man aber auch auf Timestamp umschreiben.
     
    Zuletzt bearbeitet: 30.09.2008
    #19      
x
×
×
teststefan