# LAN Sitzplan



## Perforator (28. August 2002)

hi,
also ich habe eine Gästeliste für eine LAN die wiederum eine Tabelle in meiner MySQL datenbank hat wo alle User mit ID, usw... aufgelistet sind.
So, nun möchte ich noch einen Sitzplan dazu haben. Das heißt das aus der Tabelle (oben beschrieben) an eine weiter tabelle weitergegeben werden für den sitzplan. Nun kann ein Besucher der LAN einen Platz reservieren. Dies soll dann im Sitzplan mit farben gekennzeichnet werden (wie bei nem Plan von lansurfer)
also z.B.:
rot = reserviert
grün = frei
gelb = vorgemerkt
Meine Idee war eben wie oben genannt das dies durch die Weitergabe der User in die z.B. "sitzplan"-Tabelle gehen dürfte, sodass dann letztendlich ein Besucher der LAN auch das recht auf die Reservierung hat.

Doof erklärt, ich weiss 
Ich hoffe jemand versteht was ich will und kann mir eine Lösung anbieten?! Ein Gästelisten-System hab ich schon also fehlt nur noch die Vollendung.
Falls jemand selbst unbeholfen ist kann er mir ja evtl. sagen wo ich sowas bekomm (abgesehen von lansurfer)
thx im voraus
PS: Suchfunktion hat da auch nixmehr gebracht


----------



## René Paschold (28. August 2002)

Kino Reservierung in PHP 

Schau mal hier. Geh auf Programm und wähle eine Uhrzeit aus. Am besten eine um 20 Uhr. Schicke die Reservierung ab (ich lösche den Eintrag wieder aus der DB) nimmst als Namen Hubertus Huber dann weiss ich das das du bist  

Wenn die Reservierung bestätigt wurde gehst zurück und klickst wieder auf den Film und die Uhrzeit. Wenn es das ist was du meinst kann ich dir ein paar Tips geben!

PS: Das Design ist nicht von mir  aber die Programmierung!


----------



## Perforator (28. August 2002)

*super*

jjjjjjjaaaaaaaaaaaaaaaa geil!
DU BIST MEINE RETTUNG
juhu
geil geil geil
ok, also des is echt n1!
gib mal tipps...
*injubelausbrech*


----------



## René Paschold (28. August 2002)

Also das ist wie folgt aufgebaut:

Es gibt zwei Tabellen. Eine die den Bestuhlungsplan enthält und eine die den Belegungsplan enthält. Beide Tabellen sind identisch.

Du hast jetzt mehrer Möglichkeiten das darzustellen.

Ich poste dir hier mal den Source Code, auch wenn er dir erstmal recht unverständlich vorkommt  
Vielleicht findest du dich ja zurecht, wenn nicht schreibe hier rein und ich werde versuchen dir zu helfen!


