Code Problem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Neo_
Mitglied
Beiträge: 55
Registriert: 17.02.2005 17:25

Code Problem

Beitrag von Neo_ »

Also ich steh momentan vor nem Problem und komm da einfach nicht weiter. Ich habe Tabelle mit Punkteständen. Die letzte Spalte zeigt den Rang an, der von der Gesamtpunkteanzahl abhängig ist. Biss dahin klappt ja alles, aber was muss ich eingeben, wenn der Rang von der Gesamtpunkteanzahl UND Rundenanzahl abhängig sein soll (zB ein bestimmter Rang erreicht man nur wenn man zB 1000 Punkte hat und 5 Runden gespielt hat)? Ich stell einmal den PHP Code hier rein in der hoffnung das mir da wer behilflich sein kann.

Code: Alles auswählen

<?php

$sql = "SELECT user, ergebnis_a, ergebnis_b, ergebnis_c, ergebnis_d, runden FROM userdaten ORDER BY (stadt + rohstoff + forschung + schiff + kampf) DESC";

$spieler_query = mysql_query($sql) or die("Anfrage nicht erfolgreich"); 

while ($spieler = mysql_fetch_array($spieler_query)){

$gesamt = $spieler['ergebnis_a'] + $spieler['ergebnis_b'] + $spieler['ergebnis_c'] + $spieler['ergebnis_d'];

if($gesamt<1000) $rang="Anfänger";
else if($gesamt>1000 AND $gesamt<2000) $rang="fortgeschritten";
else if($gesamt>2000 AND $gesamt<3000) $rang="mittelklasse Spieler";
else if($gesamt>3000 AND $gesamt<4500) $rang="Spieler As";
else if($gesamt>4500) $rang="Top Spieler";

?>
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Was machst Du denn da mit "AND" rum???

Das zeichen für eine logische UND-Verknüpfung ist &&

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

KB:knigge
Neo_
Mitglied
Beiträge: 55
Registriert: 17.02.2005 17:25

Beitrag von Neo_ »

Ob ich nun AND oder && eingebe, ist bei PHP völlig egal.
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

okok... Auf Anhieb sehe ich da keinen Fehler, aber probiers einfach mal so, das ist auch wesentlich übersichtlicher:

Code: Alles auswählen

if ($gesamt < 1000) $rang = "Anfänger";
if ($gesamt > 1000) $rang = "Fortgeschritten";
if ($gesamt > 2000) $rang = "Mittelklasse";
if ($gesamt > 3000) $rang = "As";
if ($gesamt > 4500) $rang = "Top Spieler";
Wenn Du da noch eine runde drin haben willst halt so:

Code: Alles auswählen

if ( $gesamt < 1000 && $runde < 5) $rang = "Anfänger";
if ($gesamt > 1000 && $runde >= 5) $rang = "Fortgeschritten";
if ($gesamt > 2000 && $runde >= 10) $rang = "Mittelklasse";
if ($gesamt > 3000 && $runde >= 15) $rang = "As";
if ($gesamt > 4500 && $runde >= 20) $rang = "Top Spieler";
Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Was die Leute immer gegen einen schnellen Switch Block haben.....unbegreiflich
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Blutgerinsel hat geschrieben:Was die Leute immer gegen einen schnellen Switch Block haben.....unbegreiflich
Ganz einfach:
a) ist es fast immer unübersichtlicher
b) kein wirklich sauberer Code (wg. den breaks)

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

D@ve hat geschrieben: Ganz einfach:
a) ist es fast immer unübersichtlicher
b) kein wirklich sauberer Code (wg. den breaks)

Gruß, Dave
Auf dieses Beispiel bezogen finde ich es persönlich unübersichtlicher...Bedingung + Anweisung eine Zeile schon mal ein Unding....

Abgesehen davon sich in unötige Bedingungen zu verstricken durch eine Reihe von Ifs und keinen elseifs ist auch nicht meine Welt....

Zumal man bei einer umgekehrten Reihenfolge von groß nach klein, nach der ersten Übereinstimmung keine weitere Prüfung benötigt wird und nicht dauernd den Wert überschrieben müsste....

Aber naja Ansichtssache......
pokepika
Mitglied
Beiträge: 167
Registriert: 01.07.2003 15:58
Wohnort: Iserlohn [NRW]
Kontaktdaten:

Beitrag von pokepika »

in diesem zusammenhang geht ein switch Block auch gar nicht..

mit switch kann man keine Vergleichsoperatoren ersetzen, nur ==.. Du kannst in case nämlich keine ausdrücke reinschreiben und somit müsstest du _alle_ fälle von 0 bis 1000 aufnehmen und aktionen zu ordnen, dann von 1001 bis 2000 etc.
naderman
phpBB.com
Beiträge: 823
Registriert: 01.08.2003 18:23
Wohnort: Berlin
Kontaktdaten:

Beitrag von naderman »

D@ve hat geschrieben:Wenn Du da noch eine runde drin haben willst halt so:

Code: Alles auswählen

if ( $gesamt < 1000 && $runde < 5) $rang = "Anfänger";
if ($gesamt > 1000 && $runde >= 5) $rang = "Fortgeschritten";
if ($gesamt > 2000 && $runde >= 10) $rang = "Mittelklasse";
if ($gesamt > 3000 && $runde >= 15) $rang = "As";
if ($gesamt > 4500 && $runde >= 20) $rang = "Top Spieler";
Gruß, Dave
Sollte aber im ersten Fall "oder" sein, da man sonst manchmal gar keinen Rang hat ;-)

Code: Alles auswählen

if ( $gesamt < 1000 || $runde < 5) $rang = "Anfänger";
if ($gesamt > 1000 && $runde >= 5) $rang = "Fortgeschritten";
if ($gesamt > 2000 && $runde >= 10) $rang = "Mittelklasse";
if ($gesamt > 3000 && $runde >= 15) $rang = "As";
if ($gesamt > 4500 && $runde >= 20) $rang = "Top Spieler";
naderman
Antworten

Zurück zu „Coding & Technik“