Mehrere Werte in einer Spalte

BartM

Grünschnabel
Hallo

Habe mir da ein kleines Script erstellt, welches aus einem Formular mit 2 Textfeldern und 4 Checkboxen besteht.
die Werte werden auch in der Datenbank gespeichert und auf einer extra seite angezeigt.

In der Datenbank werden die Werte der Checkboxen in einer Spalte (fahrzeuge ) gespeichert.

so stehen in der Spalte dann die Werte hintereinandere
ELW , MTW , TSF-W , TLF

Wenn ich die Daten dann wieder ausgebe auf einen anderen Seite, dann stehen dort auch diese Werte von der Spalte Fahrzeuge
intereinander.

Jedoch wollte ich die in einer Tabelle haben.


ELW | MTW
-----------------
TSF-W | TLF


Kann ich irgendwie die Werte aus einer Spalte der Datenbank einzeln in einer Tabelle anzeigen lassen ?
 
So lasse ich alle Werte aus der Datenbank anzeigen.



PHP:
 <?php
header("Refresh:10");   
require 'inc/db.php';
echo "<h1>Alamierung</h1>";

 

    
 $daten = array();
if ($erg = $db->query("SELECT * FROM alarm safeshare ORDER BY id DESC LIMIT 1 "))  {
    if ($erg->num_rows) {
        while($datensatz = $erg->fetch_object()) {
            $daten[] = $datensatz;
        }
        $erg->free();
    
    }   
}
if (!count($daten)) {
    echo "<p>Es liegen keine Daten vor :(</p>";
} else {
include ('template/tpl.php');
}
?>


Damit ich das Design einfacher ändern kann habe ich den Html code extra in eine Datei als template gemacht.
hier ist die tpl.php


PHP:
<html>
<head>
</head>
<body>
<table style="width: 516px; height: 144px;" border="1" cellpadding="1"
cellspacing="1">
<thead> <tr>
<th>Datum</th>
<th>Einsatz</th>
<th>Einsatzort</th>
</tr>
</thead> <tbody>
<?php foreach ($daten as $inhalt) {
?> <tr>
<td style=" text-align: center;"><?php echo $inhalt->datum; ?><br>
</td>
<td style=" text-align: center;"><?php echo $inhalt->einsatz; ?><br>
</td>
<td style=" text-align: center;"><?php echo $inhalt->einsatzort; ?><br>
</td>
</tr>
<?php }
?>
</tbody>
</table>
<br>
<br>
<table style="text-align: left; width: 514px; height: 100px;" border="1"
cellpadding="2" cellspacing="2">
<tbody>
<tr style="font-weight: bold;" align="center">
<td style="vertical-align: top;">Fahrzeuge</td>
</tr>
<tr>
<td style=" text-align: center;"><?php echo $inhalt->fahrzeuge; ?><br>
</td>
</tr>
</tbody>
</table>
<br>
</body>
</html>
 
Denke, ich verstehe: Die Fahrzeuge stehen als ein String in einer Spalte der Datenbank durch Komma getrennt. In dem Fall kannst Du den String mit explode() zerlegen und die einzelnen Komponenten so anzeigen, wie Du möchtest.
Was ich noch nicht verstehe, ist, warum es zwei Tabellen gibt. Es gibt doch in jeder Zeile der Datenbank einen Satz Fahrzeuge, die jeweils einem Einsatz zugeordnet sind. Dann müssten diese doch innerhalb der Schleife ausgegeben und jeweils dem Einsatz zugeordnet werden?
 
Denke, ich verstehe: Die Fahrzeuge stehen als ein String in einer Spalte der Datenbank durch Komma getrennt. In dem Fall kannst Du den String mit explode() zerlegen und die einzelnen Komponenten so anzeigen, wie Du möchtest.
Was ich noch nicht verstehe, ist, warum es zwei Tabellen gibt. Es gibt doch in jeder Zeile der Datenbank einen Satz Fahrzeuge, die jeweils einem Einsatz zugeordnet sind. Dann müssten diese doch innerhalb der Schleife ausgegeben und jeweils dem Einsatz zugeordnet werden?

