Mehrdimensionale arrays

  • Mehrdimensionale arrays

    also es geht darum, ich möchte eine liste ausgeben, jedoch werden die daten teilweise doppelt ausgegeben.
    etwa so:
    Server 161.43.32.1
    kontrollobjekt
    Server 161.43.32.1
    kontrollobjekt2
    server2 161.43.32.2
    kontrollobjekt3
    server2 161.43.32.2
    kontrollobjekt4

    es sollte jedoch so aussehen:

    Server 161.43.32.1
    kontrollobjekt
    kontrollobjekt2
    server2 161.43.32.2
    kontrollobjekt3
    kontrollobjekt4

    jemand hat mir mal gesagt das man es mit einem mehrdimensionalen array in einer schleife machen könnte, habe jedoch null ahnung von arrays....die ausgabe könne man dann in einer schleife machen

    wer kann mir da helfen?

    hier noch mein jetztiger code

    Quellcode

    1. <? session_start(); ?>
    2. <html>
    3. <head>
    4. <title>Checkliste Montag</title>
    5. <link href="funktionen/format.css" rel="stylesheet" type="text/css">
    6. </head>
    7. <body>
    8. <?php
    9. include "funktionen/zugriff.php";
    10. include "funktionen/security.php";
    11. include "funktionen/datum.php";
    12. if ($eingeloggt=="ok"){
    13. $datum = date("d.m.Y");
    14. $sql = "SELECT s.server_name, s.server_ip, s.server_id, l.server_id,
    15. l.kontrollobjekte_id, k.kontrollobjekte_id, k.kontrollobjekte_name
    16. FROM kontrollobjekte as k JOIN server as s JOIN lookup_kontroll_server as l
    17. WHERE l.server_id=s.server_id
    18. and l.kontrollobjekte_id=k.kontrollobjekte_id
    19. and k.kontrollobjekte_montag=1";
    20. $titel = "Serverkontrolle vom Montag den $datum";
    21. //SQL-Abfrage starten
    22. $result = mysql_query($sql);
    23. $num_checkliste = mysql_num_rows($result);
    24. $checkliste = mysql_fetch_array($result);
    25. echo "<span class=titel_medium>$titel</span><span class=text_gross>&nbsp;&nbsp;&nbsp;-->&nbsp;&nbsp;&nbsp; kontrolliert durch " . ucwords($uid) . "
    26. <br><br>";
    27. echo "<table border=0 cellspacing=0><tr bgcolor=#D6E3FE>";
    28. echo "<tr>
    29. <td width=50><span class=titel_klein>Server</span></a></td>
    30. <td bgcolor=#D6E3FE></td>
    31. <td align=center><span class=titel_klein>Kontrollobjekt</span></a></td>
    32. </tr>";
    33. // Schleife für die Ausgabe erstellen
    34. for($j=0; $j < $num_checkliste; $j++)
    35. {
    36. mysql_data_seek ($result, $j);
    37. $checkliste = mysql_fetch_array($result);
    38. echo "<tr>";
    39. $sql = "SELECT s.server_name, s.server_ip, s.server_id, l.server_id,
    40. l.kontrollobjekte_id, k.kontrollobjekte_id, k.kontrollobjekte_name
    41. FROM kontrollobjekte as k JOIN server as s JOIN lookup_kontroll_server as l
    42. WHERE l.server_id=s.server_id
    43. and l.kontrollobjekte_id=k.kontrollobjekte_id
    44. and k.kontrollobjekte_montag=1
    45. and s.server_name = $checkliste[server_name]";
    46. // Liste
    47. echo "<td valign=top align=left><span class=text_medium><br>$checkliste[server_name]</span></td>";
    48. echo "<td bgcolor=#D6E3FE></td>";
    49. echo "<td valign=top align=left><span class=text_medium>$checkliste[server_ip]<br><input type=checkbox>$checkliste[kontrollobjekte_name]</span></td>";
    50. }}
    51. ?>
    52. </body>
    53. </html>
    Alles anzeigen
    --&gt;Alles wird gut&lt;--
  • dazu existiert doch schon ein thread von dir:
    http://www.easy-coding.de/daten-werden-doppelt-ausgegeben-t1030.html

    aber mit einem mehrdimensionalen array geht es natürlich auch

    Quellcode

    1. $res = mysql_query("...");
    2. while($checklist = mysql_fetch_array($res)) {
    3. $mehrdimensional[$checklist['server_name']] = $checklist;
    4. }
    5. foreach($mehrdimensional as $eindimensional) {
    6. print_r($eindimensional);
    7. }
  • ok, habs jetzt probiert. leider wird es nun so ausgegeben...

    Array ( [0] => KSF_NS3 [server_name] => KSF_NS3 [1] => 161.78.218.10 [server_ip] => 161.78.218.10 [2] => 3 [server_id] => 3 [3] => 3 [4] => 23 [kontrollobjekte_id] => 23 [5] => 23 [6] => Patho KSM zu Patho KSF&TKK [kontrollobjekte_name] => Patho KSM zu Patho KSF&TKK ) Array ( [0] => KSM_NT10 [server_name] => KSM_NT10 [1] => 161.78.220.26 [server_ip] => 161.78.220.26 [2] => 4 [server_id] => 4 [3] => 4 [4] => 14 [kontrollobjekte_id] => 14 [5] => 14 [6] => Hospis Stammdaten

    den code hab ich so eingesetzt...

    Quellcode

    1. echo "<tr>
    2. <td width=50><span class=titel_klein>Server</span></a></td>
    3. <td bgcolor=#D6E3FE></td>
    4. <td align=center><span class=titel_klein>Kontrollobjekt</span></a></td>
    5. </tr>";
    6. // Schleife für die Ausgabe erstellen
    7. $result = mysql_query($sql);
    8. while($checkliste = mysql_fetch_array($result)) {
    9. $mehrdimensional[$checkliste['server_name']] = $checkliste;
    10. }
    11. foreach($mehrdimensional as $eindimensional) {
    12. print_r($eindimensional);
    13. }
    14. }
    15. ?>
    16. </body>
    17. </html>
    Alles anzeigen


    ja ich weiss, ist wahrscheinlich falsch...kann man die ausgabe auch strukturieren?
    --&gt;Alles wird gut&lt;--
  • [phpdoc]print_r[/phpdoc] ist nur zur ausgabe alle array elemente

    wenn du dir die den quelltext anschaust, siehst du die inhalte nochmal korrekt eingerückt

    musst nun also deine variablen hier einsetzen:

    Quellcode

    1. echo "<td valign=top align=left><span class=text_medium><br>$checkliste[server_name]</span></td>";
    2. echo "<td bgcolor=#D6E3FE></td>";
    3. echo "<td valign=top align=left><span class=text_medium>$checkliste[server_ip]<br><input type=checkbox>$checkliste[kontrollobjekte_name]</span></td>";


    in deinem beispiel sinds ja nur 2 server - musst halt prüfen ob die gruppierung funktioniert hat