• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dane z bazy danych, wyciągnąć i połączyć, php explode

VPS Starter Arubacloud
+1 głos
293 wizyt
pytanie zadane 18 stycznia 2022 w PHP przez rafana Użytkownik (950 p.)

Witajcie

Mam w bazie takie dane:

id data index
1 01-01-2022 aaa;bbb;ccc
2 11-01-2022 bbb

a chciałbym je wyciągnąć do CSV do takiej postaci:

id data index
1 01-01-2022 aaa
1 01-01-2022 bbb
1 01-01-2022 ccc
2 11-01-2022 bbb

Jak to sensownie wyciągnąć?

Najpierw robię foreach i wyciągam dane z kolumny "index" i poprzez $tab[] = explode(";",$index) mam dostęp do kolumny indeksy.

Dostaje wynik:

Array
(
    [0] => Array
        (
            [0] => aaa
            [1] => bbb
            [2] => ccc
        )
    [1] => Array 
        ( 
            [0] => bbb
         ) 
)

To samo robię z resztą, teraz chce to połączyć np. przez array_push() ale coś mi nie wychodzi.

Macie jakieś sugestie, jak to ugryź, dziękuję.

1 odpowiedź

+1 głos
odpowiedź 19 stycznia 2022 przez VBService Ekspert (255,800 p.)
edycja 19 stycznia 2022 przez VBService
 
Najlepsza

Proponuję użycie explode() w trochę innym kontekście i "przepisanie" danych do nowej tablicy bez tworzenia pośrednich tablic jak $tab[]

 

przykład

<?php

  // symulacja danych z bazy danych
  $db_demo = [
    [
      'id'    => 1,
      'data'  => '01-01-2022',
      'index' => 'aaa;bbb;ccc'
    ],
    [
      'id'    => 2,
      'data'  => '12-01-2022',
      'index' => 'bbb'
    ],
    [
      'id'    => 3,
      'data'  => '21-01-2022',
      'index' => 'ddd;bbb'
    ]
  ];

  $rows_before = '';
  foreach ($db_demo as $row) {    
    $rows_before .= '<tr>'
                  . "<td>{$row['id']}</td><td>{$row['data']}</td><td>{$row['index']}</td>"
                  . '</tr>';
  }

  //var_dump($db_demo); 

  $array_for_csv = []; 
  $id = 0;
  foreach ($db_demo as $row)
    foreach (explode(";", $row['index']) as $index)
      $array_for_csv += [$id++ => ['id' => $row['id'], 'data'  => $row['data'], 'index' => $index]];

  //var_dump($array_for_csv);  

  $rows_after = '';
  foreach ($array_for_csv as $row) {
    $rows_after .= '<tr>'
                 . "<td>{$row['id']}</td><td>{$row['data']}</td><td>{$row['index']}</td>"
                 . '</tr>';
  }
?>
<table border="1" style="width:500px">
  <thead>
    <tr><th>id</th><th>data</th><th>index</th></tr>
  </thead>
  <tbody>
    <?php echo $rows_before; ?>
  </tbody>
</table>
<br />
<table border="1" style="width:500px">
  <thead>
    <tr><th>id</th><th>data</th><th>index</th></tr>
  </thead>
  <tbody>
    <?php echo $rows_after; ?>
  </tbody>
</table>

1
komentarz 19 stycznia 2022 przez rafana Użytkownik (950 p.)

Pięknie dziękuję. wink

Podobne pytania

0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 29 października 2017 w PHP przez koyoo Początkujący (340 p.)
0 głosów
1 odpowiedź 1,557 wizyt
pytanie zadane 6 maja 2018 w PHP przez Damian Prymus Początkujący (380 p.)
0 głosów
1 odpowiedź 204 wizyt

92,958 zapytań

141,917 odpowiedzi

321,148 komentarzy

62,288 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...