Tabellenhintergrundfarbe variabel machen

DJmension

Mitglied
Hallo erstmal , ich melde mich nun auch wieder mit einem Problemchen bei euch.

Ich habe eine Datenbankabfrage in einer Tabelle worinn verschiedene User einträge machen können , jetzt möchte ich das so haben wenn ein User einen eintrag geändert oder einen Eintrag neu gemacht hat , das für diesen User der eintrag in der Tabelle mit der Hintergrundfarbe rot erscheint , und das aber für genau 12 Stunden danach soll die Hintergrundfarbe der Zeile wieder ins standart springen.

Wie lässt sich das am besten einrichten ?

Es besteht eine user Datenbank worinn Username, Passwort und benutzergruppe drinnen steht.
und eine Datenbank in der die herkömmlichen einträge drinnen stehen , diese möchte ich auch mal aufführen.

Level , Opfername , Opfer IDnummer , Beute , Angreifer Name , Datum , und Zeit des Angriffs.

Dies ist eine datenbank um für ein Onlinegame angriffe mit besonders viel beute fest zu hallten.
Ein Opfer kann nur alle 12 Stunden Angegriffen werden desswegen möchte ich den Eintrag hervorheben für User die ein Opfer schon angegriffen haben innerhalb der 12 Stunden sperre.

Wie bekomme ich das hin , das für jeden User spezielle Zeilen Farbig hervorgehoben werden und für andere User eben nicht.

Ich Lade eine übersicht hoch wie die aktuelle Datenbank abfrage aussieht.
Das Problem liegt sicherlich darinn verborgen das ein Eintrag der jetzt für mich Rot erscheinen soll ja auch zwischendurch von anderen bearbeitet werden kann und sich somit ändert.


Also nochmal , ein Eintag den ich gemacht habe oder bearbeitet habe soll nur für mich 12 Stunden lang mit der Hintergrundfarbe Rot erscheinen. Wie lässt sich das machen ?
 

Anhänge

  • image1.jpg
    image1.jpg
    113,5 KB · Aufrufe: 40
Zuletzt bearbeitet:
Am besten eine neue Tabelle anlegen in der du dann

- userid
- eintrag id
- timestamp (vom eingetragenen bzw bearbeiteten eintrag) + 12 Stunden

speicherst, und dann einfach prüfst ob der eingeloggte User mit der ID in der Datenbank drin ist und der timestamp dort >= time() ist.
 
also ,
userid - VARCHAR
eintragid - VARCHAR
timestamp - INT


diese habe ich nun angelegt,

oder ?
timestamp - timestamp - ON UPDATE CURRENT_TIMESTAMP - Nein - CURRENT_TIMESTAMP




Jetzt müsste ich nur noch wissen wie das mit der Zeit + 12 Stunden funktioniert Bitte

Gott oh Gott oh Gott , ist das kompliziert schnauf

Edit: Mir fällt gerade auf das ja beim eintrag in die Goldieliste , ja auch gleichzeitig in eine andere Tabelle eingetragen werden muß , also auch in die time liste wo ja dann die eintragid und userid mit festgehallten werden muß.... geht denn sowas überhaupt , mit einem formular in 2 verschiedene Datenbanktabellen etwas einfügen oder ändern ? oder muß ich da nur die action.php dem entsprechen unten einen weiteren eintrag einfügen ?

Ich schnall das einfach nicht , ich bin zu blöd für sowas , ich glaub das bekomm ich nie hin !
 
Zuletzt bearbeitet:
Hier mal die Datenbank eingabe für neu einträge , so wie es mir möglich ist ....


Code:
<?
// ********************* der neu Eintrag **************************

// user id ermitteln
session_start();
include("dbconnect.php");
$query = "SELECT * FROM login_s20";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
while($row = mysql_fetch_array($result)){ 
IF ($_SESSION["username"] == $row['username'])
	$userid = $row['id'];
}
mysql_close($connect);

//eintrag in die Goldie Datenbank
include("dbconnect.php");

$Level = $_POST["Level"];
$Name = $_POST["Name"];
$IDnum = $_POST["IDnum"];
$Beute = $_POST["Beute"];
$erwischt = $_POST["erwischt"];
$Energie = $_POST["Energie"];
$Datum = $_POST["Datum"];
$Zeit = $_POST["Zeit"];

