online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon JackyChansen vom 14.08.2019, 22:47 Options

MYSQL + PHP Frage

Hi! Hab eine Frage .....bzw ein Problem.

Und Zwar hab ich eine Online Liste geschrieben , die wenn sich ein User einloggt in die Tabelle "Onlineliste" Username , Uhrzeit und Timestamp speichert. Nun hab ich noch eine Tabelle mit dem namen user_data (ID , Nickname , punkte) nun würde ich gerne in der Onlineliste jedem user der eine gewisse Punktzahl erreicht hat ein Bild anhängen. Könnt ihr mir helfen , wie ich das am besten umsetze?.


Antwort schreiben

Antwort 1 von Woo vom 15.08.2019, 09:59 Options

Moin,

das kannst du ja in PHP abfragen, indem du dir die Punktezahl aus der Datenbank holst.

Mal angenommen, diese Zahl ist dann in $punkte gespeichert.

Durch eine einfach IF Abfrage kannst du dann das Bild ausgeben.

if ($punkte > 100) echo "<img src='bild100punkte.jpg'>";


Kannst dann für die anderen Werte weiter mit else if abfragen oder direkt eine switch Anweisung nutzen.

Antwort 2 von JackyChansen vom 15.08.2019, 18:10 Options

Das Problem wäre dann , das jedem das gleiche Bild reingehangen wird.

Antwort 3 von Woo vom 15.08.2019, 18:44 Options

Deswegen sollst du ja eine Mehrfachverzeichgung machen.