```
/* sql statement einlesen */	
	$sqlPlatz = "SELECT REIHE, S01, S01ST, S02, S02ST, S03, S03ST, S04, S04ST, S05, ";
	$sqlPlatz.= "S05ST, S06, S06ST, S07, S07ST, S08, S08ST, S09, S09ST, S10, S10ST, S11, ";
	$sqlPlatz.= "S11ST, S12, S12ST, S13, S13ST, S14, S14ST, S15, S15ST, S16, S16ST, S17, ";
	$sqlPlatz.= "S17ST, S18, S18ST, S19, S19ST, S20, S20ST, S21, S21ST, S22, S22ST, S23, ";
	$sqlPlatz.= "S23ST, S24, S24ST, S25, S25ST, S26, S26ST, S27, S27ST, S28, S28ST, S29, ";
	$sqlPlatz.= "S29ST, S30, S30ST, S31, S31ST, S32, S32ST, S33, S33ST, S34, S34ST, S35, ";
	$sqlPlatz.= "S35ST, S36, S36ST, S37, S37ST, S38, S38ST ";
	$sqlPlatz.= "FROM ".$platz->tbl_platz." Platz ";
	$sqlPlatz.= "WHERE (KINO = $knr) ";
	$sqlPlatz.= "AND (DATUM = $filmdatum) ";
	$sqlPlatz.= "AND (VORST = $vorst) ";
	$sqlPlatz.= "ORDER BY REIHE ";
	$platz->odbc_query ( $sqlPlatz );
	
	$sqlStuhl = "SELECT REIHE, S01, S02, S03, S04, S05, ";
	$sqlStuhl.= "S06, S07, S08, S09, S10, S11, ";
	$sqlStuhl.= "S12, S13, S14, S15, S16, S17, ";
	$sqlStuhl.= "S18, S19, S20, S21, S22, S23, ";
	$sqlStuhl.= "S24, S25, S26, S27, S28, S29, ";
	$sqlStuhl.= "S30, S31, S32, S33, S34, S35, ";
	$sqlStuhl.= "S36, S37, S38 ";
	$sqlStuhl.= "FROM ".$stuhl->tbl_stuhl." Stuhl ";
	$sqlStuhl.= "WHERE (KINO = $knr) ";
	$sqlStuhl.= "ORDER BY REIHE ";
	$stuhl->odbc_query ( $sqlStuhl );
	
	$spaltenname = array ( "S01", "S02", "S03", "S04", "S05", "S06", "S07", "S08", "S09", "S10", "S11", 
							"S12", "S13", "S14", "S15", "S16", "S17", 
							"S18", "S19", "S20", "S21", "S22", "S23", 
							"S24", "S25", "S26", "S27", "S28", "S29", 
							"S30", "S31", "S32", "S33", "S34", "S35", 
							"S36", "S37", "S38" );
	
	
	$s = 1;
	$p = 1;
	
	odbc_fetch_row ( $platz->result, $p );
	$belPlan = array ();
	
	while ( odbc_fetch_row ( $stuhl->result, $s ) )
	{
		$belReihe = array ();
	
		if ( ( odbc_result ( $platz->result, "REIHE" ) ) != ( odbc_result ( $stuhl->result, "REIHE" ) ) )
		{
			// lesen aus stuhl
			for ( $sloop=0; $sloop < 38; $sloop++ )
			{
				$spaltennameResult = odbc_result ( $stuhl->result, $spaltenname[$sloop] );
				
				if ( $spaltennameResult == 0 )
				{
					array_push ( $belReihe, "0" );
				}
				else
				{
					array_push ( $belReihe, "B" );
				}
			}		
		}
		else
		{
			// lesen aus platz
			for ( $sloop=0; $sloop < 38; $sloop++ )
			{
				$spaltennameResult = odbc_result ( $platz->result, $spaltenname[$sloop] );
				
				if ( $spaltennameResult == 0 )
				{
					array_push ( $belReihe, "0" );
				}
				
				if ( ( $spaltennameResult >= 1 ) && ( $spaltennameResult <= 98 ) )
				{
					switch ( odbc_result ( $platz->result, $spaltenname[$sloop]."ST" ) )
					{
						case "":
							array_push ( $belReihe, "G;".odbc_result ( $platz->result, "REIHE" ).";".$spaltennameResult );
							break;

						case "R":
							array_push ( $belReihe, "R" );
							break;

						case "V":
							array_push ( $belReihe, "V" );
							break;
					}
				}

				if ( $spaltennameResult == 99 )
				{
					array_push ( $belReihe, "B" );
				}
			}

			$p++;
			odbc_fetch_row ( $platz->result, $p );
		}

		$belPlan[] = $belReihe;
		$reihe[] = odbc_result ( $stuhl->result, "REIHE" );
		$s++;
	}
```


----------



## Perforator (28. August 2002)

*autsch*

hm...
jo sieht toll aus *garnixcheck*
Aber auf diesem Prinzip sollte es bzw. is sowas aufgebaut!
Ich benötige ja auch 2 Tabellen. Bei dir ist es einmal der Bestuhlungsplan und einmal der Belegungsplan.
Bei mir wären des dann die Gäste und einmal der Sitzplan-Gäste (oder so ähnlich  )

Bei mir müsste es halt dann so sein das die Tabelle des Sitzplans den Inhalt der Tabelle der Gäste haben müsste (damit halt auch nur ein angemeldeter Gast einen Sitzplan auswählen kann).

