Problem: Überprüfen ob eine Zahl bereits in der Datenbank und wenn ja dann...

schultze

Mitglied
Hi,

Also ich habe folgendes Probelm:

Ich möchte einen Sitzplan machen, beidem sich User eintragen können.
wie ist ja nicht so schwer allerdings die ausgabe ob ein Feld frei oder belegt ist.

Ich habe pro Sitzplatz eine Tabelle erstellt. Nun soll eine routine überprüfen ob das Feld belegt oder frei ist und dem nach die Hintergrundfarbe setzten. Nun ist es ja möglich das für jedes Feld abzufragen, doch das ist denke ich schwachsinn.

Darum ist mir die idee gekommen alle Sitzplätze die schon vergeben sind in ein Array zu schreiben und diesses dann pro Platz aus zulesen., Das geht denke ich scheller und spart Traffic....

Doch nun das Problem das ich keine Ahnung von Arrays habe und ich soetws realisere. Kann mir jedand helfen?

Danke

Tim

P.S.: Gibts da ein tut., zu?
 
Für jeden Sitzplatz eine Tabelle ist glaub ich keine gute Idee.
Wenn du mehrere User per Sitzplatz haben solltest, dann mach zwei Tabellen,
eine für die Besucher und eine für die Sitzplätze, aber bei so vielen Tabellen fällt
das Handling garantiert schwer.

Du kannst jedenfalls prüfen, ob schon ein EIntrag ist, in dem du .z.B. folgendes
Query an MySQL sendest:
PHP:
SELECT `id` FROM `sitzplatz` WHERE `nummer`=123;
Und dann einfach schauen, ob Ergebnise zurückgelifert wurden, oder nicht.
Z.B. mit mysql_num_rows

Ich hoffe, du versthst, was ich meine.
 
Nein verstehe ich leider nicht so ganz.
Bin nun aber was weiter, doch es hagt immer noch.

Es gibt eine Tabelle Teilnehmer, in der unteranderem eine Spalte Sitzplatz vorhanden ist. Dort wird die Sitzplatznummer gespeichert.

Zum testen habe ich ein Array erstellt und Sitzplätze drin gespeichert. Dieses Array wird ausgelesen und halt überprüft ob die gewisse nummer vrhanden ist. wenn nicht, wird das feld grün, wenn ja dann rot.

Das funktioniert so weit. Nun müssen allerdings die schon belegten Sitzplatznummer aus der datenbank in dem Array gespeichert werden. da hackt es nun.

Folgendes habe ich:

PHP:
// Daten werden ausgelesen				
include ("config.inc.php");

// Datenbankverbindung wird aufgebaut				
mysql_connect("localhost","$sql_benutzername","$sql_passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("$sql_db") or die ("Die Datenbank existiert nicht");

// Abfrage ob User schon einen Platz gewählt hat
  $abfrage = "SELECT sitzplatz FROM teilnehmer";
  $ergebnis = mysql_query($abfrage);

$belegt = mysql_fetch_array($ergebnis);


Allerdings funktioniert das nicht ganz. Es wird nur ein Feld angezeigt das es belegt ist, wobei dies 3 sein müssten.

Gruß

Tim


P.S.: bitte helft mir ich sitze nun schon 2 Std. an dem Problem und habe keinen Bock mehr!
 
Hi Tim ;)

Du gehst das ganze Problem viel zu aufwendig an.
Stelle einfach eine Anfrage an die Datenbank nach einem Datensatz, in dem die Sitznummern enthalten ist, wie Fabian schon erwähnte.
Code:
SELECT `sitzplatz` FROM `tabelle` WHERE `nummer`=123;
Bei 123 muss natürlich eine passende Variable hin in der du die zu checkende Platznummer übergibst.

Von diesem MySQL-Query holst du dir das normale result und checkst einfach mit mysql_num_rows(), ob es passende Datensätze gibt. Wenn also mysql_num_rows($result) ungleich 0 ist, dann ist der Platz bereits belegt.
 
Hi,

Wenn ich das ganze hier richtig verstehe, dann müsste ich doch pro Sitzplatz eine Abfrage an die datenbank starten oder nicht.

