PHP Tabellen automatisch nach Gruppen ID aus MYSQL erstellen

Kyrinja

Grünschnabel
Hallo liebe Gemeinde,

Vorweg einmal bitte nachsicht mit mir ... ich bin absoluter Anfänger und habe mir das hier nur zusammen "gebastelt".

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:
<?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[0] == "1" ?
  'background-color:#2ab001' : ($status[0] == "2" ? 'background-color:#39ee01' : ($status[0] ==
  "3" ? 'background-color:#ff5252' : ($status[0] == "4" ?
  'background-color:#fb0101' : ($status[0] == "5" ? 'background-color:#ea00e0' : ($status[0] ==
  "6" ? 'background-color:#5a5a5a' : ($status[0] == "7" ?
  'background-color:#00c6d6' : ($status[0] == "8" ? 'background-color:#005eff' : ($status[0] ==
  "9" ? 'background-color:yellow' : ($status[0] == "0" ?
  'background-color:#9c0000' : 'background-color:#000000')))))))))) . ">" . $status[0] .
  "</td><td>" . date("G:H:s d.m.Y ", strtotime($date[0])) . "</td><td>" . $option .
  "</td><td>" . $GroupID[0] ."</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!
 
Hallo Kyrinja,

wie sind denn die relevanten SQL-Tabellen aufgebaut? Kannst Du uns hier eine kurze Übersicht zusammenstellen?
Legst Du neue Datensätze direkt über die SQL-Tabelle an oder hast Du dazu ein eigenes Backend?

Desweiteren ist die mysql_-Funktion welche Du benutzt veraltet - nutze stattdessen PDO oder mysqli.

LG
 
Hallo Splater,

Meine Tabellen sehen wie folgt aus:

Fahrzeuge:
  • ID
  • FahrzeugID
  • Ort
  • Fahrzeug
  • Kennzeichen
  • Funkrufname
  • AGruppeID
log:
  • ID
  • FahrzeugID
  • Status
  • Time
  • EinsatzID
z.Z lege ich noch die Datensätze von Hand an in der Fahrzeugtabelle werde aber hier natürlich ein Formular erstellen um das zu vereinfachen.

PDO und mysqli habe ich mich noch nicht mit beschäftigt. Ich war froh das so hinbekommen zu haben :D
Werde mich aber da schon mal reinlesen.

LG
 
Hallo Kyrinja,

ich habe das ganze mit ein paar Dummy-Daten mal nachgestellt.


Wie Du siehst, kann man das alles auch in wenige Zeilen packen ;)

PS: Das obere Array muss selbstverständlich gegen das Result von einem Query ausgetauscht werden.

Die Tabellen "erzeugen" sich für jede "AGruppeID" neu und enthalten alle Fahrzeuge dieser ID.

Bei Fragen einfach Fragen.

PHP:
<?php
$old_arr2=array(1=>array(
        'ID'=>'1',
        'Fahrzeug'=>"schönes",
        'AGruppeID'=>1),
    2=>array(
        'ID'=>'2',
        'Fahrzeug'=>"schönes1",
        'AGruppeID'=>1),
    3=>array(
        'ID'=>3,
        'Fahrzeug'=>"schönes2",
        'AGruppeID'=>1),
    4=>array(
        'ID'=>4,
        'Fahrzeug'=>"schönes3",
        'AGruppeID'=>2),
    5=>array(
        'ID'=>5,
        'Fahrzeug'=>"schönes4",
        'AGruppeID'=>2)
);
foreach($old_arr2 as $old_arr => $item){
    $newArr[$item["AGruppeID"]][]=$item;
}
foreach($newArr as $key => $value){
            echo '<table>';
            foreach($value as $newKey => $newValue){
                        echo '<tr>';
                        echo '<td>'.$newKey["Fahrzeug"].'</td>';
                        echo '</tr>';
            }
            echo '</table>';
}

LG
 
Kurzer Hinweis:
Bitte nicht "SELECT * FROM" verwenden, sondern die Spalten konkret abfragen: "SELECT ID,FahrzeugID FROM Fahrzeuge".
Änderst Du mal etwas am Tabellenaufbau fällt Dir das sonst auf die Füße.
 
Kurzer Hinweis:
Bitte nicht "SELECT * FROM" verwenden, sondern die Spalten konkret abfragen: "SELECT ID,FahrzeugID FROM Fahrzeuge".
Änderst Du mal etwas am Tabellenaufbau fällt Dir das sonst auf die Füße.
Und weiter:

mysql_*-Funktionen sollten nicht mehr verwendet werden -> sind mit PHP7 komplett entfernt worden.

Stattdesssen ist Mysqli oder PDO zu nutzen.
 
Zurück