*Einfach gesagt: * Ich brauch einfach ein komplettes System das ich dann je nach dem auf meine Bedürfniss zuschneiden kann.


----------



## René Paschold (28. August 2002)

Ich wüßte jetzt nicht ob es da ein fertiges Modul gibt. Wobei ich eher denke das Nein!

Ich habe aber eine einfachere Lösung für dich!

Versuche doch das ganze in eine Tabelle zu packen. Mal angenommen du hast 5 Reihen mit jeweils 5 Plätzen dann könnte deine Tabelle so aussehen:

id
Sitz01
Status01
Sitz02
Status02
Sitz03
Status03
Sitz04
Status04
Sitz05
Status05

Pro Reihe hast du einen Datensatz. In Sitz01 usw. speicherst du ob da wirklich ein Sitz vorhanden ist. Ich glaube kaum das dein Sitzplan von oben wie ein Rechteck aussieht  

Ist das Feld Status speicherst du zu jedem Sitz ob er reseriviert ist oder nicht. Am besten beides mit Boolschen Feldern!

Dann könnte das ungefähr so aussehen:


```
$rows = mysql_fetch_array ($result))
{
  if ($rows[Sitz01])
  {
    echo "Ist da ";
    if ($rows[Status01)
    {
      echo " und noch frei";
    }
    else
    {
      echo " und schon belegt";
    }
  }
}
```

Natürlich ist das jetzt nur ein simples Beispiel. Wenn dann bietet sich hier an auch mit Arrays zu arbeiten ... Denn du wirst sicherlich mehr als 5 Plätze pro Reihe haben!

Grüße
Fatility


----------



## Perforator (28. August 2002)

*jep*

hm...
jo werd ich mal probieren!

komm halt ned mit dem code zurecht (kann ihn zwar interpretieren aber der letzt stich fehlt mir alles zu kapieren)

bin halt doch dumm  
naja
falls ich nicht hinbekomm werd ich wohl doch das system von lansurfer nehmen.
oder ich meld mich nochmal bei dir
thx für deinen Hilfsbereitschaft


----------



## René Paschold (28. August 2002)

Ich sehe gerade das der wichtigste Teil fehlt   


```
function erstelleBild ( $wert )
		{
			$content = substr ( $wert, 0, 1 );

			if ( $content == "0" ) return "";
			
			if ( $content == "G" )
			{
				$data = split ( ";", $wert );
				return "<a href=\"javascript:sitzwahl ( 'R".$data[1]."S".$data[2]."' )\"><img src=\"img/f.gif\" name=\"R".$data[1]."S".$data[2]."\" border=\"0\"></a>";			
			}
			
			if ( $content == "B" ) return "<img src=\"img/n.gif\">";
			if ( $content == "R" ) return "<img src=\"img/b.gif\">";
			if ( $content == "V" ) return "<img src=\"img/b.gif\">";
		}
		
		$i = 0;
		$ende = count ( $belPlan );
		
		while ( $i < $ende )
		{
			echo "<tr>\n";
			foreach ( $belPlan[$i] as $val )
			{
				echo "<td height=\"25\">".erstelleBild ( $val )."</td>\n";
			}
			echo "<td valign=\"middle\">&nbsp;&nbsp;R".$reihe[$i]."</td>";
			echo "</tr>\n";
			$i++;
		}
```

vielleicht verstehst du das jetzt etwas besser!
Gruß
Fatility


----------



## Perforator (29. August 2002)

*jep*

jo also ich hab mich jetzt mal durch deinen code "geboxt" und versteh jetzt einiges mehr als vorher  

wenn ich das richtig verstanden hab bilde ich aus einer Reihe sozusagen einen Array.
Das würde dann wie folgt aussehen:
Sitz1
Sitz2
Sitz3
Sitz4
Sitz5

Sitz 1-5 bilden eine Reihe. Aus diesen 5 Sitzen bzw. diese Reihe mach ich als einen Array.

Danach die folgenden Reihen.
Natürlich muss ich dann auch jedem Sitz dem Status zuweisen. Also falls jemand einen Platz reserviert, wird dann dem Sitz z.B. der Status01 vergeben mit der dazugehöring ID des Gasts. So dass dann der Sitz.. für den Gast mit der ID.. reserviert ist.