$eintrag = "INSERT INTO goldie_s20 (Level,Name,IDnum,Beute,erwischt,Energie,Datum,Zeit) VALUES ('$Level','$Name','$IDnum','$Beute','$erwischt','$Energie','$Datum','$Zeit')";
$eintragen = mysql_query($eintrag);
mysql_close($connect);


// eintrag in die time Tabelle
include("dbconnect.php");

$eintrag = "INSERT INTO time (userid,eintragid,timestamp) VALUES ('$userid','$IDnum','$Zeit')";
$eintragen = mysql_query($eintrag);
mysql_close($connect);

header("Location: goldie.php");
?>

nur das Problem das in der time Tabelle jetzt immer die eintrags Zeit drin steht , und nicht so wie es seien sollte + 12 Stunden , wie wird das Brot gebacken ?

und wie ich es dann verwende ist mir auch noch nicht klar
 
Zuletzt bearbeitet:
Also wenn ich mir dein coding so anschaue dann stellen sich mir die Nackenhaare zu Berge!

Versuch doch einfach mal PHP von gundauf zu lernen...

z.b.
- brauchst du die dbconnect.php nicht 3 mal include....
- keinerlei Schutz gegen eine MySQL Injection.
- und ich weiß auch nicht was das sein soll $Zeit = $_POST["Zeit"];... warum willst du die Variable "zeit" aus einem Formular nehmen.

Für die Tabelle "time" sollte die Spalte "timestamp" kein INT sein sondern DATETIME. Wenn du nun einen INSERT fährst dann sollte dieser so aussehen:

PHP:
mysql_query("INSERT INTO time SET userid='".$userid."',  eintragid = '".$IDnum."', timestamp = NOW() + INTERVAL 12 HOUR ");

Ließ hierzu in der MySQL Doku http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html

Desweiteren empfehle ich dir http://www.php-quake.net/imprint.php
 
Erstmal danke ich dir für deine Hilfe , und dann möchte ich sagen das ich mir deine Seiten etwas näher ansehen werde.

Gute Nacht erstmal
 
So ich hab das coding etwas geändert :-) und hoffe sehr das sich jetzt nicht mehr so viele Nackenhaare aufstellen. Tut mir aufrichtig leid ich bin noch ein lernender der verzweifelt Teilweise auch selber erst versucht Probleme zu lösen , das dabei hin und wieder misst dabei raus kommt , ging sicher jedem mal so. Es tut mir auch leid das mir in diesem Falle die Zeit weg rennt und ich leider ohne Hilfe diesen Part nicht gebacken bekomme.
Schutz vor MYSQL Injection , sagt mir was , aber das muß erstmal warten , bis ich mich damit beschäfftigen kann erstmal sollte die Datenbank Funktionieren , und das wenn möglich sinnvoll und am besten auch sehr Benutzerfreundlich.

Jetzt genug Bla Bla

Hier der code für das eintragen in die DB Tabellen, hoffe sehr das es jetzt so in ordnung geht !

Code:
<?
session_start();
// ********************* der neu Eintrag **************************

// user id ermitteln
include("dbconnect.php");
$query = "SELECT * FROM login_s20";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
while($row = mysql_fetch_array($result)){ 
IF ($_SESSION["username"] == $row['username'])
	$userid = $row['username'];
}


//eintrag in die Goldie Datenbank
$Level = $_POST["Level"];
$Name = $_POST["Name"];
$IDnum = $_POST["IDnum"];
$Beute = $_POST["Beute"];
$erwischt = $_POST["erwischt"];
$Energie = $_POST["Energie"];
$Datum = $_POST["Datum"];
$Zeit = $_POST["Zeit"];
$eintrag = "INSERT INTO goldie_s20 (Level,Name,IDnum,Beute,erwischt,Energie,Datum,Zeit) VALUES ('$Level','$Name','$IDnum','$Beute','$erwischt','$Energie','$Datum','$Zeit')";
$eintragen = mysql_query($eintrag);