Danke
Wie würde das den mit explode() aussehen?

Wieso 2 Tabellen ?

In der Datenbank ist eine Tabelle
Mit folgenden Spalten

Id
Einsatz
Einsatzort
Fahrzeuge
Datum


Das ganze soll für eine Berufsfeuerwehr Tag der Jugendfeuerwehr sein.
 
Siehe
PHP: explode - Manual


In dem Fall meinte ich nicht Tabellen in der Datenbank sondern Tabellen im HTML in deinem Template.

Hatte schon vermutet, dass es für die Feuerwehr ist :)

Achso im Template.

in der eine Tabelle sollen ja nur die Info zu dem „Einsatz „ stehen.

Die Fahrzeuge soll extra in einer Tabelle sein, da ich die eventuell noch etwas größer Anzeigen lassen will.



Wo müsste ich den das mit dem explode() einbauen ?
Es wird ja eine komplette Zeile aus der Datenbank abgefragt und nicht die einzelen spalten.

müsste ich da die Datenbank abfrage auch noch ändern ?
 
Zuletzt bearbeitet:
Ich denke, eher weniger die Datenbankabfrage ändern, sondern die Art, wie die gelieferten Daten verarbeitet werden.
Die Fahrzeuge werden ja offenbar so ermittelt:
$inhalt->fahrzeuge
Dann kannst Du daraus ein Array machen:
$fahrzeuge_array = [B]explode[/B] (',', $inhalt->fahrzeuge);
und auf jedes der Fahrzeuge zugreifen.

Was ich immer noch nicht verstehe, ist folgendes: Jede Zeile in deiner Datenbank enthält ein Feld mit den Fahrzeugen. Daher hatte ich bisher angenommen, dass zu jedem Einsatz ein bestimmter Satz von Fahrzeugen gehört. Dem widerspricht jedoch, dass Du für die Fahrzeuge eine eigene Tabelle anlegst; dies würde bedeuten, dass die Fahrzeuge von den Einsätzen unabhängig sind?
 
Ich denke, eher weniger die Datenbankabfrage ändern, sondern die Art, wie die gelieferten Daten verarbeitet werden.
Die Fahrzeuge werden ja offenbar so ermittelt:
$inhalt->fahrzeuge
Dann kannst Du daraus ein Array machen:
$fahrzeuge_array = [B]explode[/B] (',', $inhalt->fahrzeuge);
und auf jedes der Fahrzeuge zugreifen.

Was ich immer noch nicht verstehe, ist folgendes: Jede Zeile in deiner Datenbank enthält ein Feld mit den Fahrzeugen. Daher hatte ich bisher angenommen, dass zu jedem Einsatz ein bestimmter Satz von Fahrzeugen gehört. Dem widerspricht jedoch, dass Du für die Fahrzeuge eine eigene Tabelle anlegst; dies würde bedeuten, dass die Fahrzeuge von den Einsätzen unabhängig sind?


Genau zu jedem Einsatz gibt es ein bestimmter Satz von Fahrzeugen.

Mit der eigenen Tabelle meinte ich, eigentlich das Template.

so das ich dort einmal die infos zum Einsatz habe und darunter dann die Fahrzeuge.


So sollte es später mal aus sehen.
1547669035279.png
 
Wenn ich das richtig verstehe, würde das dann bedeuten, dass es zu jedem Einsatz eine Tabelle Fahrzeuge gibt, etwa so:
Code:
Datum    Einsatz  Einsatzort
06.01.19 Test1    Baum
Fahrzeuge
ELW Kater 12    MTW 1-19-1
TSF-W 1-48-1

Datum    Einsatz  Einsatzort
08.01.19 Test2    Wohnungsbrand
Fahrzeuge
ELW Kater 9    MTW 1-19-3
TSF-W 1-48-3
usw.
Gefällt mir gar nicht, aber die einzige Alternative, die ich nahe liegend finde, ist, die Fahrzeuge in der selben Zeile wie z. B. 06.01.19 Test1 Baum anzuordnen, aber dann würde die Tabelle u. U. zu breit. Es sei denn man ordnet die Fahrzeuge untereinander in nur einer Spalte an.
 
Zurück