Login geschützer Bereich mit Warteschlange und Priorität

Und hier noch eine etwas bessere Version.

Wenn jemand die Mitteilung erhält, das er sich jetzt anmelden kann und er dies nicht tut. So blockiert er alle anderen die darauf warten das sie reinkommen.

Deshalb wird jetzt gezählt wie oft die Mitteilung das man sich anmelden kann angezeigt wurde. Nach der 20-ten Aufforderung erhält man einen Hinweis und wird aus der Warteschlange gelöscht.
 

Anhänge

Hi tombe,

wirklich vielen Dank für deine Bemühungen aber ich bekomme es bei mir nicht eingebaut.

Bei mir sieht es wie folg taus:
Wenn ich mich einlogge werden die eingebenen Daten mit der Datenbank verglichen, wenn die Daten übereinstimmen kann man entweder direkt richtig eingloggt werden wenn noch niemand anderes eingeloggt ist,
ansonsten wird man auf eine Warteseite umgeleitet.
Auf dieser Warteseite habe ich dann den folgenden Quellcode mit eingebaut.

Und ich bekomme in der Zeile von "if (mysql_result($status, 0, "nachname")" den Fehler angezeit "Unable to jump to row 0 on MySQL result index 38 in ...... on line 115.

Kann es vielleicht sein das es Probleme mit den 2 verschiedenen Tabellen gibt?

PHP:
$sql = "SELECT online FROM onlinetabelle WHERE online = 1 LIMIT 1";
$status = mysql_query($sql);
$online = mysql_num_rows($status);

// ermitteln wer sich als nächstes anmelden darf	
$sql = "SELECT nachname, uhrzeit, adminstatus FROM reihenfolge ORDER BY adminstatus DESC, uhrzeit ASC LIMIT 1";
$status = mysql_query($sql);

if (mysql_result($status, 0, "nachname") != $_SESSION["benutzer"] OR $online == 1) 
{
	$meldung = "Sie können sich im Moment nicht anmelden.";
	$meta = '<meta http-equiv="refresh" content="5; URL=log.php">';
} 
elseif (mysql_result($status, 0, "nachname") == $_SESSION["benutzer"] AND $online == 0) 
{
	$meldung = "Die Anmeldung ist jetzt möglich.";
	$meta = '';
}
 
Hi,

sicher das die Abfrage:

PHP:
sql = "SELECT nachname, uhrzeit, adminstatus FROM reihenfolge ORDER BY adminstatus DESC, uhrzeit ASC LIMIT 1";

auch wirklich einen Datensatz zurückgibt. nicht das es daran liegt.

Wenn es wirklich nur da dran liegt einfach den Teil

PHP:
mysql_result($status, 0, "nachname")

ändern in

PHP:
@mysql_result($status, 0, "nachname")

Dann wird ein solcher Fehler abgefangen.

Ansonsten wenn es gar nicht klappen will, stell doch mal die Beschreibung der Datenbank bzw. der 2 Tabelle die hierfür nötig sind, die Datei wo man sich ameldet und die Datei wo prüft ob man sich jetzt anmelden kann hier rein. Dann schau ich es mir mal an!!
 
Zuletzt bearbeitet:
Wenn ich einfach nur
PHP:
echo $status;
mach wird mir Resource id #38 ausgegeben.

Aber das mit der Fehlermeldung hat sich erledigt, hatte mich an einer Stelle vertippt gehabt.

Es ist jetzt so wenn jemand eingeloggt ist bekommt er die $meldung angezeigt.

Meldet sich der User aber ab, wird ihm immer noch die $meldung angezeigt das man sich im Moment nich anmelden kann.

Irgendwie springt der nicht richtig in die if-Schleife.
 
Aber immerhin wieder ein Stück weitergekommen.

Ist den der Nachname auch wirklich der "Benutzername" mit dem man sich anmeldet und hast du am Anfang der Seite auch session_start() stehen ?

Gruß Thomas
 
Hi tombe,

was würde ich nur machen wenn du so super Tipps für mich hättest ;)
Ich depp habe das session_start() vergessen gehabt.

Jetzt klappt zumindest mal die if-Schleife richtig.

Wirklich schonmal tausend Dank an dich
 
Hi tombe,

jetzt klappt die Reihenfolge soweit wie ich es ausprobieren konnte.

Du hattest ja noch eine überarbeitete Version von log.zip erstellt wo die Aufforderung zur Anmeldung auf maximal 20 begrenzt ist.

Das möchte ich jetzt noch probieren mit einzubauen, weil ich es eine wirklich super Idee finde.

Ich denke mal zumindest mit der Reihenfolge müsste es sich dann erledigt haben.
Aber es gibt noch so kleiner Sachen bzw. Baustellen die ich mit PHP realisieren möchte.
Da kommen bestimmt noch ein paar Fragen auf :)
 
Hi tombe,

die Reihenfolge klappt jetzt soweit perfekt.
Nur es gibt ein weiteres Problem,
wenn ich hierdurch

PHP:
        $sql = "DELETE FROM reihenfolge WHERE nachname = '" .$_SESSION["benutzer"] ."' LIMIT 1";
        mysql_query($sql);
        session_destroy();
        $meldung = "Die Aufforderung zur Anmeldung wurde bereits 20 Mal angezeigt ohne das die Anmeldung durchgeführt wurde. Aus diesem Grund wurden Sie aus der Warteschlange gelöscht.";
        $meta = "";

den User der sich nach 20 Versuchen nicht eingeloggt hat wieder von der Warteliste nehmen möchte wird nach dem 20.ten Versuch nur der Nachname aus der Tabelle gelöscht, uhrzeit und adminstatus bleiben stehen.

Wodran kann das denn liegen?
 
Hi,

so wie du es beschreibst müsste die SQL-Abfrage eine UPDATE-Anweisung sein.
Die einzige Erklärung die mir einfällt ist das es auf der Seite eben eine solche SQL-Abfrage mit UPDATE gibt die anstelle der DELETE-Anweisung ausgeführt wird.

Stell doch mal den kompletten Inhalt der Seite hier rein. Vielleicht findet sich dann eine Erklärung dafür.

Gruß Thomas
 
Zurück