// eintrag in die time Tabelle
mysql_query("INSERT INTO time SET userid='".$userid."',  eintragid = '".$IDnum."', timestamp = NOW() + INTERVAL 12 HOUR ");
mysql_close($connect);

header("Location: goldie.php");
?>

Jetzt funktioniert auch das Eintragen soweit ganz gut , in die Tabelle time hab ich jetzt als userid = den Benutzernamen drin, die eintragid ist die IDnum ( kommt immer nur einmal vor in der gesammten DB) , und den Zeitstempel + 12 Stunden.
Die Action des Eintrag änderns werd ich auch so ähnlich aufbauen , das schaff ich aber dann auch sicherlich , ist ja fasst das selbe.

Jetzt stellt sich mir natürlich als Anfänger die Frage wie bekomme ich das jetzt so hin das wenn ich einen eitrag bearbeitet habe mir das system einen countdown anzeigt in der bearbeiteten ( oder neu angelegten ) Zeile.
Ich füge einfach mal das coding hier mit ein und markiere die Stelle an der ich mir den Countdown wünsche. Eventuell ist einer von euch so liebenswürdig mir dabei unter die Arme zu greifen.
Erst war eigentlich eine geänderte Hintergrundfarbe geplant , aber das ist sicherlich quatsch wenn ich eine abwechselde tr Farbe schon drin habe , glaube kaum das es möglich ist trotzdem ohne weiteres die hintergrundfarbe zu ändern.
Sollte ein Countdown zu kompliziert sein reicht auch ein 1.gif welches sich im gegebenem falle in 2.gif ändert.

Code:
while($row = mysql_fetch_assoc($result)){ 
if($i%2==0) { $trcolor = "#003333"; } else { $trcolor = "#005555"; }

    echo '<tr bgcolor="'.$trcolor.'">
<td>Countdown</td>
<td><font size="2">&nbsp;'.$row['Level'].'</font></td>
<td><font size="2"><a href="'.$link_name_s20.''.$row['Name'].'" target="_blank"><b>&nbsp;'.$row['Name'].'</b></a></font></td>
<td align="center"><font size="2"><a href="'.$link_id_s20.''.$row['IDnum'].'" target="_blank"><b>'.$row['IDnum'].'</b></a></font></td>
<td><font size="2">&nbsp;'.$row['Beute'].'</font></td>
<td><font size="2">&nbsp;'.$row['erwischt'].'</font></td>
<td><font size="2">&nbsp;'.$row['Energie'].'</font></td>
<td align="center"><font size="2">'.$row['Datum'].'</font></td>
<td align="center"><font size="2">'.$row['Zeit'].'</font></td>
<td align=center>
<a href="form_aendern.php?
id='.$row['id'].'&
Level='.$row['Level'].'&
Name='.$row['Name'].'&
IDnum='.$row['IDnum'].'&
Beute='.$row['Beute'].'&
erwischt='.$row['erwischt'].'&
Energie='.$row['Energie'].'&
Datum='.$row['Datum'].'&
Zeit='.$row['Zeit'].'" titel="&Auml;ndern"><img border="0" src="../images/Redo.gif"></a>';
Natürlich ist der code etwas umfangreicher , ich hab aber den ausschnitt aufs wesentliche reduziert , die while schleife wird aus der DB Tabelle goldies geladen.
 
Zuletzt bearbeitet:
Ich hab jetzt schon längere Zeit einiges Probiert , ich bekomme das absolut nicht hin , ewig Falsches Datum und Falsche Zeiten......

Einen countdown anzeigen muß doch möglich sein ?

Ich benutze für den erwünschten Countdown die Tabelle "time_s20"
Spalten : userid / eintragid .... beides im -int- format .............. / time format datetime

Ich denke ich müßte beim eintrag oder beim Ändern eines Eintrages gleichzeitig in die time_s20 DB schreiben wahrscheinlich fehlt mir da noch ein weiteres datetime und zwar das + 12 hour um dann einen Countdown nach ändern oder neu eintrags zu starten , welches dann nur für den betroffenen User Sichtbar ist.

Nö Blödsinn , sobald ein anderer das Opfer angreift und den Eintrag ändert ist das im momment laufende Countdown futsch.
 
Zuletzt bearbeitet:
Zurück