PHP Tabellen automatisch nach Gruppen ID aus MYSQL erstellen
Hallo liebe Gemeinde,
ich sitze z.Z an einer Fahrzeugübersicht für unsere Feuerwehr. Hier würde ich gerne Tabellen dynamisch je nach GruppenID des Fahrzeuges generieren. Also
5 Fahrzeuge haben Gruppe 1 4 Gruppe 2 etc und jeweils eine neue Tabelle dafür erzeugen. Dies funktioniert auch soweit jedoch würde ich das ganze einfacher gestalten.
Wenn ich nun eine neue Gruppe erzeugen will muss ich erst den kompletten Quellcode editiieren. Gibt es hier eine einfachere Lösung ?
Hier meine bisherige Lösung.
Wie Ihr seht kopiere ich die Tabelle mehrfach und füttere Sie oben jeweils mit den ID´s. Gibts da vll auch eine andere ohne das ich jedesmal wenn ich eine neue Gruppe anlege alles kopieren muss.
Wäre euch für Hilfe sehr dankbar!
ich sitze z.Z an einer Fahrzeugübersicht für unsere Feuerwehr. Hier würde ich gerne Tabellen dynamisch je nach GruppenID des Fahrzeuges generieren. Also
5 Fahrzeuge haben Gruppe 1 4 Gruppe 2 etc und jeweils eine neue Tabelle dafür erzeugen. Dies funktioniert auch soweit jedoch würde ich das ganze einfacher gestalten.
Wenn ich nun eine neue Gruppe erzeugen will muss ich erst den kompletten Quellcode editiieren. Gibt es hier eine einfachere Lösung ?
Hier meine bisherige Lösung.
<?php
include("include/conf.inc");
$ergebnis = mysql_query("select * from Fahrzeuge where AGruppeID = '1'");
$ergebnis2 = mysql_query("select * from Fahrzeuge where AGruppeID = '2'");
$ergebnis3 = mysql_query("select * from Fahrzeuge where AGruppeID = '3'");
$ergebnis4 = mysql_query("select * from Fahrzeuge where AGruppeID = '4'");
$ergebnis5 = mysql_query("select * from Fahrzeuge where AGruppeID = '5'");
$anzahl = mysql_num_rows($ergebnis);
$anzahl2 = mysql_num_rows($ergebnis2);
$anzahl3 = mysql_num_rows($ergebnis3);
$anzahl4 = mysql_num_rows($ergebnis4);
$anzahl5 = mysql_num_rows($ergebnis5);
$statuscode = mysql_query("SELECT * FROM Status order by status");
?>
<table>
<tr>
<td>
<table id="Fahrzeuge">
<tr>
<th>Ort</th>
<th>Rufname</th>
<th>Fahrzeug</th>
<th>FahrzeugID</th>
<th>Status</th>
<th>abgegeben</th>
<th>Senden</th>
</tr>
<?
for ($i = 0; $i < $anzahl; $i++) {
$id = mysql_result($ergebnis, $i, "ID");
$GroupID = mysql_fetch_array(mysql_query("select AGruppeID from Fahrzeuge where FahrzeugID = '$fahrzeugid'"));
$fahrzeugid = mysql_result($ergebnis, $i, "FahrzeugID");
$ort = mysql_result($ergebnis, $i, "ort");
$funkrufname = mysql_result($ergebnis, $i, "funkrufname");
$fahrzeug = mysql_result($ergebnis, $i, "fahrzeug");
$status = mysql_fetch_array(mysql_query("Select Status from log where FahrzeugID = '$fahrzeugid' ORDER BY `ID` DESC"));
$date = mysql_fetch_array(mysql_query("Select Time from log where FahrzeugID = '$fahrzeugid' ORDER BY `ID` DESC"));
$option = '<form action=insert.php method="post">
<input type="hidden" name="FahrzeugID" value=' . $fahrzeugid . '>
<select name="status">
<option value="0">0 - Notruf</option>
<option value="1">1 - Einsatzbereit auf Funk</option>
<option value="2">2 - Einsatzbereit auf Wache</option>
<option value="3">3 - Einsatzauftrag übernommen</option>
<option value="4">4 - Ankunft an der Einsatzstelle</option>
<option value="5">5 - Sprechwunsch</option>
<option value="6">6 - Außer Dienst</option>
<option value="7">7 - Patient übernommen</option>
<option value="8">8 - Ankunft am Zielort</option>
<option value="9">9 - Verstanden / Bestätigung</option>
<input type="submit" value="senden" /></form>';
print "<tr><td>" . $ort . "</td><td>" . $funkrufname . "</td><td>" . $fahrzeug .
"</td><td>" . $fahrzeugid . "</td><td style=" . ($status == "1" ?
'background-color:#2ab001' : ($status == "2" ? 'background-color:#39ee01' : ($status ==
"3" ? 'background-color:#ff5252' : ($status == "4" ?
'background-color:#fb0101' : ($status == "5" ? 'background-color:#ea00e0' : ($status ==
"6" ? 'background-color:#5a5a5a' : ($status == "7" ?
'background-color:#00c6d6' : ($status == "8" ? 'background-color:#005eff' : ($status ==
"9" ? 'background-color:yellow' : ($status == "0" ?
'background-color:#9c0000' : 'background-color:#000000')))))))))) . ">" . $status .
"</td><td>" . date("G:H:s d.m.Y ", strtotime($date)) . "</td><td>" . $option .
"</td><td>" . $GroupID ."</td></tr>\n";
}
?>
</table>
</td>
Wie Ihr seht kopiere ich die Tabelle mehrfach und füttere Sie oben jeweils mit den ID´s. Gibts da vll auch eine andere ohne das ich jedesmal wenn ich eine neue Gruppe anlege alles kopieren muss.
Wäre euch für Hilfe sehr dankbar!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 300856
Url: https://administrator.de/contentid/300856
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
8 Kommentare
Neuester Kommentar
Naja ein einfaches GROUP BY in der SQL Query löst dein Problem in Windeseile:
liefert dir immer für alle vorhandenen Gruppen die Anzahl der Fahrzeuge, und du musst nicht im Code rumpfuschen.
http://www.w3schools.com/sql/sql_groupby.asp
Gruß jodel32
SELECT COUNT(AGruppeID) as Anzahl,AGruppeID FROM Fahrzeuge GROUP BY AGruppeID;
http://www.w3schools.com/sql/sql_groupby.asp
Gruß jodel32
Nun obige SQL Query gibt die eine Tabelle aus die so aussieht:
(Also zu jeder GruppenID die jeweilige Anzahl an Fahrzeugen
Darüber iterierst du einfach mit einer Foreach oder simplen for-Schleife wie oben, fertig ist der Lack.
Das sollte eigentlich als Info reichen! Wohin du das schreiben willst bleibt dir überlassen.
(Also zu jeder GruppenID die jeweilige Anzahl an Fahrzeugen
Anzahl | AGruppeID |
---|---|
5 | 1 |
22 | 2 |
7 | 3 |
2 | 4 |
9 | 5 |
11 | 6 |
Darüber iterierst du einfach mit einer Foreach oder simplen for-Schleife wie oben, fertig ist der Lack.
Das sollte eigentlich als Info reichen! Wohin du das schreiben willst bleibt dir überlassen.
Auch wenn ich von PHP keine Ahnung habe stimme ich jodel32 voll zu.
Aus Sicht der Datenbank ist deine Idee ziemlich, nennen wir es, bizarr bis wirr. Du hast relational betrachtet eine Tabelle mit Entitätstyp Fahrzeug und irgendeine Art der Klassifizierung (in deinem Fall wohl die AGruppeID). Wenn du jetzt nur Fahrzeuge der AGruppeID = 1 sehen willst fragst du die Datenbank mit einem WHERE AGruppe = 1 und erhälst, was du suchst. Wenn du nur wissen willst wie viele Fahrzeuge die Gruppen haben verwendest du GROUP BY und nicht SELECT * auf alle Datensätze. Du fragst die DB nach dem was du brauchst und wurstest da nicht erst alle Daten durch und das auch noch in einer Schleife.
Aus Sicht der Datenbank ist deine Idee ziemlich, nennen wir es, bizarr bis wirr. Du hast relational betrachtet eine Tabelle mit Entitätstyp Fahrzeug und irgendeine Art der Klassifizierung (in deinem Fall wohl die AGruppeID). Wenn du jetzt nur Fahrzeuge der AGruppeID = 1 sehen willst fragst du die Datenbank mit einem WHERE AGruppe = 1 und erhälst, was du suchst. Wenn du nur wissen willst wie viele Fahrzeuge die Gruppen haben verwendest du GROUP BY und nicht SELECT * auf alle Datensätze. Du fragst die DB nach dem was du brauchst und wurstest da nicht erst alle Daten durch und das auch noch in einer Schleife.
Du brauchst nur meine Query nehmen und drüber mit einer Schleife itterieren, da rein packst du dann dein Ausgabekonstrukt für jeweils eine Gruppe. Also werden so viele Ausgaben erstellt wie es Gruppen gibt, wo ist also das Problem ??? Wahrscheinlich mal wieder deinen Code nur kopiert und nicht kappiert.
HalliHallo,
wenn ich dich (und dein Codebeispiel) richtig verstanden habe möchtest du für jede neue Gruppe gern eine neue Tabelle drunter haben.
Das macht der Code unten, du kannst ihn dir ja mal anschauen.
Falls du Fragen dazu hast meld dich.
LG Larmina
wenn ich dich (und dein Codebeispiel) richtig verstanden habe möchtest du für jede neue Gruppe gern eine neue Tabelle drunter haben.
Das macht der Code unten, du kannst ihn dir ja mal anschauen.
Falls du Fragen dazu hast meld dich.
<?php
//$result = mysql_query("SELECT COUNT(AGruppeID) as Anzahl,AGruppeID FROM Fahrzeuge GROUP BY AGruppeID;"); //Bitte mysqli nutzen
$result = mysqli_query($link, "SELECT AGruppeID, FahrzeugID FROM Fahrzeuge GROUP BY AGruppeID;");
?>
<table id="wrapper">
<?php
while(mysql_fetch_row($result))
{
$fahrzeugid = $result[1];
if($temp_agrpID != $result/*Hier steht die AGruppeID drin*/)
{
//Wenn neue AGruppeID auftaucht wird eine neue tabelle erstellt
?>
<tr>
<td>
<table id="fahrzeuge"> // Bitte beachten ID darf nur einmal auftauchen, also dynamisch machen oder keine ID verwenden sondern class
<tr>
<th> die ganzen THs</th>
</tr>
<?php
}
$result2 = mysql_query("SELECT Status, Time, usw FROM log WHERE FahrzeugID = '$fahrzeugid' ORDER BY `ID` DESC"); // auch hier wieder bitte mysqli nutzen, mysql ist deprecated
while(mysql_fetch_row($result2))
{
?>
<tr>
<td>Hier die Daten analog den THs </td>
</tr>
<?php
}
if($temp_agrpID != $result/*Hier steht die AGruppeID drin*/)
{
//Wenn neue AGruppeID auftaucht wird eine neue tabelle erstellt
?>
</table>
<?php
}
$temp_agrpID = $result; // Setzt die temp neu, damit überprüft werden kann ob eine neue AgruppeID aufkommt
}
?>
</td>
</tr>
</table>
LG Larmina