Seite 1 von 1

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

Verfasst: 30.05.2007 17:32
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

Verfasst: 01.06.2007 16:41
von JuliusCaesar
hey habe nun selbst ne Möglichkeit gefunden
Zu viel Code entfernt! KB:datei //gn#36
vereinfachungen bitte einfach posten :grin:

Verfasst: 02.06.2007 01:44
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.