WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- MySQL Abfrage in while()-Schleifen doppelt verwenden

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » MySQL Abfrage in while()-Schleifen doppelt verwenden - 23 Nov 2024 Antworten
im Forum für Webhosting Homepage gefunden:
MySQL Abfrage in while()-Schleifen doppelt verwenden
foRe
Pixelschubser
Threadstarter




Beiträge: 2

Hallo zusammen,

ich hab mich hier angemeldet, weil ich einfach nicht mehr weiter weiß...

Folgendes Problem (Kurzdarstellung):

Ich habe insgesamt zwei Tabellen:

In der ersten mit dem Namen "gebaeude" sind bestimmte Gebäude aufgelistet mit ihren jeweiligen Eigenschaften wie: id, art, name, kosten, verbrauch, produktion, etc.

Der Aufbau der Tabelle ist wie folgt entstanden:
Es gibt verschiedene Gebäude einer Art wie beispielsweise:
name = "Kohlekraftwerk" und Name = "Atomkraftwerk" für art = "Energie"
name = "Haus" und Name = "Hochhaus" für art = "Wohngebäude"

Für die einzelnen Arten wurden jeweils unterschiedliche id-Bereiche gewählt, sodass "Energie" bspw. von 1 - 19 geht, "Wohngebäude" von 20 - 29, usw.

Es müssen allerdings nicht alle IDs für Energie in diesem Rahmen belegt werden...

Konkret:
"name" besitzt die "ID"
"Kohlekraftwerk" = "1"
"Atomkraftwerk" = "2"
"Haus" = "20"
"Hochhaus" = "21"
etc.

Die zweite Tabelle mit dem Namen "universe" sind einzelne Landstriche mit Städten, wobei jede Stadt wiederum wieder einzelne / mehrere Gebäude enthalten kann.

Der Aufbau ist wie folgt:
id = Id der jeweiligen Stadt (auto-increament)
region = Koordinaten der Stadt
usw.
(für den folgenden Text auch)
gebaeude_id_1 = Anzahl der Gebäude der id mit der Nummer "1" (Kohlekraftwerk) der Tabelle von gebaeuden
gebaeude_id_2 = Anzahl der Gebäude der id mit der Nummer "2" (Atomkraftwerk) der Tabelle von gebaeuden
gebaeude_id_20 = Anzahl der Gebäude der id mit der Nummer "20" (Haus) der Tabelle von gebaeuden
gebaeude_id_21 = Anzahl der Gebäude der id mit der Nummer "21" (Hochhhaus) der Tabelle von gebaeuden



Mein Problem ist nun, festzustellen wieviele Gebäude in jeder Stadt vorhanden sind und die entsprechende Produktion / Verbrauch auszugeben und zu bestimmen...

Mein erster Ansatz war wie folg:



1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29:
$glob_buildings = db_query("SELECT * FROM ".$db_prefix."_gebaeude");
$glob_planis = db_query("SELECT * FROM ".$db_prefix."_universe WHERE owner_id != 0");
echo '
	
		
	';
while($building_info = mysql_fetch_array($glob_buildings))
	{
		echo '';
	}

while($plani_info = mysql_fetch_array($glob_planis))
	{
	 
		echo '';

			while($building_info_2 = mysql_fetch_array($glob_buildings))
				{
				 	$building_info_2_id = $building_info_2['gebaeude_id'];
					echo '';
				}
				echo '';
	}
echo '
	
Planet / Gebäude'.$building_info['gebaeude_name'].' ('.$building_info['gebaeude_id'].')
'.$plani_info['id'].''.$plani_info['gebaeude_id_'.$building_info_2_id].'
';


Das funktioniert allerdings nicht...

Gebe ich zu Beginn bei den ersten beiden Querys noch die Dritte Zeile
1:
$glob_buildings_2 = db_query("SELECT * FROM ".$db_prefix."_gebaeude");

ein und ändere die dritte while-Schleife in
1:
while($building_info_2 = mysql_fetch_array($glob_buildings_2))

dann funktioniert die Ausgabe lediglich für die erste Stadt...

Der Grundgedanke war eigentlich:

1. Alle vorhandenen Gebäude-IDs aus "gebaeude" zu holen (gebaeude.id).
2. Alle Städte, die noch nicht besetzt sind auszuwähen (WHERE owner_id != '0').
3. Die einzelne Anzahl der vorhandenen Gebäude eines jeden Typs (gebaeude_id_???) für jede Stadt zu bestimmen (SELECT gebaeude_id_1, gebaeude_id_2, gebaeude_id_3,...) und diese dann
4. mit den Eigenschaften (Prduktion/Verbrauch) der jeweiligen Gebäude aus (SELECT * FROM gebaeude) zu multiplizieren, aber ich komme irgendwie nicht weiter...

Keine Ahnung, ob es mit while-Schleifen, arrays() mit for- bzw. foreach oder gar mit irgendwelchen JOINS funktionieren kann...

Als zusätzliche Info:
Datensätze der Tabelle gebaeude sind ca. 50
Datenstäze der Tabelle universe sind ca. 4.000
(daher wollte ich zwischen die while-Schleifen eigentlich nicht jedesmal noch eine zusätzliche db_query() einbauen...)

Wäre kuhl, wenn einer ne Lösung oder nen Lösungsweg wüsste.

  Profil   Editieren   Zitieren
foRe
Pixelschubser
Threadstarter




Beiträge: 2

Ich glaub ich hab die Lösung gefunden...



1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49:
echo '
	
		
	';

$gebaeude_id			= 	array();
$plani_gebaeude_id		=	array();
$arbeiter 				= 	array();
$energie 				= 	array();
$rohstoffe 				= 	array();
$forschung 				=	array();
$plani_gebaeude_anzahl	=	array();

while($building_info = mysql_fetch_array($glob_buildings))
	{
	 	$gebaeude_id[] = $building_info['gebaeude_id'];
	 	$plani_gebaeude_id[] = "gebaeude_id_".$building_info['gebaeude_id'];
	 	$arbeiter[] = $building_info['arbeiter'];
	 	$energie[] = $building_info['energie'];
	 	$rohstoffe[] = $building_info['rohstoffe'];
	 	$forschung[] = $building_info['forschung'];
		echo '';
	}

$anzahl = count($gebaeude_id);

while($plani_info = mysql_fetch_array($glob_planis))
	{
	 	echo '';
				
				for($i=0;$i<$anzahl;$i++){
					$plani_gebaeude_anzahl[] = $plani_info[$plani_gebaeude_id[$i]];
				}
				
				for($i=0;$i<$anzahl;$i++){
			echo '
				';
		}
		unset($plani_gebaeude_anzahl);
		echo '';
	}
echo '
	
Planet / Gebäude
'.$building_info['gebaeude_name'].' ('.$building_info['gebaeude_id'].')
'.$plani_info['id'].''.$plani_gebaeude_anzahl[$i].'
x A '.$arbeiter[$i].' = '.$plani_gebaeude_anzahl[$i]*$arbeiter[$i].'
x E '.$energie[$i].' = '.$plani_gebaeude_anzahl[$i]*$energie[$i].'
x R '.$rohstoffe[$i].' = '.$plani_gebaeude_anzahl[$i]*$rohstoffe[$i].'
x F '.$forschung[$i].' = '.$plani_gebaeude_anzahl[$i]*$forschung[$i].'
';


Der Trick:
Alle Abfragen in arrays laden.

Danach die Anzahl der vorhandenen Gebäude aus der "gebaeude"-Tabelle zählen lassen und die einzelnen Werte der Arrays nacheinander mithilfe der Array-Positionen (die ja = der Anzahl der Gebäude sind) ausgeben...

Wichtig in diesem Zusammenhang noch das unset($plani_gebaeude_anzahl); damit nicht nur die Anzahl der Gebäude von der ersten Stadt erscheinen, sondern jedesmal mal die der Stadt vom nächsten durchlauf.

Keine Ahnung, ob das vom Quellcode her richtig ist oder nicht - auf jeden Fall scheint es zu funktionieren. Ebenfalls sind in den hier genannten Quellcodes Elemente vorhanden, die lediglich für die Darstellung dienen bzw. können diese noch überflüssige (aus testzweckenstammende) Variablen enthalten sein.

Hoffe mit meiner Lösung jemandem geholfen zu haben, der es ähnlich wenig blickt wie ich...

  Profil   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » MySQL Abfrage in while()-Schleifen doppelt verwenden

Aktuelle Beiträge zur Hilfe im Forum für Homepage - MySQL Abfrage in while()-Schleifen doppelt verwenden im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8127820    Heute : 214     Gestern : 761     Online : 168     23.11.2024    9:05      0 Besucher in den letzten 60 Sekunden        
Nach oben