if ($punkte >=100 && $punkte <200) -> BILD1
else if($punkte >= 200 && $punkte <300 > bild2
... //und so weiter
else ->kein bild


so oder so ähnlich

Antwort 4 von JackyChansen vom 15.08.2019, 18:51 Options

$s1="SELECT punkte, nickname FROM user_data ORDER by nickname";

  $q1=mysql_query($s1) or die("$s1<BR><BR>".mysql_error());

 
$s="SELECT * FROM onlineliste ORDER by nickname";

  $q=mysql_query($s) or die("$s<BR><BR>".mysql_error());

  
  
Cartman sagt:
 while($r1 = mysql_fetch_array($q))

  {
    while($r = mysql_fetch_array($q1))
    {
      if($r['nickname']==$r1['nickname'])
      {
        $s2="UPDATE onlineliste SET punkte='".$r['punkte']."' WHERE nickname='".$r['nickname']."'";
        $q2=mysql_query($s2) or die("$s2<BR><BR>".mysql_error());
      }
      
    }
    
    echo"<a href=\"community.php?nav=profil&uID=".$r1['nickname']."\" > 
Cartman sagt:
 echo"<a href=\"community.php?nav=profil&uID=".$r1['nickname']."\" > ".$r1['nickname']."</a> - ".$r1['punkte']."<br>";
}



Habs jetzt so geregelt , das problem ist jetzt nur das nur dem User der Alpabetisch ganz oben in der Liste angeordnet ist , dem die punkte angezeigt werdem......Da ist wohl irgendwo ein fehler nur weiss ich zum Teufel nicht wo ???

Antwort 5 von Woo vom 15.08.2019, 20:09 Options

Jau, Ist ja klar, du durchläufst mit der inneren Schleife alle Datensätze und nach dem ersten kompletten Durchlauf stehen diese für den 2 User (2 mal $rl Durchlauf) nicht mehr zur Verfügung.

Mach lieber so, dass du in der schleife immer dir die Werte aus user_data für den aktuellen User holst.

Außerdem hast du die Ausgabe außerhalb der Schleife, also kriegst du nur für die letzten Werte eine Ausgabe.

Antwort 6 von JackyChansen vom 15.08.2019, 21:49 Options

Kannst du mir ein Beispiel posten?

Antwort 7 von Woo vom 15.08.2019, 22:03 Options

Müsste so ungefähr aussehen:

while($r1 = mysql_fetch_array($q))
{
$s1 = mysql_query("SELECT punkte, nickname from user_data where nickname = '". $r1['nickname'] ."'");
$q1 = mysql_fetch_array($s1);
$s2="UPDATE onlineliste SET punkte='".$r['punkte']."' WHERE nickname='".$r['nickname']."'";
$q2=mysql_query($s2);

echo"<a href=\"community.php?nav=profil&uID=".$r1['nickname']."\"
echo"<a href=\"community.php?nav=profil&uID=".$r1['nickname']."\" > ".$r1['nickname']."</a> - ".$r1['punkte']."<br>";

} // Hier endet die While schleife


P.S. Was hat das mit "cartman sagt:" auf sich??! das ist in keinem echo Befehl?!

Antwort 8 von JackyChansen vom 15.08.2019, 22:07 Options

"cartman sagt:" , nein das hatte ich versentlich mitkopiert da steht in keinem zusammenhang +gg+

Antwort 9 von JackyChansen vom 15.08.2019, 22:32 Options

wie bring ich den vergleich noch unter?

if($r['nickname']==$r1['nickname'])

Antwort 10 von JackyChansen vom 15.08.2019, 22:33 Options

bzw.

if($r['nickname']==$r1['nickname'])
{
$s2="UPDATE onlineliste SET punkte='".$r['punkte']."' WHERE nickname='".$r['nickname']."'";

Antwort 11 von Woo vom 15.08.2019, 22:46 Options

Den brauchst du da nicht mehr, weil du ja mit der $s1 query schon nach dem benutzernamen suchst, der wird dann ja eindeutig sein


Ansonsten genau wie du schon geschrieben hast, direkt nach $q1 die if Abfrage, und endet nach den beiden Links

Antwort 12 von JackyChansen vom 15.08.2019, 22:50 Options

ja aber im prinzip holt er ja die punte von der der Tabelle "user_data" und updatet sie in die tabelle "useronline".

Antwort 13 von Woo vom 15.08.2019, 22:57 Options

In der Onlineliste ist doch nur username, und die zeit?!

die punkte sind doch in der User_data???
dann müsste der code so aussehen:

$s2="UPDATE {b]onlineliste[/b] SET punkte='".$r['punkte']."' WHERE nickname='".$r['nickname']."'";

Antwort 14 von JackyChansen vom 15.08.2019, 23:02 Options

Also folgenes :

ich hab in der Tabelle UserOnline die felder : nickname , punkte , timestamp , uhrzeit.

und in der Tabelle user_data nickname , punkte , etc.

Wenn man sich Registriert werden die ganzen daten in tabelle user_data geschrieben , loggt man sich ein wird ein datensatz erstellt , und somit ist der user als Online in der Liste zu sehen , loggt der user sich aus wird der datensatz gelöscht.

Deswegen muss ich ja die punkte von user_data in onlineliste rüberholen. Weisst du wie ich das meine?

Antwort 15 von Woo vom 15.08.2019, 23:10 Options

Problem habe ich jetzt schon ein wenig besser verstanden.

Aber 1. timestamp , uhrzeit. in useronline: ist das das gleiche? wozu 2 mal die zeit speichern?

Und was die Punkte angeht, wozu doppelt halten??


so, wie ich das jetz verstanden hab, müsste das so sein:
// Alle User, die Onlien sind, durchgehen
while($r1 = mysql_fetch_array($q))
{

//für den aktuellen User die punktezahl holen
$s1 = mysql_query("SELECT punkte from user_data where nickname = '". $r1['nickname'] ."'");
$q1 = mysql_fetch_array($s1);

//Dann die Punkte zahl aktualisiern
$s2="UPDATE user_date SET punkte='".$r['punkte']."' WHERE nickname='".$r['nickname']."'";
$q2=mysql_query($s2);

echo"<a href=\"community.php?nav=profil&uID=".$r1['nickname']."\"
echo"<a href=\"community.php?nav=profil&uID=".$r1['nickname']."\" > ".$r1['nickname']."</a> - ".$r1['punkte']."<br>";

}


Hab das mit den Punkten nicht genau verstanden, warum sie in beiden Tabellen sind, und was da genau gemacht wird, wie und wann das aktualisiert werden soll!?

Antwort 16 von JackyChansen vom 15.08.2019, 23:15 Options

Naja in der Tabelle user_data muss ja jedem seine punkte zugewiesen werden , und in der zeit wo der user online ist wird die punktzahl halt in die tabelle onlineliste rübergeholt , damit ich das in der online liste darstellen kann , wenn er sich ausloggt verschwindet ja der datensatz eh wieder.

Antwort 17 von Woo vom 15.08.2019, 23:19 Options

Jau klar, aber kannst dir zum auslesen ja sowieso die punkte kurz aus user_data holen

Antwort 18 von JackyChansen vom 15.08.2019, 23:24 Options

Also die variante die du geschrieben hast macht das selbe? punkte aus user_data holen und in useronline setzen?

Antwort 19 von Woo vom 15.08.2019, 23:27 Options

ne,wenn du die punkte darstellen willst, dann kannse einfach

SELECT punkte from user_data where nickname = '". $r1['nickname']

absetzen.

naja, bin dann mal pennen :)

Antwort 20 von JackyChansen vom 16.08.2019, 01:20 Options

UserOnline = Nickname , punkte , Uhrzeit , Timestamp.

user_data = Nickname , punkte , passwort.

Das von dir funzt nicht , ich weiß echt nicht was ich falsch mach.

Ähnliche Themen

Dropdown php MySQL
R0bin  03.02.2007 - 249 Hits - 2 Antworten

PHP 5 läuft nicht
Phillip  17.02.2007 - 129 Hits - 1 Antwort

Datenbank in Webseite !!
xxxD  19.07.2007 - 43 Hits - 1 Antwort

PHP und DBF Datenbank - geht das?
Claudia1975  08.11.2007 - 119 Hits - 1 Antwort

Perl mit MySQL?
TByte  09.05.2008 - 72 Hits - 36 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026