Beispiel:
Platz 1: suche in der Daten bank ob Platz eins da ist
- Ergebnis Null -> Platz ist frei und Feld wird grün
Platz 2: suche in der Daten bank ob Platz zwei da ist
- Ergebnis Null -> Platz ist frei und Feld wird grün
...

und so weiter und so fort.,

Bei 125 Plätzen dauert dies natrülich einige Zeit.
Darum habe ich mir gedacht die werte einer Abfrage einmal in ein Array zu schreiben und dieses dann immer auszulesen....

Verstehe ich euch total Falsch oder ist mein Gedankengang fölliger Quatsch?
 
Ok wenn du die Sache ganz konkret für alle Sitze einsetzt, hast du natürlich recht. 125 Querys würden ein wenig lange dauern. Dann ist der Weg über das Array und die Funktion in_array() am sinnvollsten.
 
ok, dann hatte ich doch keinen denkfehler.

Wie ich nun das Array durchsuche habe ich schon raus. Allerdings fehlt mir noch wie ich die Daten aus der Datenbank im Array speichere.
Alee Varianten funktionieren nicht so ganz....

PHP:
include ("config.inc.php");

// Datenbankverbindung wird aufgebaut				
mysql_connect("localhost","$sql_benutzername","$sql_passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("$sql_db") or die ("Die Datenbank existiert nicht");
  

// Abfrage ob User schon einen Platz gewählt hat
  $abfrage = "SELECT sitzplatz FROM teilnehmer";
  $ergebnis = mysql_query($abfrage);

  $belegt = mysql_fetch_array($ergebnis);

Allerdings funktioniert das nicht so ganz....

Wie lautet der befehl?

Danke für eure Hilfe...
 
PHP:
$abfrage = "SELECT sitzplatz FROM teilnehmer";

$ergebnis = mysql_query($abfrage);

while($row = mysql_fetch_array($ergebnis)) {
  $sitzplatznummernarray[] = $row['spaltemitsitzplatznummer'];
}
Dann kannst du mit if(in_array("sitzplatznummer", $sitzplatznummernarray)) checken, ob die zu prüfende Nummer bereits im Array enthalten ist.
 
Hi,

danke du hast mir echt geholfen. der erste Teil läuft mitlerweile....

Allerdings ist noch ein kleines Problem entstanden.
Und zwar soll der User sich nun ja einen Platz resevieren können.

Dazu habe ich folgendes gemacht:



PHP:
		// Abfrage ob User schon einen Platz gewählt hat
		  $abfrage1 = "SELECT sitzplatz FROM teilnehmer WHERE uid = '$uid'";
		  $ergebnis1 = mysql_query($abfrage1); 
		  
		  /* while($row = mysql_fetch_object($ergebnis1))
			{
			$sitze = $row->sitzplatz;
			}
			*/
			
			// Überprüfe ob User schon einen Platz reserviert hat
			IF (mysql_num_rows($ergebnis1) != '0')
			{
				// Sitzplatz wird in Datenbank eingetragen
				$aendern = "UPDATE teilnehmer Set sitzplatz = '$splatz' WHERE uid = '$uid'";
				$update = mysql_query($aendern);
				
				echo "Der Sitzplatz $splatz wurde für dich reserviert! Diese Reservierung ist unverbindlich und kann jederzeit vom Veranstalter rückgängig gemacht werden!";
			}
			else
			{
				// Der User hat schon einen Sitzplatz in der Datenbank reserviert!
				echo "Du hast bereits einen Sitzplatz gewählt! Pro Teilnehmer kann nur ein Platz reserviert werden.";
			}

Es wird nicht richtig überprüft, ob schon ein Sitzplatz vergeben wurden ist.

Ich habe es auch schon probiert dis mit der num-row Methode zu machen, zu schauen ob das Ergebnis Null ist und dann die aKTIONEN DUrch führen zulassen, aber das klappt auch nicht.

Wo ist der Fehler?

Danke für deine Hilfe...
 
Soweit ich das überblicken kann, liegt der Fehler lediglich darin, dass mysql_num_rows dir immer einen integer-Wert liefert - du überprüfst hier jedoch auf einen String mit dem Inhalt 0:
PHP:
IF (mysql_num_rows($ergebnis1) != '0')
Also lass einfach die ' weg:
PHP:
IF (mysql_num_rows($ergebnis1) != 0)
 
Zurück