Array am Anfang mit Nullen füllen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array am Anfang mit Nullen füllen

    Hi, ich baue mir wie folgt ein Array aus einer Select-Anweisung, welches dann als Zeile in einer Tabelle ausgeben wird. Die Tabelle hat 5 Spalten, die 1. ist die Bezeichnung (Ringmasse) und die anderen sind
    die Werte für 4 Maschinen:


    PHP-Code:
    $zeile9['Ringmasse'] ="</tr><tr><td align=\"left\">Ringmasse</td>\n";

    $zeile9[($row['Ringmasse'])]= "<td colspan=\"2\" align=\"right\">".$row['Ringmasse']. "</td>\n";

    foreach(
    $zeile9 as $spalte){
    echo 
    $spalte;

    Das Problem ist, wenn z.B. die Maschine 1 kein Wert besitzt (0 in der DB), dann werden die Werte der anderen Maschinen nach links versetzt und fangen bei Maschine 1 an. Nun meine Frage, wie kann ich das Array mit Nullen auffüllen, das alles korrekt angezeigt wird?

  • #2
    dein code produziert nur zwei spalten. ich kann dein problem daran nicht erkennen.

    wie sieht der produzierte html-code aus und wie sollte er deiner meinung nach aussehen?

    Kommentar


    • #3
      und die select-anweisung wäre auch mal interessant....

      so kann wohl kaum jemand dein problem nachvollziehen
      **********
      arkos
      **********

      Kommentar


      • #4
        Vielleicht ist es so verständlicher:

        PHP-Code:
        <table width="60%" align="center" border="2" bgcolor="#f8f8ff" bordercolor="FFFFF" >
        <tr >
         <td>&nbsp;</td>
        <?

        $sql = "SELECT max(ZM) as MaxWert FROM zm ";

        $result = mysql_query ($sql, $link) or die ("MySQL-Fehler: " . mysql_error());

        while ($row = mysql_fetch_array($result))
        $max_ZM = $row["MaxWert"];


        for($i = 0;$i < $max_ZM;$i++) {
            echo "<td colspan=\"2\">ZM " . ($i + 1) . "</td>";
        }

        $zeile9['Ringmasse'] ="</tr><tr><td align=\"left\">Ringmasse </td>\n";



        $sql="SELECT
              SUM(Ringmasse)AS Ringmasse,
              
              FROM zeit_ziehen
              WHERE Datum>='".$Datum_An."' AND Datum<='".$Datum_En."' GROUP BY ZM, Datum";
        $result=mysql_query($sql,$link);

        //echo mysql_error();
        while($row=mysql_fetch_array($result)){

        $zeile9[($row['Ringmasse'])]= "<td colspan=\"2\" align=\"right\">".$row['Ringmasse']. "</td>\n";

        }

        foreach($zeile9 as $spalte){
        echo $spalte;
        }?>
         </tr>
        </table>
        Es wird mir 1 Spalte "Beschriftung" und 4 Spalten mit Werten erzeugt. Mein Problem liegt darin, wenn die 2. Spalte keinen Wert besitzt,
        werden die anderen Werte nach links gerückt. Es sollte aber die 2. Spalte, den Wert NULL besitzen.

        Kommentar


        • #5
          Wenn du ein vernünftiges HTML hast, sollte das nicht der Fall sein.

          Poste mal eine richtige zeile und eine verschobene.

          Kommentar


          • #6
            Ich würde den ganzen Kram über Bord werfen - wäre mir viel zu unsauber, direkt Tabellenzellen zu erzeugen und so'n Murks.

            Werte ermitteln, Werte in Array schreiben.

            Anschließend Ausgabe-Schleife über das Array, dabei Daten als Tabellenzellen ausgeben.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Hat nichts mit dem html zu tun. Das Array muss halt z.B. folgende Werte besitzen, wenn die Spalte 2. keinen Wert aus der DB bekommt.

              Array ( [Ringmasse] => 0=> [6887] => [500] => [200] => )

              zur Zeit ist es so:

              Array ( [Ringmasse]=> [6887] => [500] => [200] => ).

              Kommentar


              • #8
                nee, dann doch lieber verwerfen. was machst du, wenn du zwei mal 0 hast.

                ein array was zwei mal den index 0 besitzt gibt es nicht und kann es nicht geben.

                Kommentar


                • #9
                  So einfach ist das nicht, muss noch aufwendige Berechnungen durchführen.

                  Kommentar


                  • #10
                    dann mach dir halt mal gedanken über den aufbau eines arrays. so wie du da gepostet hast, ist es halt nicht möglich.

                    Kommentar


                    • #11
                      kann man nicht über ne if-schleife eine Zelle einfach mit einer Null füllen lassen, wenn die Zelle keinen Wert hat.

                      Zuletzt geändert von kraut29; 16.10.2006, 14:15.

                      Kommentar


                      • #12
                        kann man nicht über ne if-schleife eine Zelle einfach mit einer Null füllen lassen, wenn die Zelle keinen Wert hat.
                        was meinst du mit zeile? ein eintrag im array? aber den gibt es laut deiner aussage doch gar nicht. (oder hast du oben einfach eine unsinnige array-struktur abgebildet, die nichts mit dem tatsächlich existierenden array zu tun hat?

                        dann if(count($array) < 5)
                        // füge 5-count() werte = 0 ans array an




                        aber vielleicht verfolgst du mal diesen gedanken:

                        du weißt, dass es vier spalten geben muss. Unter dieser vorraussetzung ist es mir doch schnurz egal, wie viele einträge ich im array habe.

                        Kommentar


                        • #13
                          Die Array-Struktur wurde mir so angezeit

                          Kommentar


                          • #14
                            dann kannst du es vergessen, weil der index im array eindeutig sein muss.

                            wenn du echo $array['hallo'] machst und dein array sieht so aus:

                            array('hallo' => 0, 'hallo'=>1, 'bla'=>7);

                            welches hallo soll PHP dann ausgeben. 0 oder 1?

                            Kommentar


                            • #15
                              Das Array müsste auch so aussehen

                              Array ( [Ringmasse] => [0]=> [6887] => [500] => [200] => )

                              Kommentar

                              Lädt...
                              X