Das ganze kann ich auch in eine Tabelle tun.
Ich brauch nur noch eine Spalte für den Status.

So dürfte es eigentlich hinhauen. Das mit den Grafiken is ja auch kein Stress, weil du des ja eh scho gepostet hast.  

ergänz mich bitte falls etwas nicht stimmt oder du noch weitere Vorschläge hast.


----------



## Perforator (29. August 2002)

*shit*

kann bitte ein Mod den oben stehenden Post in den Thread "LAN-Sitzplan" tun?
und diesen Thread dann löschen?
wäre nett
thx


----------



## René Paschold (29. August 2002)

Habe die beiden Postings zusammen geführt. Wenn die einen aussagekräftigen Betreff nimmst ist es ok auch ein neues Thema aufzumachen wobei das in unserem Fall nicht angebracht wäre. 

Ich bin auch gerade nur durch Zufall auf dein Posting gestoßen sonst hätte ich dir schon früher geantwortet!

Im Prinzip hast du es richtig verstanden jo.
Wobei du evtl. nichtmal ein Array brauchst... (siehe weiter unten)

Die Array Geschichte brauchst du wenn du mehrere Sitzpläne hast...

Grüße
Fati


----------



## Perforator (29. August 2002)

kannst du mir vielleicht noch etwas zum code erläutern?
z.B. zur "Funktion erstelleBild"

brauch noch ein paar detailierte infos


----------



## René Paschold (29. August 2002)

Klar kein Problem:


```
function erstelleBild ( $wert )
        {
            $content = substr ( $wert, 0, 1 );

            if ( $content == "0" ) return "";
            
            if ( $content == "G" )
            {
                $data = split ( ";", $wert );
                return "<a href=\"java script:sitzwahl ( 'R".$data[1]."S".$data[2]."' )\"><img src=\"img/f.gif\" name=\"R".$data[1]."S".$data[2]."\" border=\"0\"></a>";            
            }
            
            if ( $content == "B" ) return "<img src=\"img/n.gif\">";
            if ( $content == "R" ) return "<img src=\"img/b.gif\">";
            if ( $content == "V" ) return "<img src=\"img/b.gif\">";
        }
```

In die Function wird ein Wert übergeben. Entweder beinhaltet diese Variable ein B, R oder V. Dieser Status wird am Ende der Funktion mit IF geprüft und zurück gegeben!

Da die Variable allerdings nicht nur einen Buchstaben enthält, mache ich vorher einen substr drauf. D.h. ich nehme alle nachfolgenden Zeichen weg sodas ich nur noch den ersten Buchstaben habe.

Dann prüfe ich was für einen Buchstaben ich habe. Wenn der Inhalt leer ist gebe ich nichts zurück was soviel heißt wie, es wird nichts angezeigt, den Platz gibt es nicht.

Wenn ein G drin steht ist der Platz noch frei und ich gebe einen kompletten Link zurück.

Wenn das nicht der Fall ist laufe ich weiter zu der dreichfach IF Abfrage. Wenn der Wert nicht null und nicht G ist dann existiert der Stuhl zwar ist aber aus einer der folgenden Gründe nicht belegbar:

Er ist schon reserviert
Er ist schon verkauft
oder er ist kaputt oder mit sonstwas belegt. 

Da gebe ich dann nur ein Bild ohne Link zurück. Das sind dann quasi die roten oder hellblauene Stühle.


```
$i = 0;
        $ende = count ( $belPlan );
        
        while ( $i < $ende )
        {
            echo "<tr>\n";
            foreach ( $belPlan[$i] as $val )
            {
                echo "<td height=\"25\">".erstelleBild ( $val )."</td>\n";
            }
            echo "<td valign=\"middle\">&nbsp;&nbsp;R".$reihe[$i]."</td>";
            echo "</tr>\n";
            $i++;
        }
```
Und hier rufe ich die Funktion einfach auf und übergebe in die Funktion mit dem Wert $val den String der ausgewerten werden soll.

Grüße
Fatility


----------

