Query Ergebniss nach Ergebnissen Sortieren.

goto;

Erfahrenes Mitglied
Hallo liebe Community,

derzeit stehe ich vor einem merkwürdigen Problem das mich etwas überfordert.
Unzwar muss ich ihn einem Auftrag das Arsenal von World of Warcraft auslesen und diverse Daten in eine Datenbank schreiben, soweit ist auch alles ok.

In der Tabelle sind nun verschiedene "Spieler" die verschiedene "Berufe" haben.

Jetzt soll auf der Seite eine Ausgabe erscheinen in der die Berufe der Spieler angeordnet werden und auch nach der höherenn Skillung Sortiert werden soll.

Zurzeit löse ich dieses Problem über eine Function die wie folgt aussieht.
PHP:
function job_content($job){
	(string) $output = NULL;
		$sql_all_jobs = mysql_query("SELECT * FROM cata_arsenal WHERE job_one_name = '$job' OR job_two_name = '$job' ORDER BY job_one_skill AND job_two_skill DESC")OR die (mysql_error());
		$output .= '<td><table cellpadding="2" cellspacing="0" border="0">';
		$output .= '<tr><td>'.$job.'</td></tr>';
			while($all_jobs = mysql_fetch_array($sql_all_jobs)){
				if($all_jobs["job_one_name"] == $job){
					$now_skill = $all_jobs["job_one_skill"];
					$skill = $all_jobs["job_one_skill"] * 100 / 450;
				}else{
					$now_skill = $all_jobs["job_two_skill"];
					$skill = $all_jobs["job_two_skill"] * 100 / 450;
				}
				$output .= '<tr><td class="rep0 repBar"><div style="width:240px;" class="faction-bar"><a class="rep-data">'.$now_skill.' / 450 '.$all_jobs["charname"].'</a><div class="bar-color" style="width: '.$skill.'%;"></div></div></td></tr>';
			}
			$output .= '</table></td>';
			return $output;
		
	
}

Um die Function zu starten nutze ich ->
PHP:
job_content("Juwelenschleifen");
und so für jeden Job einen anderen Inhalt.

Ich weiß das es ziemlich verwirrend ist, deswegen meine Frage. Gibt es eine einfacheren Weg um das ganze zu Realisieren?

Mfg Splater
 
Ich habe mir nicht den ganzen Code angeguckt.

Aber wieso machst du nicht noch eine Tabelle, die den Rang der einzelnen "Berufe" speichert?
Und dann nach den Namen sortiert.
 
Hallo, danke für deine Antwort. Ich glaube aber das mir das nicht helfen wird, möglich das ich auch nicht verstanden habe wie du es meinst. Ich versuche es mal einfacher zu erklären.

Das ganze System was enstehen soll. Ist eine Art Statistik.
In dieser soll jeder "Beruf" eine eigene Spalte haben in dieser soll dann nach DESC des Skill´s sortiert werden.

Ein DAtenbank beispiel seht Ihr im Anhang.

Nach diesen Berufen die Ihr weiter hinten seht, soll im endeffekt sortiert werden.

Ich hoffe so ist es einfacher
 
Ah, ok.
Du hast ja schon in deiner Tabelle, den Skill als Zahl.

Aber ich verstehe nicht ganz, wie du sortieren willst. Du hast ja zwei Skill-Werte, willst du den ersten, zweiten oder beide?
 
Beide, jedoch getrennt. Aber das kann man ja vorest ausser Augen lassen, da der erste Skill für den ersten Beruf ist und der Zweite Skill eben für den Zweiten Beruf.

Es kommen ja nun noch mehr "Charaktere" in die Tabelle, die auch Berufe haben und Skills dazu.

Nun kann es ja vorkommen, dass zwei Charakter den Selben Beruf haben. Also:
Char1 Juwelier 300
Char2 Juwelier 100

nun soll in der Tabelle die für Juweliere da ist, diese beiden eingeordnet werden und auch nach DESC Sortiert werden, damit eine Art Übersicht herrscht.
Mfg Splater
 
Also entweder du passt deinen Tabellenaufbau an, wenn es geht, so wie ComFreek schon vorgeschlagen hat: Neue Tabelle mit den Feldern "Spieler", "Job" und "Skill". Dann kannst du einfach nach Skill sortieren.

Zweiter Vorschlag: Wenn es dir wirklich egal ist, ob der Job jetzt in job_one oder job_two steht, versuche doch eine Lösung mithilfe der IF-Funktion und sortiere nach dessen Ergebnis.
 
Hallo,
habe den Beitrag von ComFreek nicht ganz verstanden, jetzt wo du es noch einmal sagst, kann ich das auch nachvollziehen. Das scheint mir dann auch die beste Variante zu sein.

Mit "if" könnte man es wohl auch noch Sortieren bzw mit switch case, wobei es dann einige Zeilen mehr werden.

Ich werde eine Tabelle mit den beschriebenen Spalten anlegen.. und dann einfach nach Skill Ordnen.

Ich danke euch beiden für die schnelle Hilfe :)
 
Zurück