max Werte aus SQL Tabelle auslesen mit php[fast gelöst]

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.
Antworten
JuliusCaesar
Mitglied
Beiträge: 175
Registriert: 02.06.2006 21:48
Wohnort: Meppen

max Werte aus SQL Tabelle auslesen mit php[fast gelöst]

Beitrag von JuliusCaesar »

hey ich schreibe grad ein online tool für ein browser spiel,
user können sich registrieren und ihr Gebäude Daten (Zahlenwerte) in ein script eintragen (dieses Formular habe ich mit html gemacht)
das eintragen der werte mithilfe eines php scriptes war soweit kein Problem

Code: Alles auswählen

<?php
include('mysql.inc.php');
$connection = mysql_connect($sql['host'],$sql['uid'],$sql['pwd']);
mysql_select_db($sql['db']);
$abf = "INSERT INTO geb (uid, name, rfem, fem, krm, spm)
VALUES
('3','test12','15','16','17','18')";
$result = mysql_query($abf);
if($result)
{
$affected = mysql_affected_rows($connection);
echo "Es wurden $affected Datensätzte verändert.";
}
?>
nun aber zum eigentlichen Problem:
Die user sollen die Daten vergleichen können, ich hatte hierbei an eine tabelle gedacht in der der "user" dem entsprechenden maximalwert gegeübersteht maximalwert steht

user | Gebäude(höchste Stufe $X['gebäube1'])


in $x['gebäude1] soll der maximal wert der Spate mit den Stufen für Gebäude 1 ausgegeben werden.

Dazu habe ich eine SQL Tabelle angelegt

uid(enthält nur Zahlenwert des users) |

name (enthält die entsprechenden usernamen)|

rfem (ist Abkürzung für das 1. Gebäude, hier werden die Stufen von Gebäude 1 für jeden user gespeichert

| fem (Abkürzung für Gebäude 2, hier werden ebenfalls die jeweiligen Ausbaustufen von Gebäude 2 für jeden user gespeichert)

| krm (Abkürzung für Gebäude 3, hier werden auch die Ausbaustufen von Gebäude 3 für jeden user gespeichert)

so nun habe ich angefangen das php script zu schreiben

Code: Alles auswählen

<?php
<?php
$rfem= "";
$fem= "";
$krm= ""; 

//nun wird die Verbindung zur SQL DB hergestellt
include('mysql.inc.php') ;
	mysql_connect($sql['host'],$sql['uid'],$sql['pwd']) ;
	    mysql_select_db($sql['db']) ;
/*so und nun wirds problematisch
ich habe mir die werte in einem assoziativen array ausgeben lassen weiß nun allerdings nicht unter welcher variable die Werte jeweils gespeichert werden*/
$result = mysql_query('SELECT * FROM user');
while($daten = mysql_fetch_assoc($result)) 

//nun habe ich eine if schleife geplant
if($neue-daten['rfem'] > $alte-daten['rfem'])
{
$alte-daten['rfem'] = $neue-daten['rfem']
}
else
{
$alte-daten['rfem'] = $alte-daten['rfem']
};

/*so nun nochmal das gleiche mit den usern, wobei ich nicht sicher bin ob ich hier mit ">" arbeiten darf */
if($neuer-user > $alter-user)
{
$neuer-user['rfem'] = $alter-user['rfem']
}
else
{
$alter-user['rfem'] = $alter-user['rfem']
};

//und jetzt kommt dann die Tabelle mit den jeweiligen Variablen
//habe diese tabelle aber noch nicht geschrieben

?>
ich hoffe jemand kann mir helfen,
falls ich an einigen Stellen unklar beschreiben habe bitte einfach nachfragen :oops:

mfg Julius
Zuletzt geändert von JuliusCaesar am 01.06.2007 16:42, insgesamt 1-mal geändert.
mfg JuliusCaesar
JuliusCaesar
Mitglied
Beiträge: 175
Registriert: 02.06.2006 21:48
Wohnort: Meppen

Beitrag von JuliusCaesar »

hey habe nun selbst ne Möglichkeit gefunden
Zu viel Code entfernt! KB:datei //gn#36
vereinfachungen bitte einfach posten :grin:
mfg JuliusCaesar
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Du hast zuviel Code gepostet, was das Thema unnötig in die Länge zieht und unübersichtlich macht.
Es wäre besser die Datei bzw. den Code als .txt Datei abzuspeichern und dann hier einen Link zu posten - siehe auch KB:datei .

Bitte passe deinen Beitrag an, lies Dir den phpBB.de-Knigge und den Hinweis zur Fragestellung und Rechtschreibung durch und beachte diese zukünftig.

Zum Thema: Du hättest dir durchaus eine Menge Arbeit und Abfragen im SQL sparen können wenn du die Datenbankstruktur ein wenig anders ausgelegt hättest.
Statt eine einzige Tabelle zu verwenden könnte man das auf mehrere Tabellen verteilen und so gleichzeitig viel Flexibilität bei Datenbankabfragen hinzugewinnen.
Beispiel:
Usertabelle:

Code: Alles auswählen

UID | username | Sonstige Userspezifische Datenzuordnungen
Gebäudetabelle:

Code: Alles auswählen

GID | Gebäudename | Sonstige Gebäudespezifische Datenzuordnung
Zuordnungstabelle:

Code: Alles auswählen

UID | GID | Anzahl | Sonstige Zuordnungsdaten
Bei einer derartigen Struktur sieht zwar die kombinierte Abfrage deutlich komplizierter aus, dafür lassen sich aber alle deine Abfragen in nur einer Abfrage abarbeiten statt deinen 13, auch die Menge des Ausgabecodes vereinfacht sich und vermutlich wird das ganze auch deutlich schneller da eine Datenbank darauf ausgelegt ist eine Abfrage möglichst effizient zu verarbeiten während bei deiner Methode zwangsläufig mehrere Abfragen entstehen.
Die Abfrage führst du dann auf die Zuordnungstabelle aus und sortierst die Daten dann nach dem Gebäudetyp und der Anzahl, die ausgabefähigen Daten verknüpfst du mittels JOIN.
Antworten

Zurück zu „Coding & Technik“